根据推送type不同,做不同的处理(应用未开启时点击推送通知,跳入不同界面逻辑)

来源:互联网 发布:apache 压力测试 标准 编辑:程序博客网 时间:2024/05/18 09:19

首先服务器那边要在推送通知上加type处理。区分开推送类型

然后前端分两种情况:

1.应用在打开的情况下;2.应用在未打开的情况下。

先看第一种情况:

  应用在打开的情况下,当前台显示时,一收到消息便会弹出提示框,告诉你消息来了,这个时候肯定会走

application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo这个方法,当应用处于后台时,消息来了会在通知栏显示,点击消息,一样会走

application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo这个方法,所以此时我们可以在这个方法里面加一个通知,把包含有具体通知内容的userInfo广播出去。注册成为观察者的界面收到通知,根据通知里面type字段的不同做不同的处理。

第二种情况就不能靠这个方法来区分了,因为应用根本不会走application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo这个方法,这会应该在appDelegate里面设置两个全局变量,一个是Bool值

isLaunchedByNotification,用来判断应用是否由点击推送开启。另一个是推送类型

notificationType,根据它来做不同处理。

具体代码:在

application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法里加入下面代码:

//判断应用是否由通知启动

   NSDictionary* remoteNotiDict = [launchOptionsobjectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

   if (remoteNotiDict) {

       self.isLaunchedByNotification =YES;

       self.notificationType = [remoteNotiDict[@"type"]intValue];

    }

其中,UIApplicationLaunchOptionsRemoteNotificationKey是苹果预设好的,用来判断应用是否由点击推送启动。

           @“type”字典则是由服务器端定义的

通过这两个全局变量来判断不同的通知类型做不同的处理。


0 0