最近接了个集Azure推送的需求记录一下,如何在Apple Developer创建推送证书什么的就不说了,大家可以自行查找
1.HUBNAME对应的是资源名称
42D9E96D-BB2E-4410-BD2A-D3F6F9798F04.png2. HUBLISTENACCESS 对应的 是资源中生成的私钥
0834B585-B537-451D-8160-2A9B17B3BDC0.png3证书配置
APNS配置证书需要注意在钥匙串中请求的证书一张只能对应一个开发或者生产证书,同样一个资源也只能做开发或者生产测试,不可以在一个资源当中使用了开发证书接着继续使用生产证书,会导致在发送生产环境中的推送时错误的发送到开发环境中去。
导致原因:Azure推送开发和生产的数据库是通用的所以在发送推送时如果已经注册的设备会优先在sanbox中查找,所以会导致推送到错误的环境。
4.对指定设备推送
这个坑我不知道别人会不会碰到,纪录一下,方便自己查看也给碰到同样问题的朋友一个解决方法
官方示例代码在Notifications.m中注册设备代码
[hub registerNativeWithDeviceToken:self.deviceToken tags:categories completion: completion];
NSString* templateBodyAPNS = @"{\"aps\":{\"alert\":\"$(messageParam)\"}}";
[hub registerTemplateWithDeviceToken:self.deviceToken name:@"simpleAPNSTemplate"
jsonBodyTemplate:templateBodyAPNS expiryTemplate:@"0" tags:categories completion:completion];
我在使用这段方法进行设备注册时始终无法成功,然后好奇之下我点进了Azure官方sdk中发现
44DB5F36-8F62-4851-8769-B0CDFE625D47.png
Async? sync? 对啊,没毛病,可是为什么我特么的用Async始终无法注册设备啊,然后我就使用sync的方法试了一次,成功了,当时我的心情就是卧槽?为什么waht a you Fuck这个玩我呢
到目前Async异步注册设备还是无法成功,但是同步的没有问题,
而使用同步注册后的设备有一个缺点就是如果用户当前正在使用APP并且后台在发送成功第一条推送后如果用户未确认后续的推送时无法显示的
就代码来说Azure还是挺简单的,但是这是在不碰到坑的情况下,所以祝iOS的小伙伴好运集成Azure不要碰到坑。
额外说一句,Azure的客服还可以,如果小伙伴碰到实在无法解决的问题可以在资源中的最下方新建请求,然后Azure的客服联系你帮助你解决问题,也可以远程帮你查看问题代码。
最后到这里我的APP需要的功能就结束了。
网友评论