你的位置:首页 > 操作系统

[操作系统]iOS开发日记5


今天博主有一个集成信鸽推送的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步.

推送分为用户推送,本地推送,远程推送和地理位置推送,其中最常用的就是远程推送,远程推送可以直接编写代码实现功能,也可以使用第三方的SDK,常用的第三方SDK有信鸽推送,极光推送和个推.今天和大家分享一下集成信鸽推送的过程.

1.下载腾讯信鸽SDK

它下面有两个版本:基础版和Pro版

下载地址:http://xg.qq.com/xg/ctr_index/download

注:信鸽ProiOS SDK是信鸽iOSSDK的加强版,整合了数据分析能力,没有数据分析需求使用基础版即可,博主使用的就是基础版

2.创建应用,申请appID

3.进行应用配置(点击“应用配置”)

4.验证开发证书和生产证书

配置iOS证书的具体流程请参考:http://developer.xg.qq.com/index.php/IOS_证书设置指南

注:开发证书和生产证书均为pem类型的文件,证书密码为生成pem类型文件过程中所设置的密码 

5.点击“测试设备”,增加测试设备,以便后期开发中进行测试调试

其中设备Token的获取方式:在获取deviceToken的方法中,注册设备,打印Token 

6.添加以下引用库

CFNetwork.framework

SystemConfiguration.framework

CoreTelephony.framework

Security.framework

libz.dylib

libsqlite.dylib

libXG-SDK.a

 7.具体代码可以直接复制信鸽推送的官方demo,注释相当详细.

这里重点和大家分享一下处理推送回调的问题:

①.当程序处于关闭状态收到推送消息时,点击图标会调用- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 这个方法,那么消息给通过launchOptions这个参数获取到。

②.当程序处于前台工作时,这时候若收到消息推送,会调用- (void)application:(UIApplication *)application

didReceiveRemoteNotification:(NSDictionary *)userInfo这个方法

③.当程序处于后台运行时,这时候若收到消息推送,如果点击消息或者点击消息图标时,也会调用- (void)application:(UIApplication*)application

didReceiveRemoteNotification:(NSDictionary *)userInfo这个方法

④.当程序处于后台运行时,这时候若收到消息推送,如果点击桌面应用图标,则不会调用didFinishLaunchingWithOptions和didReceiveRemoteNotification方法,所以无法获取消息

第一种情况:

if (launchOptions) {

NSDictionary* pushNotificationKey = [launchOptionsobjectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

        if (pushNotificationKey) {

            //这里定义自己的处理方式

        }

}

第二、三种情况:

if (application.applicationState == UIApplicationStateActive) {

//第二种情况

        if ([[userInfo objectForKey:@"aps"] objectForKey:@"alert"]!=NULL) {

            [WLHelper showAlert:@"推送消息" msg:[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]];

        }

} else {

//第三种情况

//这里定义自己的处理方式

}

第四种情况:目前还没想好,望各位看官集思广益,不胜感激