iOS应用第三方推送的添加

现在的一些第三方的推送平台挺好用,主要是因为他们有类似微信公众平台一样的管理后台,简单易用,封装了很多开发者需要的推送功能。

 

下面以个推为例:

1.在个推的应用配置iOS部分设置自己的BounleID以及上传自己的推送证书

  推送证书的创建和P12文件的生成请移步:http://docs.igetui.com/pages/viewpage.action?pageId=590063

 

2.工程中集成SDK

这种三方的框架集成比较简单,可以参考个推的APPDemo进行集成,主要就是导入库,然后在APPdelegate配置下就好了。

demo以及文档地址:http://docs.igetui.com/pages/viewpage.action?pageId=1934080

 

3.代码的地方需要注意的是:

在线的推送和离线的推送入口是不一样的

离线的时候,是通过苹果服务器周转的推送的delegate入口:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userinfo {
    // [4-EXT]:处理APN
    NSString *payloadMsg = [userinfo objectForKey:@"payload"];
    if (payloadMsg) {
        NSString *record = [NSString stringWithFormat:@"[APN]%@, %@", [NSDate date], payloadMsg];
        NSLog(@"获得推送消息1:%@",record);
    }
}

在线的来自于个推服务器直接的消息发送,个推的delegate,然后可以使用下面的函数做一个本地的通知:

- (void)GeTuiSdkDidReceivePayload:(NSString *)payloadId andTaskId:(NSString *)taskId andMessageId:(NSString *)aMsgId fromApplication:(NSString *)appId
{
    // [4]: 收到个推消息
    _payloadId = [payloadId copy];
    
    NSData* payload = [GeTuiSdk retrivePayloadById:payloadId];
    
    NSString *payloadMsg = nil;
    if (payload) {
        payloadMsg = [[NSString alloc] initWithBytes:payload.bytes
                                              length:payload.length
                                            encoding:NSUTF8StringEncoding];
    }
    
    NSString *record = [NSString stringWithFormat:@"%d, %@, %@", ++_lastPayloadIndex, [self formateTime:[NSDate date]], payloadMsg];
    
    NSLog(@"task id : %@, messageId:%@,内容:%@", taskId, aMsgId,record);
    [self createNotifiction:payloadMsg];
}

本地通知:

-(void)createNotifiction:(NSString *)content{
    //定义本地通知对象
    UILocalNotification *notification=[[UILocalNotification alloc]init];
    //设置调用时间
    notification.fireDate=[NSDate dateWithTimeIntervalSinceNow:0];//通知触发的时间,10s以后
    notification.repeatInterval=2;//通知重复次数
    //notification.repeatCalendar=[NSCalendar currentCalendar];//当前日历,使用前最好设置时区等信息以便能够自动同步时间
    
    //设置通知属性
    notification.alertBody=content; //通知主体
    notification.applicationIconBadgeNumber=1;//应用程序图标右上角显示的消息数
    notification.alertAction=@"滑动来查看"; //待机界面的滑动动作提示
    //notification.alertLaunchImage=@"Default";//通过点击通知打开应用时的启动图片,这里使用程序启动图片
    notification.soundName=UILocalNotificationDefaultSoundName;
    
    //设置用户信息
    notification.userInfo=@{@"type":@"LocalNotification"};//绑定到通知上的其他附加信息
    
    //调用通知
    [[UIApplication sharedApplication] scheduleLocalNotification:notification];
}

 具体请参考关于个推推送方式文档:

http://docs.igetui.com/pages/viewpage.action?pageId=2687544#iOSSDK130集成步骤-3、更多集成方案:个推SDK透传消息非APNS(可选)

posted @ 2015-10-09 10:55  Rayshen  阅读(518)  评论(0编辑  收藏  举报