消息推送
推送概念?
APNs:Apple Push Notification Service,远程通知只能APNs服务器发送,APNs服务器只认Device Token
应用内消息推送:APP在前台运行时能够接收到
tags:所有设备(或用户)标签的可变集合,一个标签代表一个用户群体
Alias:设备的别称,通常也就是用户的昵称,极光推送允许多个用户使用同一个昵称,自然推送时所有使用这个昵称的用户都能获得推送内容
Registration ID:用户注册通知的ID号,通过[JPUSHService registrationID]可以获取,注册远程通知成功返回的通知对象的字典属性里面也有
本地通知?
1、不经过苹果的APNs服务器,直接由极光推送服务器发送
2、一般把对用户只具有提醒功能的通知设定为本地通知,那种你用着用着突然弹出来一个AlertView问你是否要去评个分或是弹个广告的就是
3、通过JPUSHService调用setLocalNotification方法返回设定本地通知设置成功与否的布尔值
4、同理调用deleteLocalNotification删除本地通知
5、回调函数application:(UIApplication *)application didReceiveLocalNotification接收本地通知
6、获取当前被触发本地通知所传回来的对象notification
7、分析获取通知的字典属性userInfo
8、UIAlertView显示该通知
远程通知?
1、向APNs注册通知服务
2、注册成功之后将获取到的Device Token传给极光推送服务器
极光推送的所有通知名称?
1、kJPFNetworkDidSetupNotification
2、kJPFNetworkDidCloseNotification
3、kJPFNetworkDidRegisterNotification
4、kJPFNetworkDidLoginNotification
5、kJPFNetworkDidReceiveMessageNotification
6、kJPFServiceErrorNotification
对NSDate进行处理?
1、直接使用NSDateFormatter的工厂方法返回特定类型的String
2、通过设定dateFormatter属性约束NSDateFormatter实例化的对象调用stringFromDate获得更加自定义的Date格式@"yyyy-MM-dd hh:mm:ss"
通知显示在终端的三种形式及分别如何实现?
1、iOS Lock Screen
2、iOS Notification Center
3、iOS Rolldown
本地通知和远程通知的区别?
APService类调用setLocalNotification方法,参数包括本地推送出发时间fireDate
,推送内容alertBody,角标数字badge,弹框按钮显示的内容alertAction,本地推送标志符notificationKey,自定义字典userInfo,通知出现的声音soundName
提取远程通知内容?
1、函数didReceiveRemoteNotification回调的字典userInfo即使
2、提取字典中的标题,内容,扩展键值对
3、分别提取通知字典里相应的键值对之后,必须[JPUSHService handleRemoteNotification:userInfo]表示通知已读
极光推送自定义消息推送功能?
1、通过函数(void)networkDidReceiveMessage接收极光推送过来的自定义消息
2、极光推送特有的功能,直接通过极光推送的服务器向用户推送自定义的内容
APP应用图标右上角的数字就是badge值,生成流程?
1、APP服务器上传用户名和badge值交由极光推送同一管理
2、通过本地调用[JPUSHService setBadge:0]设置badge值
应用程序中如何设置推送?
1、Appdelegate里存在向APNS服务器注册通知服务代码,当手机第一次启动应用程序时iOS操作系统会询问用户是否允许应用给手机发送通知,如果允许,iOS操作系统将会获取到手机也就是用户的UDID。否则获取不到用户的UDID。
2、iOS操作系统将应用程序的APP ID和用户手机的UD ID一同发送给APNS服务器,向APNS服务器请求device token,如果成功会将返回回来的device token以回调方法的方式传回。
3、只要回调方法成功之后,APP应用程序的服务器将获取统一推送服务的用户的识别码device token。你会问为什么应用必须根据APNS返回回来的device token来识别同意推送服务的用户。而不是直接通过用户的UD ID来识别统一推送服务的用户,原因就是隐私,除了苹果,绝不允许其它服务器获取到用户的UD ID。
4、现在APP应用程序的服务器的数据库已经存储了所有同意推送服务的用户的识别码,现在就可以根据这些用户的识别码来实现推送功能。但是应用程序只知道同意推送服务的用户的识别码,而仅仅通过识别码是不能直接被用户的手机所识别的,也就是说,识别码这个名字手机并不认同,你叫识别码,手机根本不会答应只有当你叫它的UD ID的时候,它才会答应。
5、当设置号推送的内容后就必须将内容和device token和APP ID一同发送给APNS服务器,你用device token叫手机,手机不会答应,你叫APNS服务器,则服务器会知道device token的内涵。APNS服务器的数据库存储了所有device token所对应的UD ID,现在内容有了,手机的名字知道了,自然叫手机,手机就能够答应,就能够将内容传送到同意推送服务的用户的手机上了。当然用户手机肯定不止一个APP应用程序,因此还需要一个APP ID来告诉用户现在给你推送内容的到底是那一个APP。
为什么必须发送App ID给APNS服务器?
1、用户同意推送服务时让APNS明白用户到底是同意手机中哪一个APP推送服务
2、当推送的内容发送到APNS服务器知道用户的UD ID的时候还必须告诉用户这个内容到底是哪一个APP推送的
获取到APNS服务器返回来的device token后怎么进行推送?
1、去掉两端的尖尖号和中间的空格号
2、将字符串发送给APP应用程序的服务器预留的接口