信鸽推送集成
信鸽推送集成
-
UDID是设备唯一设备识别符,移动广告运营商和游戏网络运营商可以通过这个udid识别玩家用户并对用户活动进行跟踪,苹果可能是因为安全原因拒绝。
-
device token是苹果返回给我们的NSData数据。通过Bundle Identifier 区分 deviceToken
iOS远端推送原理
- 服务端把要发送的消息和目标iOS设备的DeviceToken打包,发送给APNS;DeviceToken不是一成不变的
- APNS在自身的已注册Push服务的IOS设备列表中,根据DeviceToken查找对应iOS设备,并将消息发送到IOS设备
- iOS设备把发送的消息传递给对应的应用程序。
iOS推送证书设置
-
再需要设置信鸽推送的Demo上,先用开发者账号去运行,将Demo在模拟机上运行一遍。这样可以在apple developer -> acconut 中直接查找到项目的App ID.
-
运行过后刷新apple developer -> account -> Certificates...
-
找到后,由于未添加push notification 所以选项都为disable 点击edit进行更改。
-
创建推送证书,接下来会需要导入Certificate Signing Request。
-
生成 .certSigningRequest文件,然后导入到 4 中。
-
5 中上传完成的后的效果图。
-
推送证书生成完毕,点击下载。
-
下载后如图所示,双击进行安装
-
推送证书安装完毕后的效果。
Provisioning Profiles (配置概要文件)
-
如图所示,添加新profile
-
选中ios App Developer
Development(开发状态下) Distribution(生产状态下)
-
选择需要进行推送的应用的Bundle id
-
按照图示进行选中。
-
选中需要推送的设备
-
给描述文件命名。
-
下载用于推送的描述文件。
腾讯信鸽平台设置
-
登录信鸽平台。选中接入推送应用
-
填写需要设置推送的应用的信息
-
进行该应用的信鸽平台的配置
-
需要进行设置的2项:开发证书和测试设备
-
再次打开钥匙串。选中Push证书导出,选中一行。导出的格式为p12。
-
打开终端,进入到p12文件所在执行以下命令
openssl pkcs12 -in Name.p12 -out Name.pem -nodes
-
将生成的CertificateName.pem证书,上传到信鸽配置信息 -> iOS证书配置 -> 开发证书。 进行 pem 证书上传验证。
Xcode设置
-
双击 .mobileprovision 文件,进行安装。
-
设置Provisioning Profile
代码实现
-
在信鸽平台下载Demo后,将XGSetting.h 和 XGPush.h 和 libXG-SDK.a添加到Xcode工程
-
添加对以下libraries的引用。包括CFNetwork.framework , SystemConfiguration.framework , CoreTelephony.framework , libz.dylib , libXG-SDK.a,Security.framework。
-
初始化push信息
注册用户
// 设置账号 [XGPush setAccount:@"zhoujian"];
-
获取deviceToken,拷贝至信鸽平台 接入配置 -> 测试设备 -> 新增设备
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{ [XGPush registerDevice:deviceToken];//信鸽获取Token NSLog(@"远程推送能力注册成功,deviceToken:%@",deviceToken); }
-
信鸽平台 -> 创建通知
- 注意:推送环境和用户范围设置好,注意是当前应用设置的是开发环境还是生产环境。
-
输入测试内容,点击确认推送,手机端就可以收到推送的信息。
设置点击推送栏跳转至指定页面
-
点击通知操作使用自定义参数
-
收到远程推送消息时调用
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
//推送
NSLog(@"推送内容是:%@",userInfo);
}
得到userInfo字典
推送内容是:{
aps = {
alert = "\U6d4b\U8bd5";
sound = default;
};
info = 333;
xg = {
bid = 0;
ts = 1472197503;
};
}
故可以设置通知,当 info 有值时候,发送通知给指定页面,执行相应的跳转事件。
设置APP 通知未读角标
-
信鸽平台 -> 创建通知
-
在 useInfo 中
//设置APP的bageValue NSString *bageValue = [[userInfo objectForKey:@"aps"] objectForKey:@"bageValue"]; int i = [bageValue intValue]; [UIApplication sharedApplication].applicationIconBadgeNumber = i;
判断应用处于前台 or 后台
//处于前台
[UIApplication sharedApplication].applicationState == UIApplicationStateActive
//处于后台
[UIApplication sharedApplication].applicationState == UIApplicationStateBackground