Skip to content


プッシュ統合

ステップ 1:APNsトークンのアップロード

Brazeを使ってiOSプッシュ通知を送信する前に、Appleの開発者向けドキュメントに記載されているように、.p8 プッシュ通知ファイルをアップロードする必要があります。

  1. Apple開発者アカウントで、Certificates, Identifiers & Profilesにアクセスします。
  2. KeysAllを選択し、ページ上部の追加ボタン(+)をクリックします。
  3. Key Descriptionで、署名キーの一意の名前を入力します。
  4. Key ServicesApple Push Notification service (APNs)チェックボックスをオンにし、Continueをクリックします。Confirmをクリックします。
  5. キーIDをメモしておきます。Downloadをクリックして、キーを生成してダウンロードします。ダウンロードしたファイルは安全な場所に保存してください。このファイルは一度しかダウンロードできません。
  6. Brazeで、設定 > アプリ設定に移動し、Apple Push Certificate.p8ファイルをアップロードします。開発用または本番用のプッシュ証明書のいずれかをアップロードできます。アプリがApp Storeで公開された後にプッシュ通知をテストするには、アプリの開発バージョン用に別のワークスペースを設定することをお勧めします。
  7. プロンプトが表示されたら、アプリのバンドルIDキーIDチームIDを入力します。また、アプリの開発環境と本番環境のどちらに通知を送信するかを指定する必要があります。これはプロビジョニングプロファイルによって定義されます。
  8. 完了したら、保存を選択します。

ステップ 2:プッシュ機能の有効化

プロジェクト設定で、CapabilitiesタブのPush Notifications機能がオンになっていることを確認します。

プロジェクト設定で、CapabilitiesタブのPush Notifications機能がオンになっていることを確認します。

開発用と本番用で別々のプッシュ証明書を使用している場合は、GeneralタブのAutomatically manage signingチェックボックスをオフにしてください。これにより、ビルド構成ごとに異なるプロビジョニングプロファイルを選択できるようになります。Xcodeの自動コード署名機能は開発用の署名のみを行うためです。

Xcodeプロジェクト設定のGeneralタブ。このタブで「Automatically manage signing」オプションがオフになっています。

ステップ 3:プッシュ通知の登録

ユーザーのデバイスがAPNsに登録するために、適切なコードサンプルをアプリのapplication:didFinishLaunchingWithOptions:デリゲートメソッドに含める必要があります。すべてのプッシュ統合コードをアプリケーションのメインスレッドで呼び出すようにしてください。

Brazeは、プッシュアクションボタンをサポートするためのデフォルトのプッシュカテゴリも提供しており、プッシュ登録コードに手動で追加する必要があります。追加の統合ステップについては、プッシュアクションボタンを参照してください。

UserNotificationフレームワークの使用(iOS 10以降)

iOS 10で導入されたUserNotificationsフレームワーク(推奨)を使用している場合は、アプリデリゲートのapplication:didFinishLaunchingWithOptions:メソッドに以下のコードを追加してください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_9_x_Max) {
  UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
  center.delegate = self;
  UNAuthorizationOptions options = UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
  if (@available(iOS 12.0, *)) {
  options = options | UNAuthorizationOptionProvisional;
  }
  [center requestAuthorizationWithOptions:options
                        completionHandler:^(BOOL granted, NSError * _Nullable error) {
                          [[Appboy sharedInstance] pushAuthorizationFromUserNotificationCenter:granted];
  }];
  [[UIApplication sharedApplication] registerForRemoteNotifications];
} else {
  UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound) categories:nil];
  [[UIApplication sharedApplication] registerForRemoteNotifications];
  [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if #available(iOS 10, *) {
  let center = UNUserNotificationCenter.current()
  center.delegate = self as? UNUserNotificationCenterDelegate
  var options: UNAuthorizationOptions = [.alert, .sound, .badge]
  if #available(iOS 12.0, *) {
    options = UNAuthorizationOptions(rawValue: options.rawValue | UNAuthorizationOptions.provisional.rawValue)
  }
  center.requestAuthorization(options: options) { (granted, error) in
    Appboy.sharedInstance()?.pushAuthorization(fromUserNotificationCenter: granted)
  }
  UIApplication.shared.registerForRemoteNotifications()
} else {
  let types : UIUserNotificationType = [.alert, .badge, .sound]
  let setting : UIUserNotificationSettings = UIUserNotificationSettings(types:types, categories:nil)
  UIApplication.shared.registerUserNotificationSettings(setting)
  UIApplication.shared.registerForRemoteNotifications()
}

UserNotificationsフレームワークを使用しない場合

UserNotificationsフレームワークを使用していない場合は、アプリデリゲートのapplication:didFinishLaunchingWithOptions:メソッドに以下のコードを追加してください。

1
2
3
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound) categories:nil];
[[UIApplication sharedApplication] registerForRemoteNotifications];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
1
2
3
4
let types : UIUserNotificationType = UIUserNotificationType.Badge | UIUserNotificationType.Sound | UIUserNotificationType.Alert
var setting : UIUserNotificationSettings = UIUserNotificationSettings(forTypes: types, categories: nil)
UIApplication.shared.registerUserNotificationSettings(setting)
UIApplication.shared.registerForRemoteNotifications()

ステップ 4:Brazeにプッシュトークンを登録する

APNs登録が完了したら、以下のメソッドを変更して、結果のdeviceTokenをBrazeに渡し、ユーザーがプッシュ通知を受信できるようにする必要があります。

application:didRegisterForRemoteNotificationsWithDeviceToken:メソッドに以下のコードを追加します。

1
[[Appboy sharedInstance] registerDeviceToken:deviceToken];

アプリのapplication(_:didRegisterForRemoteNotificationsWithDeviceToken:)メソッドに以下のコードを追加します。

1
Appboy.sharedInstance()?.registerDeviceToken(deviceToken)

ステップ 5:プッシュ処理の有効化

以下のコードは、受信したプッシュ通知をBrazeに渡すもので、プッシュ分析とリンク処理のログ記録に必要です。すべてのプッシュ統合コードをアプリケーションのメインスレッドで呼び出すようにしてください。

iOS 10以降

iOS 10以降に対応してビルドする場合は、UserNotificationsフレームワークを統合し、以下の手順を実行することをお勧めします。

アプリケーションのapplication:didReceiveRemoteNotification:fetchCompletionHandler:メソッドに以下のコードを追加します。

1
2
3
[[Appboy sharedInstance] registerApplication:application
                didReceiveRemoteNotification:userInfo
                      fetchCompletionHandler:completionHandler];

次に、アプリの(void)userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:メソッドに以下のコードを追加します。

1
2
3
[[Appboy sharedInstance] userNotificationCenter:center
                 didReceiveNotificationResponse:response
                          withCompletionHandler:completionHandler];

フォアグラウンドプッシュの処理

アプリがフォアグラウンドにある状態でプッシュ通知を表示するには、userNotificationCenter:willPresentNotification:withCompletionHandler:を実装します。

1
2
3
4
5
6
7
8
9
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
       willPresentNotification:(UNNotification *)notification
         withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {
  if (@available(iOS 14.0, *)) {
    completionHandler(UNNotificationPresentationOptionList | UNNotificationPresentationOptionBanner);
  } else {
    completionHandler(UNNotificationPresentationOptionAlert);
  }
}

フォアグラウンド通知がクリックされると、iOS 10のプッシュデリゲートuserNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:が呼び出され、Brazeがプッシュクリックイベントを記録します。

アプリのapplication(_:didReceiveRemoteNotification:fetchCompletionHandler:)メソッドに以下のコードを追加します。

1
2
3
Appboy.sharedInstance()?.register(application,
                                            didReceiveRemoteNotification: userInfo,
                                            fetchCompletionHandler: completionHandler)

次に、アプリのuserNotificationCenter(_:didReceive:withCompletionHandler:)メソッドに以下のコードを追加します。

1
2
3
Appboy.sharedInstance()?.userNotificationCenter(center,
                                               didReceive: response,
                                               withCompletionHandler: completionHandler)

フォアグラウンドプッシュの処理

アプリがフォアグラウンドにある状態でプッシュ通知を表示するには、userNotificationCenter(_:willPresent:withCompletionHandler:)を実装します。

1
2
3
4
5
6
7
8
9
func userNotificationCenter(_ center: UNUserNotificationCenter,
                              willPresent notification: UNNotification,
                              withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
  if #available(iOS 14.0, *) {
    completionHandler([.list, .banner]);
  } else {
    completionHandler([.alert]);
  }
}

フォアグラウンド通知がクリックされると、iOS 10のプッシュデリゲートuserNotificationCenter(_:didReceive:withCompletionHandler:)が呼び出され、Brazeがプッシュクリックイベントを記録します。

iOS 10より前

iOS 10では動作が更新され、プッシュがクリックされたときにapplication:didReceiveRemoteNotification:fetchCompletionHandler:が呼び出されなくなりました。このため、iOS 10以降向けのビルドに更新せずUserNotificationsフレームワークを使用しない場合は、以前の統合方式とは異なり、古いスタイルの両方のデリゲートからBrazeを呼び出す必要があります。

SDK < iOS 10向けにビルドするアプリの場合は、以下の手順に従ってください。

プッシュ通知の開封トラッキングを有効にするには、アプリのapplication:didReceiveRemoteNotification:fetchCompletionHandler:メソッドに以下のコードを追加します。

1
2
3
[[Appboy sharedInstance] registerApplication:application
                didReceiveRemoteNotification:userInfo
                      fetchCompletionHandler:completionHandler];

iOS 10でのプッシュ分析をサポートするには、アプリのapplication:didReceiveRemoteNotification:デリゲートメソッドにも以下のコードを追加する必要があります。

1
2
[[Appboy sharedInstance] registerApplication:application
                didReceiveRemoteNotification:userInfo];

プッシュ通知の開封トラッキングを有効にするには、アプリのapplication(_:didReceiveRemoteNotification:fetchCompletionHandler:)メソッドに以下のコードを追加します。

1
2
3
Appboy.sharedInstance()?.register(application,
  didReceiveRemoteNotification: userInfo,
  fetchCompletionHandler: completionHandler)

iOS 10でのプッシュ分析をサポートするには、アプリのapplication(_:didReceiveRemoteNotification:)デリゲートメソッドにも以下のコードを追加する必要があります。

1
2
Appboy.sharedInstance()?.register(application,
  didReceiveRemoteNotification: userInfo)

ステップ 6: ディープリンク

プッシュからアプリへのディープリンクは、標準のプッシュ統合ドキュメントを通じて自動的に処理されます。アプリ内の特定の場所にディープリンクを追加する方法について詳しくは、高度なユースケースを参照してください。

ステップ 7:ユニットテスト(オプション)

ここまでの統合ステップにテストカバレッジを追加するには、プッシュユニットテストを実装してください。

New Stuff!