欢迎来到天天文库
浏览记录
ID:47117225
大小:23.10 KB
页数:4页
时间:2019-08-07
《IOS推送功能的实现(javapns)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、101 文章-6 评论-100 IOS推送功能的实现(javapns)IOS的推送实现由这样几步来完成:1.创建PushSSLCertification2.IOS客户端注册Push功能并获得DeviceToken3.使用Provider向APNS发送Push消息4.IOS客户端接收处理由APNS发来的消息创建PushSSLCertification 登录developer.apple.com,创建新的AppID,要求此ID的BundleIdentifier不包含通配符,否则不能启用Push以及IAP功能。例如com.soso.so
2、soimage。 在AppIDs列表页面,点击刚创建的appid右面的Configure链接,进入ConfigureAppID界面,选中"EnableforAppPushNotificationservice"。点击DevelopmentPushSSLCertificate一行的Configure按钮,弹出"ApplePushNotificationserviceSSLCertificateAssistant"对话框,依对话框操作,类似于创建开发或发布用的Certificate。 最终将DevelopmentPushSSLCe
3、rtificate下载并安装到本地KeychainAccess。导出成p12文件,备用。导出时需要设置密码,不得为空。 在developer.apple.com,创建一个新的ProvisioningProfile,使用我们刚刚创建的支持Push功能的AppID。下载并安装到本地。 IOS客户端注册Push功能并获得DeviceToken 创建本地工程,info.plist中设置Bundleidentifier为刚刚创建的BundleId。Com.soso.sosoimage。设定CodeSigningIdentity为刚刚创建
4、的ProvisioningProfile。 程序第一次执行的时候,调用如下代码.[[UIApplicationsharedApplication]registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert
5、UIRemoteNotificationTypeBadge
6、UIRemoteNotificationTypeSound)];三个参数分别代表消息(横幅或提醒,由用户Setting决定,程序不可更改)、数字标记、声音。在AppDelegate.m中添加两个方法
7、.//iPhone从APNs服务器获取deviceToken后回调此方法-(void)application:(UIApplication*)appdidRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken{NSString*dt=[[deviceTokendescription]stringByTrimmingCharactersInSet:[NSCharacterSetcharacterSetWithCharactersInString:@"<>"]]
8、;NSLog(@"deviceToken:%@",dt);}//注册push功能失败后返回错误信息,执行相应的处理-(void)application:(UIApplication*)appdidFailToRegisterForRemoteNotificationsWithError:(NSError*)err{NSLog(@"PushRegisterError:%@",err.description);}获取DeviceToken后,将其传给Provider。使用Provider向APNS发送Push消息Provider,将推送信
9、息发送给APNS(苹果推送服务器)的程序。有很多开源的实现,我们使用javapns(http://code.google.com/p/javapns/)。首先,Provider要有目标DeviceToken,这是发送目标,由客户端传给Provider之后存在某处。安装javapns,需要导入的jar为bcprov-jdk15-146.jar,log4j-1.2.15.jar,JavaPNS_2.3_Alpha_5.jar。将前面导出的P12文件放在Provider的工程目录下。Provider向APNS发送消息可以参考javapns中
10、NotificationTest.java。也可以参考如下例子。(1)使客户端图标显示数字标记Push.badge(2,keystore,password,false,"7bb8d508e32df651c6c239439
此文档下载收益归作者所有