
AppboyKit(OBJECTIVE-C SDKとも呼ばれます)はサポートが終了しており、Swift SDKに置き換えられました。新機能、バグ修正、セキュリティ更新、テクニカルサポートは提供されません。ただし、メッセージングと分析は引き続き通常どおり機能します。詳しくは、新しいBraze Swift 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から通知された場合、それらのトークンは関連付けられていたユーザープロファイルから削除されます。
プッシュエラーの確認
メッセージングオブザーバビリティでは、キャンペーンやキャンバスからのプッシュ通知が送信されなかった理由(APNsから返されたエラーを含む)を確認できます。
一般的なエラーには、「Received Unregistered Sending to Push Token」などのユーザー固有の通知が含まれます。
さらに、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()のdelegateプロパティは、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
UNNotificationExtensionUserInteractionEnabledがそのplistにある場合は、削除してください。OBJECTIVE-CのPush Storiesの設定には、そのキーは含まれていません。