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]; }
具体请参考关于个推推送方式文档:
___________________________________________________
专注iOS/前端开发,广泛涉猎多种平台和技术,欢迎交流
可以在微博关注并@沈z伟