我使用Urban Airship实施了Apple推送通知服务,并在我的申请中成功收到通知。如果我收到通知警报视图,如果我单击警报视图中的视图按钮,它将启动应用程序。通常它发生在APNS中。但我的客户想要,如果在RSS提要和警报视图中发生任何更新,如果我们在警报视图中单击视图,它应该转到应用程序中的特定提要,不启动应用程序。所以可以这样做吗?是否有可能为我的应用程序中的特定警报视图按钮编写事件。
我的示例代码是
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
[[UIApplication sharedApplication] registerForRemoteNotificationTypes: UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert];
[window addSubview:viewcontrollers.view];
[window makeKeyAndVisible];
NSLog(@"remote notification2: %@",[launchOptions description]);
return YES;
}
在这个方法中,didFinishLaunchingWithOptions,我无法得到字典值,它总是得到Null值。是否有可能在此方法中获取字典值(Notification来)。
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
NSString *message = [userInfo descriptionWithLocale:nil indent: 1];
NSLog(@"The message string is %@",message);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Remote Notification" message: message delegate: nil cancelButtonTitle: @"ok" otherButtonTitles: nil];
[alert show];
[alert release];
}
在这个方法中,我可以得到字典值。但是,如果在应用程序中运行时发生任何更新,则此方法仅调用。
请指导我!
由于
答案 0 :(得分:4)
确实可以这样做。在application:didReceiveRemoteNotification
方法中,您将通过NSDictionary传递所有推送通知的数据。您要做的是将有效载荷中的一些ID或URL发送到Urban Airship。类似的东西:
{
"aps": {
"alert": "New RSS entry"
},
"entry_id": "XYZ123"
}
然后您可以编写代码来获取应用程序中的正确供稿条目。
答案 1 :(得分:1)
当应用程序未运行或已被系统终止且应用程序通过通知启动时:
在这种情况下,您必须获取通知字典(它本身是launchOptions的值):
我想代码会是这样的:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
NSDictionary *remoteNotification = (NSDictionary *) [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (remoteNotification != nil) {
NSString *message = [remoteNotification descriptionWithLocale:nil indent: 1];
}
}