iOS设备远程Push功能详解

简介:

作为一个现代应用,没有Push功能,你已经过时了,为了紧跟时代潮流,我决定研究下如何实现苹果的Push功能。

关心APNS是如何实现的朋友们请移步Apple Push Notification Service,关系怎么在iOS设备上实现Push功能的同学,请继续往下看。

总的来说,分为六个内容:新建App,设置AppPush证书,如何在应用内注册Push,如何处理Push,Push内容详解。

1.首先我们需要一个测试使用的App。

新建App图片

进入iOS Provisioning Portal,App IDs-> New App ID。

创建新应用

分别输入你的App的描述和identifier。点击Submit。

进入你新创建的App编辑页面。把Enable for Apple Push Notfication Service的钩钩打上。这里分两个,Development Push SSL Certificate和Production Push SSL Certificate两个服务,我们开发和测试使用第一个就好了。第二个是供从AppStore和ADHOC渠道获取iPa的用户使用的。点击Configure。

弹出如上界面。我们需要生成一个CSR文件。

我们需要用到钥匙串应用。

打开钥匙串。

填上电子邮件和常用名称然后选择存储到磁盘。点击继续,把证书保存到本地。

生成的签名证书。

回到刚才的页面,把生成的证书上传到服务器上面。

点击Continue。

将生成的证书下载到本地。

到这里所有在网络上配置的活动都完成了。

你的应用信息里面应该是显示成这样的。

2.然后我们需要在App里面做点文章。

新建一个App,起名叫PushTest。

将应用程序的Bundle identifier改为你刚才设定的那个。

然后在程序的AppDelegate.m文件里面加入如下代码。

[cpp]  view plain  copy
  1. - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {  
  2.     NSString *token = [NSString stringWithFormat:@"%@", deviceToken];  
  3.     NSLog(@"My token is:%@", token);  
  4.   
  5. }  
  6.   
  7. - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {  
  8.     NSLog(@"Error in registration. Error: %@", err);  
  9. }  
  10.   
  11. - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{  
  12.     NSLog(@"%@",userInfo);  
  13. }  
所有使用APNS服务的应用在进入程序时,需要先在苹果的APNS服务器上进行注册。

注册的方法是这样的 。

[cpp]  view plain  copy
  1. [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound|UIRemoteNotificationTypeAlert)];  

苹果的Push服务分三种,数字、声音和alert形式。其中Alert是一定会显示出来的。而数字和声音是可选的。

进入应用,执行我上面的代码,程序会自动弹出一个提示框,请用户允许你的应用向他发送Push消息。

这时会触发

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken 这个代理方法。生成的 device token我们要记下来,等下要用。

如果说注册失败了,会触发这个代理:

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)err;我们可以根据错误调整。

收到了APNS发送的Push的消息后,会触发这个代理。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

到此为止,我们在客户端做的操作基本都完成了,将程序build到真机上,然后触发注册通知的动作。当你正确收到deviceToken 的时候,就说明你注册成功了。

3. 然后就是测试我们的Push可不可用了。

我用的是GitHub上面的PushMeBaby

打开项目,ApplicationDelegate.m 的init方法中有参数设置,把你刚才的deviceToken写为参数。然后把刚才注册完成后Apple给你的文件aps_development.cer放入项目中,self.certificate= [[NSBundle mainBundlepathForResource:@"aps_development" ofType:@"cer"]。把这句修正下。然后就可以build了。

点击Push 按钮之后,就会发送Push到你的应用了。

目录
相关文章
|
3月前
|
机器学习/深度学习 PyTorch TensorFlow
是否有其他框架可以在iOS设备上进行机器学习?
是否有其他框架可以在iOS设备上进行机器学习?
21 1
|
3月前
|
存储 数据建模 iOS开发
iOS设备功能和框架: 什么是 Core Data,它在 iOS 中的作用是什么?
iOS设备功能和框架: 什么是 Core Data,它在 iOS 中的作用是什么?
32 1
|
3月前
|
定位技术 iOS开发
iOS设备功能和框架: 如何使用 Core Location 获取设备的位置信息?
iOS设备功能和框架: 如何使用 Core Location 获取设备的位置信息?
19 0
|
3月前
|
机器学习/深度学习 PyTorch TensorFlow
iOS设备功能和框架: 什么是 Core ML?如何在应用中集成机器学习模型?
iOS设备功能和框架: 什么是 Core ML?如何在应用中集成机器学习模型?
27 0
|
3月前
|
iOS开发
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
iOS设备功能和框架: 如何使用 Core Animation 创建动画效果?
101 0
|
6月前
|
iOS开发 开发者
Xcode7.2真机调试iOS 9.3的设备
Xcode7.2真机调试iOS 9.3的设备
108 0
|
7月前
|
iOS开发
iOS 获取设备-语言,版本,国家
iOS 获取设备-语言,版本,国家
96 0
|
7月前
|
网络安全 iOS开发 开发者
frida环境配置、以及如何脱壳iOS包并安装到非越狱设备-制作iOS任意App分身
frida环境配置、以及如何脱壳iOS包并安装到非越狱设备-制作iOS任意App分身
964 1
|
8月前
|
网络协议 数据安全/隐私保护 iOS开发
Cisco设备的简介和IOS的备份、恢复、升级
在使用路由器、交换机的过程中,lOS的备份,恢复和升级是网络管理员的重要工作。
201 0
|
11月前
|
网络安全 数据安全/隐私保护 iOS开发
push证书申请_iOS上架App Store
iOS APP需要推送通知,要用到iOS推送证书,分为测试调试用的iOS推送证书和上架到App Store的ios 推送证书!