ローカルおよびリモート通知の処理を読みたい
基本的に、アプリケーションデリゲートでは、以下を実装する必要があります。
- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
と
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;
そして、通知データのlaunchOptions/userInfoを処理します。
私が通常データを処理する方法は次のとおりです。
- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSDictionary* userInfo =
[launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (userInfo) {
[self processRemoteNotification:userInfo];
}
[window addSubview:viewController.view];
[window makeKeyAndVisible];
return YES;
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
[self processRemoteNotification:userInfo];
}
userInfoの形式は、「通知ペイロード」セクションに記載されています。
たとえば、「aps」キーを押すと別のNSDictionaryが表示され、「alert」キーを検索すると表示されたアラートメッセージが表示されます。また、JSONペイロードで送信するカスタムデータもそこに含まれます。
NSDictionary *apsInfo = [userInfo objectForKey:@"aps"];
NSString *alertMsg = @"";
NSString *badge = @"";
NSString *sound = @"";
NSString *custom = @"";
if( [apsInfo objectForKey:@"alert"] != NULL)
{
alertMsg = [apsInfo objectForKey:@"alert"];
}
if( [apsInfo objectForKey:@"badge"] != NULL)
{
badge = [apsInfo objectForKey:@"badge"];
}
if( [apsInfo objectForKey:@"sound"] != NULL)
{
sound = [apsInfo objectForKey:@"sound"];
}
if( [userInfo objectForKey:@"Custom"] != NULL)
{
custom = [userInfo objectForKey:@"Custom"];
}