- アプリ側の手順
前提として必要なもの
- Push通知を有効にしたApp IDが指定されたプロビジョニングファイル
- APNsへのPUSH通知送信に必要なもの
- App IDの作成
- Apple Push Notification service (APNS)用証明書の作成
- プロビジョニングプロファイルの作成
- プロビジョニングプロファイルをプロジェクトにセット
- CapabilitiesでRemote notificationsを有効化
- Push通知をプロジェクトで有効化する
- アプリケーションの実装
- プロバイダー用証明書ファイルの準備
- Push通知の実行
- AppDelegateのdidFinishLaunchingWithOptionsに下記を実装する
- Push通知の許可をユーザーに要求するポップアップの表示
- リモートPush通知を受診するためのdeviseTokenの取得
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
// Push通知の許可画面を表示させる
UIUserNotificationType types = UIUserNotificationTypeBadge |
UIUserNotificationTypeSound |
UIUserNotificationTypeAlert;
UIUserNotificationSettings *mySettings =
[UIUserNotificationSettings settingsForTypes:types categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];
//リモートPush通知を受信するためのdeviceTokenを要求
[[UIApplication sharedApplication] registerForRemoteNotifications];
return YES;
}
// DeviceToken受信成功
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSString *token = deviceToken.description;
// <aaaa bbbb cccc dddd>みたいな形式でくるので、"<"、">"、"(空白)"を除去しておく
token = [token stringByReplacingOccurrencesOfString:@"<" withString:@""];
token = [token stringByReplacingOccurrencesOfString:@">" withString:@""];
token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];
NSLog(@"deviceToken: %@", token);
// ここでPushプロバイダーへのdeviceTokenを送信する
}
// DeviceToken受信失敗
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
NSLog(@"deviceToken error: %@", [error description]);
}
// 通常のPush通知の受信
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
NSLog(@"pushInfo: %@", [userInfo description]);
}
// BackgroundFetchによるバックグラウンドの受信
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
NSLog(@"pushInfo in Background: %@", [userInfo description]);
completionHandler(UIBackgroundFetchResultNoData);
}