集成极光完毕后,每次融云聊天,如果从通知栏点击推送消息 ,进入app的时候都会弹出一个提示框。先上图
莫名其妙就多了一个弹出框。
最开始不知道是融云sdk的弹框还是极光的弹框。索性把极光干掉,发现融云聊天可以正常了。然后再次一步步把极光集成,发现又出问题了。可以确定应该是极光和融云冲突了。怎么办呢?
直接注释掉极光的注册。感觉应该没有问题了。然后 尼玛居然还是一样的问题。无语了。赶紧把融云的注册也一并注释掉,感觉然并卵。。。。。彻底凌乱了。关键是一切的断点 都无效,也不知道 到底哪儿有问题。
我在想,既然极光的注册都被干掉了,一切的代理方法这些肯定无效了赛,我就没有挨着去注册极光的代理方法。但是我tmd的低估极光了。居然
- (void)application:(UIApplication *)application
didReceiveLocalNotification:(UILocalNotification *)notification {
[JPUSHService showLocalNotificationAtFront:notification identifierKey:nil];
}
这个方法还会被调用,我也是无语了。就是这个方法才会弹出对话框。
当然 极光的ios10前台推送方法
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {
NSDictionary * userInfo = notification.request.content.userInfo;
UNNotificationRequest *request = notification.request; // 收到推送的请求
UNNotificationContent *content = request.content; // 收到推送的消息内容
NSNumber *badge = content.badge; // 推送消息的角标
NSString *body = content.body; // 推送消息体
UNNotificationSound *sound = content.sound; // 推送消息的声音
NSString *subtitle = content.subtitle; // 推送消息的副标题
NSString *title = content.title; // 推送消息的标题
if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
[JPUSHService handleRemoteNotification:userInfo];
NSLog(@"iOS10 前台收到远程通知:%@", [self logDic:userInfo]);
// [rootViewController addNotificationCount];
}
else {
// 判断为本地通知
NSLog(@"iOS10 前台收到本地通知:{\nbody:%@,\ntitle:%@,\nsubtitle:%@,\nbadge:%@,\nsound:%@,\nuserInfo:%@\n}",body,title,subtitle,badge,sound,userInfo);
}
completionHandler(UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionSound|UNNotificationPresentationOptionAlert); // 需要执行这个方法,选择是否提醒用户,有Badge、Sound、Alert三种类型可以设置
}
如果不需要弹框提示也可以把
completionHandler(UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionSound|UNNotificationPresentationOptionAlert); // 需要执行这个方法,选择是否提醒用户,有Badge、Sound、Alert三种类型可以设置
方法中的弹框取消。
总结:就是说弹框肯定是 监听了某个代理,代理内部的方法。把相应的代理方法注释掉就ok了。关键是极光注释掉 注册居然还会调用。佩服。