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  添加如下代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
内添加

    NSLog(@"Registering for push notifications...");
    [[UIApplication sharedApplication]
     registerForRemoteNotificationTypes:
     (UIRemoteNotificationTypeAlert |
      UIRemoteNotificationTypeBadge |
      UIRemoteNotificationTypeSound)];

添加新函数

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    
    NSString *str = [NSString
                     stringWithFormat:@"Device Token=%@",deviceToken];
    NSLog(@"%@",str);
    
}

- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {
    
    NSString *str = [NSString stringWithFormat: @"Error: %@", err];
    NSLog(@"%@",str);
    
}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    
    for (id key in userInfo) {
        NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]);
    }    
    
}
五、 用“服务器”发送推送消息,直接下载代码

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


2 设置好token,发送消息,

六、在iOS设备上看到消息


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

七、参看资料地址

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

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

 https://mobiforge.com/design-development/programming-apple-push-notification-services


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: iOS消息 APNs 是指苹果公司提供的一种用于向移动设备发远程通知的服务。而使用 Java 实现 HTTP/2 协议发消息可以通过以下步骤完成。 首先,我们需要使用 Java 开发一个 HTTP/2 客户端,以实现与 APNs 服务器的通信。我们可以使用 okhttp、netty 或者 java-http-client 等库来实现这个客户端。 其次,我们需要获取 APNs 服务器的地址和凭证认证信息。地址常见的有两个,分别是开发环境和生产环境。在获取地址之后,我们还需要生成一个包含认证信息的 JWT(JSON Web Tokens),以进行身份验证。 然后,我们可以使用 Java 客户端向 APNs 服务器发 HTTP/2 请求。请求的内容应包括通知的 payload 和设备的设备标识符(Device Token)等信息。设备标识符是由 APNs 服务器为每个设备生成的唯一标识符,用于指定接收消息的设备。 最后,我们可以根据 APNs 服务器的响应来判断是否成功。APNs 服务器会返回一个包含结果的响应,其中包括是否成功以及失败的原因。 总之,使用 Java 实现 HTTP/2 协议发 iOS 消息 APNs,需要开发一个符合 HTTP/2 协议的客户端,生成凭证信息并发请求。通过与 APNs 服务器的通信,可以将消息到指定的 iOS 设备上。 ### 回答2: iOS消息APNs)是苹果公司提供的一种服务,用于将通知发到iOS设备上的应用程序。实现APNs的一种方法是使用HTTP/2协议发请求。 在Java中,可以使用一些第三方库来实现使用HTTP/2协议发APNs消息。其中,使用Netty库是一个常见的选择。 首先,你需要引入Netty库的相关依赖项,并创建一个Netty的客户端连接。 然后,你需要创建APNs的请求和消息内容。APNs消息使用JSON格式进行发,你需要构建一个JSON对象来包含的内容。这个内容可以包括通知标题、内容、图标等。 接下来,你需要将JSON对象编码为二进制数据,并发APNs服务器。此时,你可以使用Netty库提供的HTTP/2的客户端请求来发。 发请求的过程包括建立连接、发帧、处理响应等步骤。你需要设置请求的方法、URL、Headers以及Payload(即消息内容的二进制数据)。 最后,你需要在接收到APNs服务器的响应后,进行对应的处理和错误处理。常见的响应包括成功响应和错误响应。 总结起来,实现使用HTTP/2协议发APNs消息的过程,包括建立连接、构建JSON消息、编码为二进制数据、发请求、处理响应等步骤。通过使用Netty库,可以简化这个实现过程,并提供了更好的性能和可扩展性。 ### 回答3: 在iOS中,APNS(Apple Push Notification Service)是一种用于向苹果设备(如iPhone、iPad、iPod Touch等)消息的服务。而在Java中,可以使用HTTP/2协议来实现发APNS通知。 HTTP/2是一种基于HTTP/1.1的进化版本,其在性能和效率上有所提升。使用Java实现HTTP/2协议发APNS通知的步骤如下: 1. 首先,需要准备APNS证书。在苹果开发者账号中创建一个证书,并将其导出为.p12文件。 2. 将.p12文件转换为Java可用的密钥和证书形式。可以使用Java的KeyTool工具来完成此步骤。 3. 使用Java的HTTP/2库,如Jetty或Netty,建立与APNS服务器的HTTP/2连接。这些库可提供与APNS服务器之间的双向通信。 4. 在建立连接后,可以使用HTTP/2的帧和流的概念向APNS服务器发通知。可以使用Jetty或Netty提供的API来创建和发HTTP/2帧。 5. 在发通知时,需要将的相关信息,如设备令牌、内容等,封装为HTTP/2的帧数据发APNS服务器。 6. APNS服务器收到请求后,会根据设备令牌等信息将通知给相应的设备。 总之,使用Java实现HTTP/2协议发APNS通知需要准备证书、使用HTTP/2库建立连接,并利用API创建和发HTTP/2帧,最后将信息发APNS服务器。这样就可以通过HTTP/2协议向iOS设备消息了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值