Skip to content


プッシュ統合

ステップ1:プッシュ通知を構成する

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

  1. Apple 開発者アカウントで、[証明書、識別子 & プロファイル] を開きます。
  2. [キー] で [すべて] を選択し、右上の追加ボタン (+) をクリックします。
  3. [キーの説明]で、署名キーの一意の名前を入力します。
  4. [キーサービス] で [Apple プッシュ通知サービス (APNs)] チェックボックスをオンにし、[続行] をクリックします。[確認] をクリックします。
  5. キー ID をメモしておきます。[ダウンロード] をクリックして、キーを生成してダウンロードします。ダウンロードしたファイルは、何度もダウンロードできませんので、安全な場所に保存してください。
  6. Braze で、[設定] > [アプリ設定] に移動し、[Apple プッシュ通知証明書] で .p8 ファイルをアップロードします。開発用または実稼働用のプッシュ証明書のいずれかをアップロードできます。アプリが App Store で公開された後にプッシュ通知をテストするには、アプリの開発バージョン用に別のワークスペースを設定することをお勧めします。
  7. プロンプトが表示されたら、アプリのバンドル IDキー IDチーム IDを入力し、[保存] をクリックします。

ステップ2:プッシュ機能を有効にする

プロジェクト設定で、[機能] タブの [プッシュ通知] 機能がオンになっていることを確認します。

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

[一般] タブが表示されているXcode プロジェクトの設定。このタブでは、[署名を自動的に管理する] オプションはオフになっています。

ステップ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 を呼び出す必要があり、以前の統合とは一線を画しています。

iOS 10より前の SDK に対してビルドするアプリの場合は、以下の手順を使用します。

プッシュ通知でオープントラッキングを有効にするには、アプリの 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!