APNS编程----iOS真机测试消息推送

一、准备工作

1 拥有一台iOS为操作系统的苹果设备,iPhone,iPad,iPod都可以。

2 拥有苹果开发者账号,需要真机调试,最好是是付费开发者,后面的步骤将会更顺利。

3 需要一台PC做推送服务器,如果是台拥有MAC OS系统,将会更方便。

二、了解大致步骤

我们需要从测试的消息推动服务器,发送一条消息到Apple Push Notification Services,然后APNS转发到iOS设备,完成消息推送过程。

由于我们的测试服务器到APNS,传递的是加密后的消息,所以需要申请证书。

三、申请证书


1 下面是需要的证书文件

APNS编程----iOS真机测试消息推送_第1张图片

 2证书申请的流程如下 ,部分内容转载自网络

2.1 创建SSL证书 

首先需要需要创建一个App ID以及关联的SSL证书。有了证书,解析服务器才能找到你的App ID,继而将通知推送到你的应用。

创建一个证书请求文件: 
a. 在mac上运行钥匙串访问(keychain) 
b. 选择钥匙串访问>证书助理>从证书颁发机构中请求一个证书 
c. 输入你的名字和邮件地址,CA邮件地址默认就可以,不要试图去进行任何改动。 
d. 选择“保存到硬盘”,这样.certSigningRequest的文件生成了。

2.2然后创建APP ID: 
a. 登陆网站Apple Developer Member Center并进入iOS Provisioning Portal。 
b. 从左边栏里点击App IDs。 
c. 选择New App ID,然后创建一个新的App ID。一定要确保Bundle Identifier一栏中没有星号。 
d. 在你的App ID下面找到Configure,选中。 
e. 将“Enable for Apple Push Notification service”勾选上,然后点击Development Push SSL Certificate下面的Configure,然后会出现Apple Push Notification service SSL Certificate Assistant设置向导。 
f. 点击Continue继续,然后点击Choose File,选中刚创建见的.certSigningRequest文件。 
g. 点击Generate开始生成,然后点击Download下载生成的SSL证书。 
h. 通过keychain程序来安装下载好的SSL证书。 
i. 接着在“我的证书”选项先面,找到你刚才安装名称形如“Apple Development IOS Push Services: xxx”的证书。 
j. 双击证书,选择“导出”,导出后的文件后缀名为.p12。这个时候千万注意!出现密码提示的时候一定不要添任何东西

至此SSL证书创建完成。 

2.3.创建Provisioning Profile 

Provisioning文件是用来授权iOS设备的
a. 在 ios provisioning portal中选择provisioning 
b. 点击New profile 
c. 按照要求填写profile name,certificate,APP ID(刚才创建的app id),devices 
d. 下载生成的provisioning profile 
e. 双击安装。 

2.4成功后可以通过Organizer,看到如下图


四、获取设备的deviceToken,用xcode 创建一个新的工程 ,直接下载

1 将main identifier 设置为之前的App ID(必须修改)

2  添加如下代码


[cpp] view plain copy print ?
  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
内添加

[cpp] view plain copy print ?
  1. NSLog(@"Registering for push notifications...");  
  2. [[UIApplication sharedApplication]  
  3.  registerForRemoteNotificationTypes:  
  4.  (UIRemoteNotificationTypeAlert |  
  5.   UIRemoteNotificationTypeBadge |  
  6.   UIRemoteNotificationTypeSound)];  
添加新函数

[cpp] view plain copy print ?
  1. - (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {  
  2.       
  3.     NSString *str = [NSString  
  4.                      stringWithFormat:@"Device Token=%@",deviceToken];  
  5.     NSLog(@"%@",str);  
  6.       
  7. }  
  8.   
  9. - (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {  
  10.       
  11.     NSString *str = [NSString stringWithFormat: @"Error: %@", err];  
  12.     NSLog(@"%@",str);  
  13.       
  14. }  
  15.   
  16. - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {  
  17.       
  18.     for (id key in userInfo) {  
  19.         NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]);  
  20.     }      
  21.       
  22. }  

五、 用“服务器”发送推送消息,直接下载代码

1 需要将之前的证书.cer的文件,放到resource下



2 设置好token,发送消息,

六、在iOS设备上看到消息

1 动手将application:didReceiveRemoteNotification:收到的通知,用UIAlertView显示到界面上。

七、参看资料地址

证书文件夹中p12文件,是使用Java搭建测试服务器时,所需要的文件,在MAC上则不需要

Programming Apple Push Notification  Services,英文好的,可以直接看这篇   

 http://www.cnblogs.com/zhw511006/archive/2010/09/01/1815089.html

http://blog.csdn.net/xunyn/article/details/8243573

你可能感兴趣的:(ios,面试)