まず初めに、Xcode でアプリの push notification を ON にする必要があります。 Apple の手順に従うか、 Xcode でプロジェクトを選択し、"Capabilities" タブを開いて Push Notifications 設定のスイッチを ON にします。
Push通知を行うために、下記のデリゲートメソッドで Tapjoyのメソッドを呼ぶようにします:
// リモートノーティフィケーションが登録される際に呼ばれる
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
[Tapjoy setDeviceToken:deviceToken];
}
// アプリ起動中にプッシュ通知が来た際に呼ばれる
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo {
[Tapjoy setReceiveRemoteNotification:userInfo];
}
必ず Push Notification Serviceを登録して下さい。登録しなければ、プッシュ通知許可可否の確認ダイアログが表示されなくなります。
// Registering for remote notifications
if (NSClassFromString(@"UNUserNotificationCenter")) {
// iOS 10+ Notifications
[[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:UNAuthorizationOptionBadge | UNAuthorizationOptionAlert | UNAuthorizationOptionSound completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (granted) {
dispatch_async(dispatch_get_main_queue(), ^{
[application registerForRemoteNotifications];
});
}
}];
} else if ([application respondsToSelector:@selector(isRegisteredForRemoteNotifications)]) {
// iOS 8 - 9 Notifications
[application registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];
}
より詳細な情報に関しては、Appleの iOS Local and Remote Notification Programming Guide をご参照ください。
プッシュ通知を送信するには、Apple Push Notification Service (APNS) のプッシュ証明書が必要になります。詳細は Local Notifications and Remote Notifications Guide をご参照ください。 証明書を取得したら、Tapjoyダッシュボードにアップロードします。詳しくはプッシュ証明書の作成方法 を参照して下さい。証明書をアップロードする場合、ダッシュボードの"アプリ > アプリ設定"を開き、左のメニューから"プッシュ証明書"を選択します。
Push通知ではカスタムフィールドを利用し、ダッシュボードで設定した文字列をユーザーに見えない形でTapjoyのプッシュ通知と共に送信できます。このカスタムフィールドは任意の文字列が設定かのうで、アプリで解釈する事によりアプリ内で自由に対応を制御できます。よくある使い方としては、プッシュ通知を押したユーザーに仮想通貨を付与したり、カスタムURLスキームを利用してアプリ内の特定の場所に誘導したりします。詳細についてはPush通知のカスタムフィールドをご参照ください。
この方法で送られた情報をアプリで読み取るには、コードを実装する必要があります。カスタムフィールドは userInfo の p キーの値となります。使用する方法を考慮の上、didFinishLaunchingWithOptions
および didReceiveRemoteNotification
に次のような実装を行います:
// ユーザーがプッシュメッセージをクリックした場合に呼ばれる
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
…
NSDictionary *userInfo = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];
if (userInfo != nil) {
NSString* payload = [userInfo objectForKey:@"p"];
if (payload != nil) {
NSLog(@"Tapjoy push notification with payload: %@", payload);
}
}
...
}
// アプリ実行中にメッセージを受け取った場合
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
...
NSString *payload = [userInfo objectForKey:@"p"];
if (payload != nil) {
NSLog(@"Tapjoy push notification with payload: %@", payload);
}
...
}