IOS 推送-客户端处理推送消息

时间:2023-03-08 17:48:04
IOS 推送-客户端处理推送消息

IOS 推送-客户端处理推送消息

1.推送调用顺序

APN push的消息到达后,UIApplicationDelegate有两个方法和处理消息有关:

  1)application:didReceiveRemoteNotification:

  2)application:didFinishLaunchingWithOptions:

  详解:

1)如果是程序正在运行或者说程序正在后台,那么这个时候处理推送消息的工作都是在:

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{}

或者:

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{}

中完成。

2)但是如果用户点击推送通知的时候程序还没有被启动,这个时候以上两个函数都是接收不到用户的推送通知的,这个时候需要在

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{}

函数里面进行处理。而推送消息的相关信息就存储在launchOptions这个字典里。具体参照如下代码:

 NSDictionary* pushInfo = [launchOptions objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];
if (pushInfo)
{
NSDictionary *apsInfo = [pushInfo objectForKey:@"aps"];
if(apsInfo)
{
//your code here
}
}
UIApplicationLaunchOptionsRemoteNotificationKey是远程推送,UIApplicationLaunchOptionsLocalNotificationKey为本地推送。
3)如果用户收到了通知但是没有点按通知,而是点击屏幕上的App图标进入的app。什么都不会被调用

2.待定