iOS个推(GTSDK)2.4.1更新2.5.3版本的更新及学习总结
个推原理
- 首先从服务器发送推送消息到个推服务器,个推内部再判断用户是否在线,如果在线则将本次推送内容调用应用内实现的代理方法,如果不在线,则会把本次推送通过apns服务器推动到苹果服务器,再由苹果服务下发通知。
新旧版本更新区别
通知消息
- 旧版处理逻辑
当使用2.4.1的时候后端发送通知消息不需要做任何处理。
因为只有当程序进入后台只会才会有消息推送弹窗,程序进入前台的时候收到通知消息是不会有消息接送弹窗
- 新版新增一个注册通知方法和一个代理方法
注册通知方法
+ (void)registerRemoteNotification:(UNAuthorizationOptions)types;
当开发者需要在应用前台的时候对接收到推动做处理的话需要先调用本次方法注册通知
接收推送代理方法
- (void)GeTuiSdkNotificationCenter:(UNUserNotificationCenter *)center
willPresentNotification:(UNNotification *)notification
completionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler;
若服务器下发通知消息,则应用在线且调用了注册方法注册了通知则走本次方法.个推添加本次方法优点在于,可以给开发者自己处理在程序前台的时候是否设置弹窗、声音和红点等操作。比如在直播过程中,收到消息若不想有弹窗显示,则只需在调用completionHandler的时候不加入UNNotificationPresentationOptionAlert即可。
透传消息(前台)
- 旧版接收透传代理方法
- (void)GeTuiSdkDidReceivePayloadData:(NSData *)payloadData
andTaskId:(NSString *)taskId
andMsgId:(NSString *)msgId
andOffLine:(BOOL)offLine fromGtAppId:(NSString *)appId;
- 新版接收透传代理方法
- (void)GeTuiSdkDidReceiveSlience:(NSDictionary *)userInfo
fromGetui:(BOOL)fromGetui
offLine:(BOOL)offLine
appId:(nullable NSString *)appId
taskId:(nullable NSString *)taskId
msgId:(nullable NSString *)msgId
fetchCompletionHandler:(nullable void (^)(UIBackgroundFetchResult))completionHandler;
- 新版旧版在功能上是相同的,均只是下发透明传送消息,而不同的点在于,新版将payloadData作为字典的其中一个字段再把字典返回出来。而当应用进入后台的时候服务器发送透传消息则会通过apns下发给用户,所以进入后台的时候收到透传消息是能够有弹窗消息。
iOS接收消息自定义铃声设置
- 将音频文件添加到项目的根目录,
- Build Phases->Copy Bundle Resources中加入刚刚的音频文件
- 推送的时候在apninfo中的setsound中设置文件名全称
- 设置完就能在推送的时候播放自定义铃声