APNS
に統合するIPhone
方法と deviceToken を取得する方法を示すサンプル プロジェクトはありますか?
3 に答える
従う必要があるいくつかの簡単な手順があります。
アプリ デリゲートの didFinishLaunchingWithOptions で、リモート通知に登録する必要があります。トークンは時々変更される可能性があるため、Apple のドキュメントでは、アプリを実行するたびに登録するように提案されていることに注意してください。これを行うには、次のように呼び出します。
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound];
リモート通知を登録した後、トークンが渡されたアプリ デリゲートのメソッドが呼び出されます。このメソッドをアプリ デリゲートに実装し、トークンをサーバーに送信する必要があります (通知が送信されます)。メソッドは次のようになります。
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{ NSLog(@"device token is: %@",deviceToken); [server sendToken:deviceToken]; }
これも実装する必要があります。
-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{}
通知を受け取ったら、通知を処理する必要があります。受信した通知を処理するシナリオはいくつかあります (アプリがバックグラウンドまたはフォアグラウンドにあるなど)。通知を受信したときにアプリがフォアグラウンドにある場合に通知を処理するメソッドは、アプリ デリゲートに実装する必要があります。これです:
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{ NSLog(@"received notification"); //handle the notification here }
userInfo 構造の詳細を学び、さまざまなシナリオをすべてカバーするには、http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/ApplePushService/ApplePushService.html をよくお読みください。これは物事の要点にすぎません:)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Register for Push Notitications, if running on iOS 8
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0){
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
[[UIApplication sharedApplication] registerForRemoteNotifications];
}else{
[application registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
}
return YES;
}
#pragma mark
#pragma mark -- Push Notification Delegate Methods
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings: (UIUserNotificationSettings *)notificationSettings{
//register to receive notifications
[application registerForRemoteNotifications];
}
-(void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken{
// Prepare the Device Token for Registration (remove spaces and < >)
NSString* devToken = [[[[deviceToken description]
stringByReplacingOccurrencesOfString:@"<"withString:@""]
stringByReplacingOccurrencesOfString:@">" withString:@""]
stringByReplacingOccurrencesOfString: @" " withString: @""];
NSLog(@"My token is: %@", devToken);
}
-(void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error{
// NSLog(@"Failed to get token, error: %@", error);
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
NSLog(@"%s..userInfo=%@",__FUNCTION__,userInfo);
/**
* Dump your code here according to your requirement after receiving push
*/
}