iOS Voip通知处理
相信大家常用的都是apns通知,大部分也是集成极光的SDK进行处理,除了软电话以及即时通讯类的APP大家也很少接触Voip通知。在这里就给大家讲一下,一个小白,从了解到完成Voip的过程。
首先Voip通知会在收到通知的时候后台唤醒我们要接收通知的APP,但APNS不会,在Voip唤醒APP后我们就可以做出相应的操作。比如震动,声音,以及其他等等操作。
Voip通知需要大家引入<PushKit/PushKit.h>库,需要在BuildPhase -> Link Binary Witn Libraries 中倒入PushKit以及callKit库,如果没有即时通讯功能引入callKit库容易被拒哦。
证书在这就不给大家多说了,进入开发者后台,点击证书选项很容易就能找到Voip证书。
给大家看一下实现吧
1、初始化
2、三个代理方法
(1)APP启动时通过此代理方法,获取VoipToken以及推送方式Type
- (void)pushRegistry:(PKPushRegistry*)registrydidUpdatePushCredentials:(PKPushCredentials*)pushCredentialsforType:(PKPushType)type
(2) 收到消息后的代理方法 (收到的通知内容都在 payload 参数内,在这个方法里,大家可以做一些收到通知后的内容)
- (void)pushRegistry:(PKPushRegistry *)registry didReceiveIncomingPushWithPayload:(PKPushPayload *)payload forType:(PKPushType)type withCompletionHandler:(void (^)(void))completion
(3)过期token的类型
- (void)pushRegistry:(PKPushRegistry *)registry didInvalidatePushTokenForType:(PKPushType)type
如果童鞋们的服务端没有处理过Voip也无从下手的话,可以把下面这篇文章发给他们看哦。https://www.programmersought.com/article/81816206615/
说一下坑,就是处理VoipToken,因为它是data类型,而服务端要的是string类型,所以要进行转换,找了很多方法,最后的方法是这样的,希望大家不要像我一样再次踩坑。
NSMutableString *str = [NSMutableString string];
constchar*bytes = pushCredentials.token.bytes;
for(inti =0; i < pushCredentials.token.length; i++) {
[strappendFormat:@"%02x",bytes[i]&0x000000FF];
}
网友评论