目次
携帯電話番号認証コンポーネント(クイック認証コンポーネント、リアルタイム認証コンポーネントを含む)では、イベントをコールバックすることはできません 結論から先に言いますと、正しい使い方は以下の通りです。
<!-- 手机号快速验证组件 -->
<button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber"></button>
<!-- 手机号实时验证组件 -->
<button open-type="getRealtimePhoneNumber" @getrealtimephonenumber="getPhoneNumber"></button>
1. テスト環境
ウィンドウズ10
WeChat 開発者ツール (1.06.2307260win32-x64) 基本ライブラリ (3.0.1[1028])
iPhone XR(iOS15.2.1)
WeChat (8.0.40)
HBuilder X(3.8.12.20230817)
2. 問題となる現象
最近、WeChat は携帯電話番号取得コンポーネントを正式に更新しました. 携帯電話番号取得コンポーネントは 8 月 26 日から有料になりました. 詳細については公式ドキュメントを参照してください. 携帯電話番号リアルタイム認証コンポーネントを使用しています. 公式の例は:
<button open-type="getRealtimePhoneNumber" bindgetrealtimephonenumber="getrealtimephonenumber"></button>
uniappが開発した小型プログラムを利用し、これまで使用していた携帯電話番号取得コンポーネントを携帯電話番号高速取得コンポーネントと呼び、名称と発信方法が変更になりましたが、以前の方法もそのままご利用いただけます。
<button open-type="getPhoneNumber" @getphonenumber="onGetPhoneNumber">授权获取手机号</button>
公式の例に従って前のメソッドを変更します。
<button open-type="getRealtimePhoneNumber" @bindgetrealtimephonenumber="onGetPhoneNumber">授权获取手机号</button>
その結果、開発者ツールでは反応がなく、ネットで検索したところ、 WeChatオープンコミュニティの記事で次のように紹介されていました。
@記号はありません。このメソッドにはバージョン要件があり、wx.canIUse("button.open-type.getRealtimePhoneNumber")を使用してサポートされているかどうかを判断し、導入に従ってコードを修正し、onLoadで判断を追加することもできます。
onLoad() {
console.log(wx.canIUse("button.open-type.getRealtimePhoneNumber"));
}
コンソールの出力結果は true ですが、テストはまだ応答しませんが、コンソールは他の情報を出力します。
どうしてそのような方法がないのでしょうか?開発者ツールに問題があるのでしょうか?その後、ツールのバージョンを上げましたが、やはり動作せず、実機で確認したところ、SMS認証コードを入力しても応答がありませんでした。ユニアプリの問題でしょうか?uniapp からの公式の質問は 1 つだけあり、まだ誰も答えていません。このとき、私は少しイライラしていました。落ち着くために水を飲みました。この機能は数ヶ月前からリリースされています。uniapp に問題があれば、それは大惨事になるはずです。冷静に考えて、からのコードを確認してください最初からやり直して、通常に使用できるコード(つまりメソッドの前)に戻し、携帯電話番号クイック認証コンポーネントの公式ドキュメントを比較したところ、公式の例に @ 記号がないことに突然気づきました:
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>
コードには@マークが付いていますが、正常に使用できます。慎重に比較した結果、バインドが@に置き換えられ、最初のようにコードを修正しました。テストはパスし、実機では問題ありませんでした。 , 公式環境に公開しても問題ありません。
3. まとめ
この問題が発生する場合、最初に携帯電話番号取得コンポーネントを使用したときにコードがインターネットから直接コピーされたため、そのようなプロセスを経ていませんでしたが、遅かれ早かれ置き換えられるようです。!!