-
公式ドキュメント、パブリック アカウント appId、WeChat オープン プラットフォーム appId を通じて構成する必要があるものをすべて構成し、wx.ready を実行すると正しい結果が返されることを確認します
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/ Wechat_Open_Tag.html#22 -
WeChat オープン プラットフォームで、js セキュリティ ドメイン名の構成を追加します。これは公式アカウント プラットフォームの構成と一致している必要があります。そうでない場合は、launch:fail_check failed とレポートされます。
-
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)
}
- ここまでのページを開いて、wx-open-launch-app をクリックします。launch:fail が表示されれば、半分完了したことになります。
「起動:失敗」 | 現在のシーンはジャンプをサポートしていないか、Android にアプリケーションがインストールされていません。または、iOS のポップアップ ウィンドウでユーザーが確認をクリックしてもアプリケーションがインストールされていません |
「起動:失敗」 | 現在開いている h5 ページのドメイン名が wx.ready のドメイン名と異なる場合もエラーが報告されます (例: リンクが http で始まり、開くと自動的に https に切り替わります)。 , wx.ready によって検証されるドメイン名は https で始まる必要があります。このとき、エラーも報告されます。解決策: 同じドメイン名で開きます。それでもプロンプトが表示される場合は、WeChat h5 でページを更新してください。 |
- Flux側にfluwxを導入し、appIdを登録する
fluwx = Fluwx();//微信
fluwx.registerApi(appId: "xxx");
- extInfo を処理します。起動時に 1 回だけ取得します。
final String? extMsg = await fluwx.getExtMsg();//extMsg = sign?start_lat=&start_lng&
还原为标准的uri去处理
Uri initialUri = Uri.parse(extMsg);
- 起動後に 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にはまだいくつかの問題があります
最終的な処理方法
- 新しいアクティビティを追加し、IWXAPIEventHandler インターフェイスを実装しました。
- onReqメソッドでextInfoを取得する
アクティビティで、flutterPlugin を取得します
kt
val flutterEngine = FlutterEngine(this)
plugin = flutterEngine.plugins.get(xxPlugin::class.java) as xxPlugin