
AppboyKit(Objective-C SDKとも呼ばれます)はもはやサポートされておらず、Swift SDK. 新しい機能、バグ修正、セキュリティー更新s、またはテクニカルサポートを受けません。ただし、メッセージングと分析は通常どおり機能し続けます。詳しくは、新しいBrazeの概要SDK]を参照してください。
プッシュ統合
ステップ 1:APNsトークンのアップロード
Brazeを使ってiOSプッシュ通知を送信する前に、Appleの開発者向けドキュメントに記載されているように、.p8 プッシュ通知ファイルをアップロードする必要があります。
- Apple開発者アカウントで、Certificates, Identifiers & Profilesにアクセスします。
- KeysでAllを選択し、ページ上部の追加ボタン(+)をクリックします。
- Key Descriptionで、署名キーの一意の名前を入力します。
- Key ServicesでApple Push Notification service (APNs)チェックボックスをオンにし、Continueをクリックします。Confirmをクリックします。
- キーIDをメモしておきます。Downloadをクリックして、キーを生成してダウンロードします。ダウンロードしたファイルは安全な場所に保存してください。このファイルは一度しかダウンロードできません。
- Brazeで、設定 > アプリ設定に移動し、Apple Push Certificateで
.p8ファイルをアップロードします。開発用または本番用のプッシュ証明書のいずれかをアップロードできます。アプリがApp Storeで公開された後にプッシュ通知をテストするには、アプリの開発バージョン用に別のワークスペースを設定することをお勧めします。 - プロンプトが表示されたら、アプリのバンドルID、キーID、チームIDを入力します。また、アプリの開発環境と本番環境のどちらに通知を送信するかを指定する必要があります。これはプロビジョニングプロファイルによって定義されます。
- 完了したら、保存を選択します。
ステップ 2:プッシュ機能の有効化
プロジェクト設定で、CapabilitiesタブのPush Notifications機能がオンになっていることを確認します。

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

ステップ 3:プッシュ通知の登録
ユーザーのデバイスがAPNsに登録するために、適切なコードサンプルをアプリのapplication:didFinishLaunchingWithOptions:デリゲートメソッドに含める必要があります。すべてのプッシュ統合コードをアプリケーションのメインスレッドで呼び出すようにしてください。
Brazeは、プッシュアクションボタンをサポートするためのデフォルトのプッシュカテゴリも提供しており、プッシュ登録コードに手動で追加する必要があります。追加の統合ステップについては、プッシュアクションボタンを参照してください。

プッシュのベストプラクティスに記載されているカスタムプッシュプロンプトを実装している場合は、ユーザーがアプリにプッシュ権限を付与した後、アプリが実行されるたびに以下のコードを呼び出すようにしてください。デバイストークンは任意に変更される可能性があるため、アプリはAPNsに再登録する必要があります。
UserNotificationフレームワークの使用(iOS 10以降)
iOS 10で導入されたUserNotificationsフレームワーク(推奨)を使用している場合は、アプリデリゲートのapplication:didFinishLaunchingWithOptions:メソッドに以下のコードを追加してください。

以下のコードサンプルには、仮プッシュ認証の統合が含まれています(5行目と6行目)。アプリで仮認証を使用する予定がない場合は、requestAuthorizationオプションにUNAuthorizationOptionProvisionalを追加するコード行を削除できます。
プッシュの仮認証について詳しくは、iOS通知オプションを参照してください。
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()
}

デリゲートオブジェクトは、アプリの起動が完了する前にcenter.delegate = selfを使用して同期的に割り当てる必要があります。できればapplication:didFinishLaunchingWithOptions:内で行ってください。これを行わないと、アプリが受信プッシュ通知を受け取れない場合があります。詳しくは、AppleのUNUserNotificationCenterDelegateドキュメントを参照してください。
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)

application:didRegisterForRemoteNotificationsWithDeviceToken:デリゲートメソッドは、[[UIApplication sharedApplication] registerForRemoteNotifications]が呼び出されるたびに呼び出されます。他のプッシュサービスからBrazeに移行する場合で、ユーザーのデバイスがすでにAPNsに登録されている場合、このメソッドは次回呼び出された際に既存の登録からトークンを収集するため、ユーザーがプッシュ通知に再度オプトインする必要はありません。
ステップ 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:ユニットテスト(オプション)
ここまでの統合ステップにテストカバレッジを追加するには、プッシュユニットテストを実装してください。