博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios推送(友盟推送,百度推送,极光推送)
阅读量:4881 次
发布时间:2019-06-11

本文共 2313 字,大约阅读时间需要 7 分钟。

我先来说一下我对原理的理解:

移动设备一联网或者更换网络,都会把该网络的公网和路由的地址和端口,以及设备的信息请求到apns,这样苹果服务器apns就可以根据设备id找到ip地址。

那么,在以上的基础上,一旦我们自己的服务器向apns发送消息,该消息携带指向目标设备和目标app等信息,apns接收到新消息准备推送,他就可以跟据该消息指向的设备找到ip地址,给该地址推送消息。

手机接收到消息,会根据消息携带的信息判断是属于哪个app的,所以在点击推送消息的时候会启动相应的app

 

 

友盟推送:

开发测试时推送(必须在真机上),这里以下的操作,最好是在已经完成真机测试了,再进行以下操作:

1,在苹果开发者中心,添加app ids,然后添加APNS Development Cer,下载安装,并导出.p12;创建developmentProfiles,运行。

2,用.p12在 http://message.umeng.com/appList 中添加应用,复制appkey(后面会用到)

3,下载sdk  http://dev.umeng.com/message/ios/sdk-download,导入sdk,在appDelegate.m中添加:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{    NSString *token = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];    token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];    NSLog(@"%@",token);    [UMessage registerDeviceToken:deviceToken];}- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{    [UMessage didReceiveRemoteNotification:userInfo];}

 

4,回到第2步,http://message.umeng.com/540aaa38fd98c5727c021ac9/device ,添加设备,把在控制台打印的deviceToken复制过去。然后差不多就可以了

 

以上有很多步骤省略了,大体意思应该能明白。

 

 

百度推送:

首先注意,百度推送是个坑,我建议使用友盟推送,但是为了统一,我才使用百度推送。

为什么是坑呢,因为百度有两种推送,有一种不是我们用的,但是却混淆在一起。

请在:http://developer.baidu.com/console#app/project 创建工程;并拿到key,

而且开发文档也有2套,注意是这一套:http://developer.baidu.com/wiki/index.php?title=docs/cplat/push/guideios

另外:文档中要注意的是:

添加SDK到APP工程。

1. 将libBPush.a和BPush.h添加到Xcode工程

2. 添加JSONKit.m和JSONKit.h到Xcode工程,注意百度推送提供的JSONKit.m需要设置-fno-objc-arc,以兼容arc

3,添加CoreTelephony.framework到工程

 

草,现在还不能支持ios8,ios8都出来3个多月了

 

激光推送

也是个坑,总之有两个地方坑了我。

1,我是用pods导入的JPush库,会报错

Undefined symbols for architecture armv7: "_OBJC_CLASS_$_UIUserNotificationSettings"

原因,pods下好的一个libPushSDK-1.8.2.a库文件需要手动导入。

2,我是用的多个开发者账号同时开发,会报错

Not get deviceToken yet. Maybe: your certificate not configured APNs

或者

did Fail To Register For Remote Notifications With Error: Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用程序的“aps-environment”的权利字符串" UserInfo=0x1c55e000

官网解释:http://docs.jpush.cn/pages/viewpage.action?pageId=7864782#iOS常见问题-为什么启动的时候出现DidFailToRegisterForRemoteNotificationsWithError的错误

很系统,但是漏掉了我这种情况。

还需要设置Code signing identity为你现在使用的开发者账号。

转载于:https://www.cnblogs.com/MartinLi841538513/p/3959437.html

你可能感兴趣的文章
jdbc之分页查询
查看>>
sbrk and coreleft
查看>>
树型DP
查看>>
怎么在ubuntu上使用pidgin登陆QQ
查看>>
思维的惰性
查看>>
【Android】学习记录<1> -- 初识ffmpeg
查看>>
关于IAsyncResult接口的CompletedSynchronously属性
查看>>
编译原理——算符优先分析文法(附源代码)
查看>>
jboss的启动过程
查看>>
渲染部分
查看>>
力扣——所有可能的路径
查看>>
关于VS项目平台的x86,x64,Any CPU以及Debug和Release的区别
查看>>
解密module_init幕后的故事
查看>>
9个移动网站优化的最佳实践
查看>>
李昌镐:苍老的青春(转载) 韩国围棋职业棋手
查看>>
JPA 使用报Named query not found错误
查看>>
FTP命令使用详解
查看>>
walmart weekly sales
查看>>
面试题07_用两个栈实现队列——剑指offer系列
查看>>
cocos2d-x3.2中加入Android手机震动
查看>>