十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
可以看到【新消息通知】,打开【新消息通知】
我们提供的服务有:做网站、成都网站制作、微信公众号开发、网站优化、网站认证、井研ssl等。为上1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的井研网站制作公司
看到第一个【接收新消息通知】,如果后面是【已关闭】需要到【设置】-【通知】下开启消息提醒
如果是【已开启】,也需要到【设置】-【通知】下查看声音提醒是否打开
打开【设置】-【通知】
在【通知】里找到【微信】
将微信的【允许通知】打开,如果希望有声音提醒,需要在这里将【声音】打开,否则只将微信设置里的声音打开,微信还是没有声音的
在这里还可以设置微信是否在锁定屏幕上显示,图标右上角是否有未读消息数字,消息是横幅还是弹窗等
再回到微信的【新消息通知】,就可以看到【接收新消息通知】后面变成【已开启】,现在在微信就可以设置消息的提醒方式了
要是是没有声音,查看手机的静音键是否打开(音量键上方的按键),或者是否开启了勿扰模式(开启后手机屏幕右上角有一个月亮,关闭方法:向上滑打开控制中心,点击月亮那个图标)
首先,注册就不说了,主要说说在前后台以及app杀死状态下点击推送消息会调用的方法:
(1) - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
(2) - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler
(3) - (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler
(4) - (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
在iOS10当app处于后台或者杀死状态下的话会调用方法3
在iOS10当app处于前台状态 下会调用方法4
在iOS10以下app处于杀死状态下或者后台的的话会调用方法1和2
在iOS10以下app处于前台的话会调用方法3
在这里记录下集成环信和极光是遇到的问题(两者都是Cocopods集成的),iOS10以上极光
//(JPush对系统的方法进行了封装)
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler;
//JPush封装后的:- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler
这导致环信调用不到系统的方法,无法收到推送。
离线推送收不到,按照下面步骤一步一步进行排查:
0、如果你的app之前可以收到离线推送,突然收不到了,那么先移步苹果开发者中心查看推送证书是否过期。如果过期了,需要重新制作证书,然后到环信管理后台(Console)将旧的删掉再上传新的。过期的一般会被封禁,需要联系环信进行解封操作。
1、首先已经按照环信的文档集成了离线推送: APNs离线推送
2、如果是iOS13及以上的系统,那么需要将IM SDK更新到3.6.4或以上版本。
如果更新后还不行那么退出登录、重启app、再登录试下。
初始化sdk成功之后打印版本号:
NSString *ver = [EMClient sharedClient].version;
3、测试APNs推送的时候,接收方的APP需要是杀死状态,需要用户长连接断开才会发APNs推送;
所以直接上划杀死APP测试。
4、要确保导出p12时使用的Mac和创建CertificateSigningRequest.certSigningRequest文件的Mac是同一台;导出证书的时候要直接点击导出,不要点击秘钥的内容导出;确认 APP ID 是否带有推送功能;
5、环信管理后台(Console)上传证书时填写的Bundle ID须与工程中的Bundle ID、推送证书的 APP ID 相同;选择的证书类型须与推送证书的环境一致;导出.p12文件需要设置密码,并在上传管理后台时传入;
6、工程中初始化SDK那里填的证书名与环信管理后台上传的证书名称必须是相同的;
7、测试环境测试,需要使用development环境的推送证书,Xcode直接真机运行;
正式环境测试,需要使用production环境的推送证书,而且要打包,打包时选择Ad Hoc,导出IPA安装到手机上。
8、APP杀死后可调用“获取单个用户”的rest接口,确认证书名称是否有绑定(正常情况下,登录成功后会绑定上推送证书,绑定后会显示推送证书名称);还需要确认绑定的证书名称和管理后台上传的证书名称是否一致。
接口文档: 获取单个用户
如果没绑定上,那么退出登录、重启app、重新登录再试下。
如果证书名称不一致,改正过来后重新登录试下。
9、如果以上都确认无误,可以联系环信排查。需提供以下信息(请勿遗漏,以免反复询问耽误时间):
appkey、devicetoken、bundle id、证书的.p12文件、证书名称、证书密码、收不到推送的环信id、测试的环境(development or production)、消息id、消息的内容和发送时间
消息id要在消息发送成功后获取,如图: