iOS 极光推送了解

极光推送:JPush iOS推送分为两种:第一种是APNs[(Apple Push Notification Service)苹果推送通知服务]推送,第二种是JPush应用内推送;

APNs推送

APNs推送,是指JPush代理开发者的应用向苹果的APNs服务器推送,再由服务器向iOS设备推送。这种方式需要基于开发者提供的应用证书。这种推送方式可以通过在设置->通知中关闭。这种推送方法需要应用的证书和推送指定的iOS环境匹配才能收到,也就是说要证书匹配。

(苹果官方推送系统)可随时推送。如果APP处于后台或者退出状态,会以系统的APNS提醒。如果APP处于前台状态,就不展示提醒。

JPush应用内推送

JPush应用内推送,是指当APP启动时,应用内嵌的JPush SDK会开启长连接到JPush服务器,因此,服务器(极光自己的推送服务器)可以直接推送消息到APP。。这种的只有在APP处于前台活跃状态,和JPush建立连接时才能接受到推送来的消息。

默认不展示提醒。可通过JPush提供的接口networkDidReceiveMessage接口自己来获取推送内容。

APNs推送与JPush应用内推送的区别

APNs推送与JPush应用内推送的区别

别名

为每一个安装了应用程序的用户,可以指定一个别名。推送消息时,就以此别名来表示。

如果一个别名被指定给多个用户,那么服务器给这个别名推送消息时,就会同时给这几个同别名的用户都推送消息。

别名的命名和长度也是有限制的。个数只能有一个。

有对应的API来设置,删除,获取别名。

我们的应用中,就是以老师的teacherId来作为每个用户的别名的。

标签

给每个用户可以指定多个标签,可以在推送消息时,根据这些标签,批量的推送给带这些标签的用户。

标签的命名,个数和长度都有限制。

都有对应的API来添加,设置、清除、获取。

Badge

设置程序图标的右上角角标,一般就是消息或者推送通知的个数。

如何获取APNs推送的内容

当用户点击推送来打开应用时,应用可以在APPDelegate中的下面两个方法中根据不同的状态来获取推送的内容。

1、- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

根据launchOptions这个字典中是否含有UIApplicationLaunchOptionsRemoteNotificationKey这个key值来判断应用的打开方式;

如果含有这个key值,就说明是从点击推送的消息来打开应用的。如果不含有这个key的话,就说明是通过点击桌面的图标或者其他的方式来启动的。

2、iOS6及以下的系统版本

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;

3、iOS7及以上版本

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

4、iOS10及以上版本

- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler;

// NSDictionary * userInfo = notification.request.content.userInfo;

// APNs内容为userInfo

- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler;

// NSDictionary * userInfo = response.notification.request.content.userInfo;

// APNs内容为userInfo

如何获取JPush自定义消息推送内容

要获取JPush的内容得在APPDelegate中的- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary ) launchOptions方法中注册通知并实现其回调方法。

如注册通知

NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];

    [defaultCenter addObserver:self selector:@selector(networkDidReceiveMessage:) name:kJPFNetworkDidReceiveMessageNotification object:nil];

实现回调

- (void)networkDidReceiveMessage:(NSNotification *)notification {

        NSDictionary * userInfo = [notification userInfo];

        NSString *content = [userInfo valueForKey:@"content"];

        NSDictionary *extras = [userInfo valueForKey:@"extras"];

        NSString *customizeField1 = [extras valueForKey:@"customizeField1"]; //服务端传递的Extras附加字段,key是自己定义的

    }

我们项目中是在- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary ) launchOptions中首先去设置用户的别名,在设置完成的回调方法中去注册获取JPush推送的通知,并实现了推送的回调。

你可能感兴趣的:(iOS 极光推送了解)