
AppboyKit(Objective-C SDKとも呼ばれます)はもはやサポートされておらず、Swift SDK. 新しい機能、バグ修正、セキュリティー更新s、またはテクニカルサポートを受けません。ただし、メッセージングと分析は通常どおり機能し続けます。詳しくは、新しいBrazeの概要SDK]を参照してください。
トラブルシューティング
Braze/APNsワークフローについて
Apple Push Notification service(APNs)は、iOSおよびOS Xアプリケーションへのプッシュ通知送信を行うAppleのインフラです。ここでは、ユーザーのデバイスでプッシュ通知がどのように有効になり、Brazeがどのようにプッシュ通知を送信できるかについて、簡略化した構造を説明します。
- プッシュ証明書とプロビジョニングプロファイルを設定します
- デバイスがAPNsに登録し、Brazeにプッシュトークンを提供します
- Brazeプッシュキャンペーンを開始します
- Brazeが無効なトークンを削除します
ステップ1:プッシュ証明書とプロビジョニングプロファイルの設定
アプリを開発する際に、プッシュ通知を有効にするためのSSL証明書を作成します。この証明書はアプリのビルドに使用されるプロビジョニングプロファイルに含まれ、Brazeダッシュボードにもアップロードする必要があります。この証明書により、Brazeはお客様に代わってプッシュ通知を送信する権限があることをAPNsに伝えることができます。
プロビジョニングプロファイルと証明書には、開発用と配布用の2種類があります。混乱を避けるため、配布用のプロファイルと証明書のみを使用することをお勧めします。開発用と配布用で異なるプロファイルと証明書を使用する場合は、ダッシュボードにアップロードされた証明書が現在使用しているプロビジョニングプロファイルと一致していることを確認してください。

プッシュ証明書の環境(開発用と本番用)を変更しないでください。プッシュ証明書を誤った環境に変更すると、ユーザーのプッシュトークンが誤って削除され、プッシュ通知で連絡できなくなる可能性があります。
ステップ2:デバイスがAPNsに登録し、Brazeにプッシュトークンを提供する
ユーザーがアプリを開くと、プッシュ通知を受け入れるよう求められます。このプロンプトを受け入れると、APNsはその特定のデバイスのプッシュトークンを生成します。iOS SDKは、デフォルトの自動フラッシュポリシーを使用するアプリについて、プッシュトークンを即座に非同期で送信します。ユーザーに関連付けられたプッシュトークンが取得されると、そのユーザーはダッシュボードのユーザープロファイルのエンゲージメントタブに「プッシュ登録済み」と表示され、Brazeキャンペーンからプッシュ通知を受信する資格が付与されます。

Xcode 14以降では、iOSシミュレーターでリモートプッシュ通知をテストできます。
ステップ3:Brazeプッシュキャンペーンの開始
プッシュキャンペーンが開始されると、Brazeはメッセージを配信するためにAPNsにリクエストを送信します。Brazeは、ダッシュボードにアップロードされたSSLプッシュ証明書を使用して、提供されたプッシュトークンにプッシュ通知を送信する権限があることを認証および検証します。デバイスがオンラインの場合、キャンペーンが送信された直後に通知を受信するはずです。Brazeは、通知のデフォルトのAPNs有効期限を30日に設定していることにご注意ください。
ステップ4:無効なトークンの削除
メッセージの送信を試みたプッシュトークンのいずれかが無効であるとAPNsから通知された場合、それらのトークンは関連付けられていたユーザープロファイルから削除されます。
プッシュエラーログの活用
Brazeは、メッセージアクティビティログでプッシュ通知エラーのログを提供しています。このエラーログには、キャンペーンが期待どおりに動作しない原因を特定するのに非常に役立つさまざまな警告が含まれています。エラーメッセージを選択すると、特定のインシデントのトラブルシューティングに役立つ関連ドキュメントにリダイレクトされます。

ここで表示される一般的なエラーには、「Received Unregistered Sending to プッシュトークン」などのユーザー固有の通知があります。
さらに、Brazeはユーザープロファイルのエンゲージメントタブでプッシュの変更ログも提供しています。この変更ログは、トークンの無効化、プッシュ登録エラー、トークンが新しいユーザーに移動された場合など、プッシュ登録の動作に関するインサイトを提供します。

プッシュ通知の登録に関する問題
アプリケーションのプッシュ通知登録ロジックに検証を追加するには、プッシュユニットテストを実装してください。
プッシュ通知の登録プロンプトが表示されない
アプリケーションがプッシュ通知の登録を促すプロンプトを表示しない場合、プッシュ通知の登録統合に問題がある可能性があります。ドキュメントに従い、プッシュ通知の登録が正しく統合されていることを確認してください。コード内にブレークポイントを設定して、プッシュ通知の登録コードが実行されていることを確認することもできます。
ダッシュボードに「プッシュ通知登録済み」のユーザーが表示されない
- アプリがプッシュ通知を許可するよう求めるプロンプトを表示していることを確認してください。通常、このプロンプトはアプリの初回起動時に表示されますが、別の場所で表示されるようにプログラムすることもできます。表示されるべき場所で表示されない場合は、アプリのプッシュ通知機能の基本的な設定に問題がある可能性があります。
- プッシュ通知の統合の手順が正常に完了していることを確認してください。
- アプリのビルドに使用されたプロビジョニングプロファイルにプッシュ通知の権限が含まれていることを確認してください。Apple開発者アカウントから利用可能なすべてのプロビジョニングプロファイルを取得していることを確認してください。以下の手順で確認できます:
- Xcodeで、Preferences > Accounts に移動します(またはキーボードショートカット Command+, を使用します)。
- 開発者アカウントに使用するApple IDを選択し、View Details をクリックします。
- 次のページで Refresh をクリックし、利用可能なすべてのプロビジョニングプロファイルを取得していることを確認します。
- アプリでプッシュ通知機能が適切に有効化されていることを確認してください。
- プッシュ通知のプロビジョニングプロファイルが、テスト中の環境と一致していることを確認してください。ユニバーサル証明書はBrazeダッシュボードで開発用またはプロダクション用のAPNs環境のいずれかに送信するよう設定できます。プロダクション用アプリに開発用証明書を使用したり、開発用アプリにプロダクション用証明書を使用したりすると、正しく動作しません。
- コード内にブレークポイントを設定して、
registerPushTokenメソッドが呼び出されていることを確認してください。 - 実機を使用していること(シミュレーターではプッシュ通知は動作しません)、および良好なネットワーク接続があることを確認してください。
デバイスがプッシュ通知を受信しない
プッシュ通知の送信後にユーザーが「プッシュ登録済み」でなくなる
これは、ユーザーのプッシュトークンが無効であることを示している可能性があります。これはいくつかの理由で発生する可能性があります。
ダッシュボードとアプリの証明書の不一致
ダッシュボードにアップロードしたプッシュ証明書が、アプリのビルドに使用したプロビジョニングプロファイルのものと異なる場合、APNsはトークンを拒否します。正しい証明書をアップロードしたことを確認し、別のテスト通知を試行する前にアプリで別のセッションを完了してください。
アンインストール
ユーザーがアプリケーションをアンインストールした場合、プッシュトークンは無効となり、次の送信時に削除されます。
プロビジョニングプロファイルの再生成
最後の手段として、最初からやり直して完全に新しいプロビジョニングプロファイルを作成すると、複数の環境、プロファイル、アプリを同時に扱うことで発生する設定エラーを解消できます。iOSアプリのプッシュ通知を設定するには多くの「可動部分」があるため、最初からやり直すのが最善の場合があります。これは、トラブルシューティングを続ける必要がある場合に問題を切り分けるのにも役立ちます。
プッシュ通知の送信後もユーザーが「プッシュ登録済み」のままになっている
アプリがフォアグラウンドにある
UserNotificationsフレームワーク経由のプッシュを統合していないiOSバージョンでは、プッシュメッセージの受信時にアプリがフォアグラウンドにある場合、通知は表示されません。テストメッセージを送信する前に、テストデバイスでアプリをバックグラウンドにしてください。
テスト通知のスケジュールが正しくない
テストメッセージに設定したスケジュールを確認してください。ローカルタイムゾーン配信またはインテリジェントタイミングに設定されている場合、まだメッセージを受信していないだけかもしれません(または受信時にアプリがフォアグラウンドにあった可能性があります)。
テスト対象のアプリにユーザーが「プッシュ登録済み」でない
テストメッセージの送信先ユーザーのユーザープロファイルを確認してください。エンゲージメントタブに「プッシュ可能なアプリ」のリストがあるはずです。テストメッセージを送信しようとしているアプリがこのリストに含まれていることを確認してください。ユーザーはワークスペース内のいずれかのアプリのプッシュトークンを持っていれば「プッシュ登録済み」と表示されるため、偽陽性の可能性があります。
以下は、プッシュ登録に問題がある、またはプッシュ送信後にユーザーのトークンがAPNsによって無効としてBrazeに返されたことを示しています。

プッシュメッセージが送信されない
送信されないプッシュ通知のトラブルシューティングについては、プッシュ通知のトラブルシューティングを参照してください。
メッセージアクティビティログのエラー
プッシュトークンへの未登録送信を受信
- メソッド
[[Appboy sharedInstance] registerPushToken:]からBrazeに送信されるプッシュトークンが有効であることを確認してください。メッセージアクティビティログでプッシュトークンを確認できます。6e407a9be8d07f0cdeb9e724733a89445f57a89ec890d63867c482a483506fa6のような、英数字が混在する長い文字列のように表示されるはずです。プッシュトークンの表示が異なる場合は、Brazeにプッシュトークンを送信するコードを確認してください。 - プッシュプロビジョニングプロファイルがテスト中の環境と一致していることを確認してください。ユニバーサル証明書は、Brazeダッシュボードで開発用または本番用のAPNs環境のいずれかに送信するように設定できます。本番アプリに開発用証明書を使用したり、開発アプリに本番用証明書を使用したりすると動作しません。
- Brazeにアップロードしたプッシュトークンが、そのプッシュトークンの送信元アプリのビルドに使用したプロビジョニングプロファイルと一致していることを確認してください。
トピックに対応しないデバイストークン
このエラーは、アプリのプッシュ証明書とバンドルIDが一致していないことを示しています。Brazeにアップロードしたプッシュ証明書が、プッシュトークンの送信元アプリのビルドに使用したプロビジョニングプロファイルと一致しているか確認してください。
プッシュトークンへの送信でBadDeviceToken
BadDeviceTokenはAPNsのエラーコードであり、Brazeから発生したものではありません。このレスポンスが返される理由は複数考えられ、以下が含まれます:
- アプリが、ダッシュボードにアップロードされた認証情報に対して無効なプッシュトークンを受信しました。
- このワークスペースでプッシュが無効になっていました。
- ユーザーがプッシュをオプトアウトしました。
- アプリがアンインストールされました。
- Appleがプッシュトークンを更新し、古いトークンが無効になりました。
- アプリが本番環境用にビルドされていますが、Brazeにアップロードされたプッシュの認証情報が開発環境用に設定されています(またはその逆)。
プッシュ配信後の問題
アプリケーションのプッシュ処理の検証を追加するには、プッシュユニットテストを実装してください。
プッシュクリックが記録されない
- iOS 10でのみ発生している場合は、iOS 10のプッシュ統合ステップに従っていることを確認してください。
- Brazeは、フォアグラウンドでサイレントに受信されたプッシュ通知を処理しません(例:
UserNotificationsフレームワーク導入前のデフォルトのフォアグラウンドプッシュ動作)。これは、リンクが開かれず、プッシュクリックも記録されないことを意味します。アプリケーションがまだUserNotificationsフレームワークを統合していない場合、Brazeはアプリケーションの状態がUIApplicationStateActiveのときにプッシュ通知を処理しません。アプリがプッシュ処理メソッドの呼び出しを遅延させていないことを確認してください。遅延させると、iOS SDKがプッシュ通知をサイレントフォアグラウンドプッシュイベントとして扱い、処理しない場合があります。
プッシュクリックからのWebリンクが開かない
iOS 9以降では、Webビューで開くリンクはATSに準拠している必要があります。WebリンクがHTTPSを使用していることを確認してください。詳しくは、ATSコンプライアンスの記事を参照してください。
プッシュクリックからのディープリンクが開かない
ディープリンクを処理するコードの大部分は、プッシュの開封も処理します。まず、プッシュの開封が記録されていることを確認してください。記録されていない場合は、その問題を修正してください(修正によりリンク処理の問題も解決することが多いです)。
開封が記録されている場合は、ディープリンク全般の問題か、ディープリンクのプッシュクリック処理の問題かを確認します。これを確認するには、アプリ内メッセージのクリックからディープリンクが機能するかテストしてください。
直接開封がほとんどまたはまったくない
少なくとも1人のユーザーがiOSプッシュ通知を開封しているにもかかわらず、Brazeに直接開封がほとんどまたはまったく記録されていない場合、SDK統合に問題がある可能性があります。直接開封はテスト送信やサイレントプッシュ通知では記録されないことに注意してください。
- メッセージがサイレントプッシュ通知として送信されていないことを確認してください。サイレントと見なされないためには、タイトルまたは本文にテキストが必要です。
- プッシュ統合ガイドの以下のステップを再確認してください:
- プッシュの登録:アプリの起動ごとに(できれば
application:didFinishLaunchingWithOptions:内で)、ステップ3のコードを実行する必要があります。UNUserNotificationCenter.current()のデリゲートプロパティは、UNUserNotificationCenterDelegateを実装し、(void)userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:メソッドを含むオブジェクトに割り当てる必要があります。 - プッシュ処理の有効化:
(void)userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:メソッドが実装されていることを確認してください。
- プッシュの登録:アプリの起動ごとに(できれば
Push Stories の画像クリックが動作しない
このセクションはObjective-C SDKのPush Stories統合に適用されます。SWIFT SDKのBrazePushStoryモジュールを使用している場合は、UNNotificationExtensionUserInteractionEnabledをYESに設定してください。Push Storiesを参照してください。
Push Storiesの画像をタップしても期待するアクションが開かない場合は、Notification Content ExtensionのInfo.plistを開き、Push Storiesの設定のキーと一致しているか確認してください:
UNNotificationExtensionCategory=ab_cat_push_story_v2UNNotificationExtensionDefaultContentHidden=YESUNNotificationExtensionInitialContentSizeRatio=0.65
そのplistにUNNotificationExtensionUserInteractionEnabledがある場合は、削除してください。Objective-CのPush Stories設定にはそのキーは含まれていません。