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

一、准备工作

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

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

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

二、了解大致步骤

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

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

三、申请证书

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 plaincopyprint?

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

内添加

[cpp] view plaincopyprint?

  1. NSLog(@"Registering for push notifications...");
  2. [[UIApplication sharedApplication]
  3. registerForRemoteNotificationTypes:
  4. (UIRemoteNotificationTypeAlert |
  5. UIRemoteNotificationTypeBadge |
  6. UIRemoteNotificationTypeSound)];

添加新函数

[cpp] view plaincopyprint?

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

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

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

时间: 2024-10-10 20:25:28

APNS编程----iOS真机测试消息推送的相关文章

项目开发--------真机测试和推送的实现

/***********************1***************************************** /***********************2***************************************** /***********************3***************************************** /***********************4************************

Unity导出iOS真机测试教程

原地址:http://unity3d.9tech.cn/news/2014/0410/40177.html 学 习了两天的Android开发,我感觉Android开发跟IOS开发和.NET平台下的开发有点不同,Android开发我更觉得跟web(Html) 倒是有类似的地方,都是节点标签显示的,当然个人理解,感觉提示也没IOS开以及.NET开发那么强,可能是我还不是太熟悉eclipse开发环境,当然 当做出东西能导入到自己的Android机还是挺兴奋的.今天晚上摸索了一下IOS真机测试,手上有M

ios真机测试问题:Missing proxy for identifier Upstream Placeholder-cQP-XH-dSX

解决方法:把机上的原来那个软件卸载掉,然后再运行. 原因:未明 ios真机测试问题:Missing proxy for identifier Upstream Placeholder-cQP-XH-dSX

iOS 真机测试的时候报错 After modifying system headers, please delete the module cache at '/ /Users/smile/Libr

这个是Xcode缓存导致的 fatal error: file ' '/ /Users/smile/Library/Developer/Xcode/DerivedData/ModuleCache/VE5HTVL861UA' was built note: after modifying system headers, please delete the module cache at '/Users/ligang/Library/Developer/Xcode/DerivedData/Modul

iOS真机测试,为Provisioning添加设备 -- based xcode6[原]

iOS真机测试,  我们需要添加几台新的设备进行测试.我们只需要对Provisioning Profiles 进行更新. 1. 在苹果开发者中心添加测试设备 打开苹果Certificates, Identifiers & Profiles页面: 并且选择iphone(我们只有iphone测试设备,没有ipad等,有多重设备选择all) https://developer.apple.com/account/ios/device/ 2. 给Provisioning Profile 添加对应的测试设

iOS真机测试推送证书生成

1.首先你想创建推送证书和以前你做真机测试证书一样,需要实现准备一个99$的付费账号.然后登陆苹果开发者网站. 2.登陆以后你能看到这个界面然后选择我圈中的那个选项Member Center 转到登陆界面. 3.在这里你可以输入你的付费账号和密码.然后点击Single In. 4.然后选择证书申请的页面. 5.先点击APP ID 的创建界面(Identifiers). 6.进入到APP ID 的创建页面后点击右上角的+创建新的APP ID . 7.因为今天要做的是推送证书需要在创建APP ID

iOS 真机测试

在上一篇博客中,已经购买好了开发账号,既然都交了钱了,就做点有意义的事吧!要想使用真机测试,需要准备如下: 1.证书:安装到电脑上的cer文件,只有安装了证书的电脑,才可以进行真机调试2.App ID:就是应用程序的Bundle ID,每个应用程序都有一个唯一的Bundle ID,但是我们没必要为每一个应用程序都添加,我们可以使用通配符:*号3.测试设备UDID:每台设备都有唯一的标识码,叫做UDID,我们需要将测试设备的UDID添加到账号中,否则无法进行测试4.描述文件:里面包含:证书,App

IOS真机测试(用证书进行真机测试)

真机测试需要准备 1.证书 2.Iphone或者Ipad 3.到developer.apple.com注册开发者账号(不用money的) -------------------------------------------------------------------------------------------------------------------------- 步骤: 1.登录开发者中心developer.apple.com 2.到开发者中心首页 可以点击 跳转到管理中心 点

iOS真机测试中出现dyld`dyld_fatal_error错误

最近进入一家新公司,接手了一个之前由外包公司承接的项目.首先吐槽一下项目质量,哎毕竟也憋了很久了. 1.上手项目是打不开的,所有framework静态库全体飘红,一编译七八十错误.最终是偷懒还是什么就不得而知了.最终慢慢一个个的将静态库framework导入Building Phases中,其中又发生了很多意想不到的错误.若有人对此有兴趣我们可以下次再聊这些问题. 2.项目代码分类封装问题.项目是用Swift写的,而我之前使用的较多的是Objective-C,Swift用的不多,对Swift的印