我为我的iPhone应用程序制作了自己的推送通知服务器。我正在向客户端设备发送不同的推送通知。现在有一个特殊的通知,我想在appDelegate或任何地方调用特定的函数。
我该如何实现?
答案 0 :(得分:2)
您无法指定直接调用的功能
启动应用时,会调用-(BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
并传递UIApplicationLaunchOptionsRemoteNotificationKey
下的选项中的注释
当应用运行时,您有application:didReceiveRemoteNotification:
您可以传递方法的NAME来通知!这样:
...
NSString *methodName = [notificationUserInfo objectForKey:@"methodName"];
[self performSelector:NSSelectorFromString(methodName)];
...
服务器端JSON将包含methodName键: 如我们所见,我们可以包括我们所喜欢的APNS JSON PAYLOAD - more arguments
{"aps":{"alert":"APP_NAME': BLA_BLA_BLA","sound":"default"}, "methodName":"xy"}
答案 1 :(得分:1)
当用户通过通知启动应用时,它可能有不同的情况:
它没有启动,然后app以默认方式启动,你可以用这样的方式处理通知:
-(BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UILocalNotification *remoteNotif =
[launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (remoteNotif) {
//handle remote notification
}
....
}
如果app在后台或前台,称为委托方法
- application:didReceiveRemoteNotification: {
if (application.applicationState == UIApplicationStateActive){
//application was in foreground
} else if (application.applicationState == UIApplicationStateInactive){
//application was in background
}
}
此外,如果应用程序位于前台 - 系统不显示警报,请勿更改徽章图标或播放声音 - 您应该完全自己处理通知