WeChat h5 側 wx-open-launch-app ジャンプアプリ (Flutter 側は extinfo を受信)

  1. 公式ドキュメント、パブリック アカウント appId、WeChat オープン プラットフォーム appId を通じて構成する必要があるものをすべて構成し、wx.ready を実行すると正しい結果が返されることを確認します
    https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/ Wechat_Open_Tag.html#22

  2. WeChat オープン プラットフォームで、js セキュリティ ドメイン名の構成を追加します。これは公式アカウント プラットフォームの構成と一致している必要があります。そうでない場合は、launch:fail_check failed とレポートされます。

  3. h5 側にラベル wx-open-launch-app を追加し、ジャンプの成功と失敗のハンドラーを追加します

extinfo はパラメータを渡すために使用されます:sign?start_lat=&start_lng&

vue
  <wx-open-launch-app id="launch-btn" appid="xxx"  extinfo="sign?start_lat=&start_lng&"       
      @error="handleError" @launch="handleLaunch">
        <script type="text/wxtag-template">
          <style>.btn {
    
     padding: 12px }</style>
          <button class="btn">App内查看</button>
        </script>
      </wx-open-launch-app>
      
	const handleError = (e) => {
    
    
      console.log('handleError', e.detail)
      Toast(`打开失败: ${
      
      e.detail}, 下载app...`)
    }
    const handleLaunch = (e) => {
    
    
      console.log('handleLaunch', e.detail)
    }
  1. ここまでのページを開いて、wx-open-launch-app をクリックします。launch:fail が表示されれば、半分完了したことになります。
「起動:失敗」 現在のシーンはジャンプをサポートしていないか、Android にアプリケーションがインストールされていません。または、iOS のポップアップ ウィンドウでユーザーが確認をクリックしてもアプリケーションがインストールされていません
「起動:失敗」 現在開いている h5 ページのドメイン名が wx.ready のドメイン名と異なる場合もエラーが報告されます (例: リンクが http で始まり、開くと自動的に https に切り替わります)。 , wx.ready によって検証されるドメイン名は https で始まる必要があります。このとき、エラーも報告されます。解決策: 同じドメイン名で開きます。それでもプロンプトが表示される場合は、WeChat h5 でページを更新してください。
  1. Flux側にfluwxを導入し、appIdを登録する
    fluwx = Fluwx();//微信
    fluwx.registerApi(appId: "xxx");
  1. extInfo を処理します。起動時に 1 回だけ取得します。
final String? extMsg = await fluwx.getExtMsg();//extMsg = sign?start_lat=&start_lng&
还原为标准的uri去处理
Uri initialUri = Uri.parse(extMsg);
  1. 起動後に extInfo を取得し続ける必要がある場合...このイベントを取得するには登録する必要があります。具体的には、WeChat からのメッセージを複数回受信できるかどうかについては、試していません。

Fluwx では、WeChat からのメッセージは IWXAPIEventHandler を通じて MethodChannel に入れられます。

kt
    override fun onReq(req: BaseReq?) {
    
    
        activityPluginBinding?.activity?.let {
    
     activity ->
            req?.let {
    
    
                if (FluwxConfigurations.interruptWeChatRequestByFluwx) {
    
    
                    when (req) {
    
    
                        is ShowMessageFromWX.Req -> handleShowMessageFromWX(req)
                        is LaunchFromWX.Req -> handleLaunchFromWX(req)
                        else -> {
    
    }
                    }
                } else {
    
    
                    FluwxRequestHandler.customOnReqDelegate?.invoke(req, activity)
                }
            }
        }
    }

以下はデフォルトの単一フェッチです

dart
  /// Get ext Message
  @override
  Future<String?> getExtMsg() {
    
    
    return methodChannel.invokeMethod('getExtMsg');
  }

extInfoを受信する必要がある場合 上記の微小情報を受信するためのfluwxにはまだいくつかの問題があります
最終的な処理方法

  1. 新しいアクティビティを追加し、IWXAPIEventHandler インターフェイスを実装しました。
  2. onReqメソッドでextInfoを取得する

アクティビティで、flutterPlugin を取得します

kt
        val flutterEngine = FlutterEngine(this)
        plugin = flutterEngine.plugins.get(xxPlugin::class.java) as xxPlugin
        

おすすめ

転載: blog.csdn.net/zoeou/article/details/130892116