出典: npm @react-native-firebase/app
Android と iOS の両方で通知をスムーズに起動して実行することは、各プラットフォームに必要な固有の構成を考慮すると、場合によっては困難な場合があります。
このガイドでは、React Native で Firebase Cloud Messaging (FCM) を設定し、いくつかの一般的なエラーに対処するための重要な手順を説明します。
Firebase の構成:
GoogleService-Info.plist (iOS) と google-services.json (Android) をダウンロードします。
コンピュータからダウンロードした GoogleService-Info.plist ファイルを選択し、[必要に応じて項目をコピーする] チェックボックスが有効になっていることを確認します
google-services.json ファイルをダウンロードし、プロジェクト内の次の場所に配置します。
/android/app/google-services.json.
Xcode で iOS のプッシュ通知を有効にする:
プッシュ通知機能をプロジェクトに追加する必要があります。これは、[署名と機能] タブの [機能] オプションから行うことができます:
「機能」ボタンをクリックします。
「プッシュ通知」を検索します。
選択すると、その機能は他の有効な機能の下に表示されます。検索時にオプションが表示されない場合、機能はすでに有効になっている可能性があります
バックグラウンド フェッチとリモート通知サブモードの両方とともに、バックグラウンド モード機能を有効にする必要があります。これは、[署名と機能] タブの [機能] オプションを使用して追加できます。
次に、「バックグラウンド取得」サブモードと「リモート通知」サブモードの両方が有効になっていることを確認します
React Native FCM のセットアップ ガイド:
公式の Firebase Cloud Messaging セットアップ ガイドに従ってください。このガイドには、Android および iOS で通知の送受信を開始するための重要な手順が含まれています。これらの手順を完了すると、新しいキャンペーンを作成して、Firebase コンソールの [メッセージング] から直接通知をテストできます。
注:
M1 Mac ユーザーの場合、React Native Firebase をセットアップするときに CocoaPods に関する問題がよく発生します。ここでは簡単な解決策をいくつか紹介します:
arch -x86_64 ポッドのインストール
arch -x86_64 ポッド リポジトリの更新
sudo Arch -x86_64 gem install ffi
arch -x86_64 ポッドのインストール
これらの手順に従うと、React Native プロジェクトのポッドをインストールおよび管理するときに、M1 Mac のアーキテクチャ固有の問題を解決できます。
注:
Android 13 デバイスの場合、プッシュ通知の実行時権限を明示的にリクエストする必要があります。次の権限を AndroidManifest.xml に追加します:
次に、コード内で実行時に通知権限をリクエストします。次のように Android 権限を直接処理できます:
import { Platform, PermissionsAndroid } from 'react-native'; async function requestNotificationPermission() { // Version >= 33(`~project/build.gradle`) if (Platform.OS === 'android' ) { const granted = await PermissionsAndroid.request( PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS, ); if (granted === PermissionsAndroid.RESULTS.GRANTED) { console.log('Notification permission granted'); } else { console.log('Notification permission denied'); } } }
アプリの初期化中、または通知を購読する前に requestNotificationPermission() を呼び出して、ユーザーがアクセス許可を付与していることを確認します。
互換性の確保:
セットアップに入る前に、@react-native-firebase/app と @react-native-firebase/messaging パッケージの両方がプロジェクトにインストールされており、互換性があることを確認してください。
予期しない統合の問題を回避するには、一貫したバージョンが重要です。バージョンの互換性を確認するには、公式の React Native Firebase リリース ドキュメントを参照してください。
互換性の問題を避けるために、両方のパッケージの最新バージョンがインストールされていることを確認してください。
iOS デバイスでテストしている場合は、次の点に注意してください:
トラブルシューティングのヒント:
セットアップが完了した後も、まだ問題が発生する可能性があります。よくある問題と解決策をいくつか示します:
シミュレーターが通知を受信していません:
iOS シミュレーターに通知が表示されない場合は、次のことを試してください:
自分で数時間トラブルシューティングを行った結果、クイック再起動が最も簡単な解決策であることがわかりました。
確認手順と一般的な問題:
Firebase ガイドのセットアップ手順を再確認して、すべてが正しく構成されていることを確認してください。
CocoaPods のインストール中にエラーが発生しました:
次のようなインストール エラーが発生した場合:
<br> error: RPC failed; curl stream was reset<br> error: 6428 bytes of body are still expected<br>
ネットワークの問題が原因である可能性があります。 Wi-Fi からモバイル ホットスポット (またはその逆) に切り替えて、インストールを再試行してください。ネットワークを変更すると、接続関連のポッドのインストールの問題が解決できる場合があります。これでも問題が解決しない場合は、CocoaPods キャッシュのクリアや Xcode の更新など、追加のトラブルシューティングのヒントを試す必要がある場合があります。
iOS での HTTP URL の許可 (アプリ トランスポート セキュリティ):
API リクエストに (HTTPS ではなく) HTTP URL を使用している場合は、App Transport Security (ATS) の制限によって接続がブロックされるのを避けるために、iOS Info.plist ファイルを更新する必要があります。 Info.plist ファイルに次の行を追加します:
import { Platform, PermissionsAndroid } from 'react-native'; async function requestNotificationPermission() { // Version >= 33(`~project/build.gradle`) if (Platform.OS === 'android' ) { const granted = await PermissionsAndroid.request( PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS, ); if (granted === PermissionsAndroid.RESULTS.GRANTED) { console.log('Notification permission granted'); } else { console.log('Notification permission denied'); } } }
これにより、アプリは干渉せずに HTTP リクエストを行うことができます。実稼働アプリではこの設定に注意し、可能な限り開発環境に限定するようにしてください。
アプリ トランスポート セキュリティ (ATS) の互換性を確認します:
iOS の場合、使用している HTTPS エンドポイントが ATS に準拠していることを確認してください。ステージング サーバーまたは自己署名証明書を使用してテストしている場合は、Firebase が APN (Apple Push Notification Service) と通信するために安全な接続を必要とするため、それらが ATS と互換性があることを確認してください。
結論:
React Native で Firebase Cloud Messaging を設定するのは簡単ですが、小さな設定ミスやデバイス設定の癖が問題を引き起こす可能性があります。このガイドとトラブルシューティングのヒントに従うと、通知をスムーズに実行できるようになります。その他の問題については、公式ドキュメント、フォーラム、または GitHub ディスカッションをチェックして、他の開発者が共有している解決策を見つけることができます。
コーディングを楽しんでください!!!!
以上がReact Native Firebase の一般的な問題のトラブルシューティング - クラウド メッセージングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。