IOS推送功能的实现

发表于:2014-8-20 09:57

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:gaohongfeng    来源:51Testing软件测试网采编

  IOS的推送实现由这样几步来完成:
  创建Push SSL Certification
  IOS客户端注册Push功能并获得DeviceToken
  使用Provider向APNS发送Push消息
  IOS客户端接收处理由APNS发来的消息
  创建Push SSL Certification
  登录developer.apple.com,创建新的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文件,备用。导出时需要设置密码,不得为空。
  在developer.apple.com,创建一个新的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 ( 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的工程目录下。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号