全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
101 文章- 6 评论- 100IOS推送功能的实现(javapns)IOS的推送实现由这样几步来完成:1. 创建Push SSL Certification2. IOS客户端注册Push功能并获得DeviceToken3. 使用Provider向APNS发送Push消息4. IOS客户端接收处理由APNS发来的消息创建Push SSL Certification 登录,创建新的App ID,要求此ID的Bundle Identifier不包含通配符,否则不能启用Push以及IAP功能。例如 com.soso.sosoimage。 在App IDs列表页面,点击刚创建的app id右面的Configure链接,进入Configure App ID界面,选中Enable for App Push Notification service。点击Development Push SSL Certificate一行的Configure按钮,弹出Apple Push Notification service SSL Certificate Assistant对话框,依对话框操作,类似于创建开发或发布用的Certificate。 最终将Development Push SSL Certificate下载并安装到本地Keychain Access。导出成p12文件,备用。导出时需要设置密码,不得为空。 在,创建一个新的Provisioning Profile,使用我们刚刚创建的支持Push功能的App ID。下载并安装到本地。IOS客户端注册Push功能并获得DeviceToken 创建本地工程,info.plist中设置Bundle identifier为刚刚创建的Bundle Id。Com.soso.sosoimage。设定Code Signing Identity为刚刚创建的Provisioning Profile。 程序第一次执行的时候,调用如下代码.UIApplication sharedApplication registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound);三个参数分别代表消息(横幅或提醒,由用户Setting决定,程序不可更改)、数字标记、声音。在AppDelegate.m中添加两个方法./iPhone 从APNs服务器获取deviceToken后回调此方法- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken NSString* dt = deviceToken description stringByTrimmingCharactersInSet:NSCharacterSet characterSetWithCharactersInString:; NSLog(deviceToken:%, dt);/注册push功能失败 后 返回错误信息,执行相应的处理- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err NSLog(Push Register Error:%, err.description);获取DeviceToken后,将其传给Provider。使用Provider向APNS发送Push消息Provider,将推送信息发送给APNS(苹果推送服务器)的程序。有很多开源的实现,我们使用javapns ( /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中NotificationTest.java。也可以参考如下例子。(1)使客户端图标显示数字标记Push.badge(2, keystore, password, false, 7bb8d508e32df651c6c239439737dbd40a88d2461ad2ac1e5dbe49ecea5ccc67);其中,2为要显示的数字;String keystore = PushCertificates.p12; /P12文件的路径;String password = sosoimage; /P12文件的密码;false,指的是使用测试环境,使用正式产品环境应传入true.7bb8d508e32df651c6c239439737dbd40a88d2461ad2ac1e5dbe49ecea5ccc67为客户端获得并传给Provider的DeviceToken,此参数还可以传入String对象,以同时向多个客户端Push消息。(2)使客户端显示横幅或提醒Provider可以向客户端Push一条Message,但客户端有权限决定这条Message的显示方式(无、横幅、提醒)。Push.alert(A Message, keystore, password, )false, 7bb8d508e32df651c6c239439737dbd40a88d2461ad2ac1e5dbe49ecea5ccc67);(3)混合方式可以在一个Push消息里附带多种信息,Message, 标记,声音,可以使用如下代码.PushNotificationPayload payload = PushNotificationPplex();payload.addAlert(A Message);payload.addBadge(2);payload.addSound(test.aiff);Push.payload(payload, , keystore, password, false, 7bb8d508e32df651c6c239439737dbd40a88d2461ad2ac1e5dbe49ecea5ccc67);上面的代码都有可能会有相应的Exception抛出来,需要处理。更多的使用方式可以参考 /p/javapns/IOS客户端接收处理由APNS发来的消息(1)当程序未启动,用户接收到消息。需要在AppDelegate中的didFinishLaunchingWithOptions得到消息内容。代码如下,- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions . NSDictionary* payload = launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey; if (payload) . .(2)当程序在前台运行,接收到消息不会有消息提示(提示框或横幅)。当程序运行在后台,接收到消息会有消息提示,点击消息后进入程序,AppDelegate的didReceiveRemoteNotification函数会被调用(需要自己重写),消息做为此函数的参数传入,代码如下- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)payload .(3)无论在哪个函数传入,消息总是一个NSDictionary对象,处理方式可以参考如下代码- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)payload NSLog(remote notification: %,payload description); NSString* alertStr = nil; NSDictionary *apsInfo = payload objectForKey:aps; NSObject *alert = apsInfo objectForKey:alert; if (alert isKindOfClass:NSString class) alertStr = (NSString*)alert; else if (alert isKindOfClass:NSDictionary class) NSDictionary* alertDict = (NSDictionary*)alert; alertStr = alertDict objectForKey:body; application.applicationIconBadgeNumber = apsInfo objectForKey:badge integerValue; if (application applicati
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 素描第2版(艺术设计相关专业)全套教学课件
- 历史中国的古代艺术
- 江苏省淮安市洪泽区四校2023-2024学年五年级下学期5月月考语文试题
- 今年元旦活动方案策划6篇
- 2024山东“才聚齐鲁 成就未来”省属企业残疾人专场招聘59人笔试备考题库及答案解析
- 《紫藤萝瀑布》课件
- 《马说》教学课件
- 《一滴水经过丽江》教学课件
- 浙江省2024年普通高中学业水平考试信息技术模拟卷(三)
- 小学语文六年级(上)习题试卷第一单元 单元知识小结
- 人民医院能源托管服务项目可研技术方案书
- 双体系资料之胶业有限公司制胶机安全风险分级清单
- Unit4PartALet'stalkLet'splay(学习任务单)四年级英语上册(人教PEP版)
- 2023年湖北省荆门市中考数学试卷真题(含标准答案)
- 《康复医学导论》课程思政示范课程立项申报书
- 自然放坡开挖施工方案
- 运用PDCA血透室导管感染率
- 外研版(2019) 选择性必修第一册 Unit 4 Meeting the Muse Starting out课件
- 小学2023-2024学年度第二学期语文教研计划
- 食用菌装袋机安全操作保养规定
- 师德师风投诉办理台账表
评论
0/150
提交评论