iOS设备远程Push功能详解

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

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

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

1.首先我们需要一个测试使用的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 mainBundle] pathForResource:@"aps_development" ofType:@"cer"]。把这句修正下。然后就可以build了。

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

时间: 2024-10-29 12:18:54

iOS设备远程Push功能详解的相关文章

iOS 7.1新功能详解

最新iOS7.1新功能汇总 iOS 7.1作为一次从iOS 7.0.4的一个较大版本提升,带来了许多项目的优化与改进.针对不少果粉用户比较关心的iOS7.1新功能以及是否影响后期越狱等问题,本文将会与大家做个基本介绍,还不了解苹果最新iOS 7.1系统的朋友,不妨一起来看看: 一.iOS7.1新功能汇总 1.增加黑灰色键盘背景设置 在iOS 7设置中的辅助设置中,我们可以看到iOS 7.1新增了键盘颜色切换功能,可以将之前的灰白色背景切换成黑灰色,用户体验方面更为出色,如下图所示: 增加黑灰色键

iOS之UI--使用SWRevealViewController实现侧边菜单功能详解实例

使用SWRevealViewController实现侧边菜单功能详解 下面通过两种方法详解SWRevealViewController实现侧边菜单功能: 1.使用StoryBoard实现 2.纯代码实现 前言:手机屏幕始终有限,如何在有限的展示空间提供便捷的导航入口呢?Facebook的App设计了一个可以从屏幕侧边滑出的导航,这一设计模式引得各大主流 App尽相模仿.一时间,Path,Mailbox,Gmail都采用了这种设计.Github 上也有很多侧栏导航的解决方案,这里我们使用John的

iOS中UIWebView的使用详解

iOS中UIWebView的使用详解 一.初始化与三种加载方式      UIWebView继承与UIView,因此,其初始化方法和一般的view一样,通过alloc和init进行初始化,其加载数据的方式有三种: 第一种: - (void)loadRequest:(NSURLRequest *)request; 这是加载网页最常用的一种方式,通过一个网页URL来进行加载,这个URL可以是远程的也可以是本地的,例如我加载百度的主页: ? 1 2 3     UIWebView * view = [

iOS百度地图简单使用详解_IOS

百度地图 iOS SDK是一套基于iOS 5.0及以上版本设备的应用程序接口,不仅提供展示地图的基本接口,还提供POI检索.路径规划.地图标注.离线地图.定位.周边雷达等丰富的LBS能力 . 今天主要介绍以下接口 基础地图 POI检索 定位 首先配置环境 1.自动配置.framework形式开发包(使用CocoaPods)<推荐> 2.手动配置.framework形式开发包 特别注意: (API里有很多注意点,大家可以具体去看.但是我说的后两点少其中一个都会失败,第一点是有需求的话,必须加上)

10个实用的电脑运行命令功能详解

  10个实用的电脑运行命令功能详解 要使用命令操作,最基本的是先需要如何打开运行操作框,主要有2种方法: 1.最快捷方法:使用 Windows + R 组合快捷键,快速呼出命令操作窗口. 2.常用方法:点击桌面左下角的"开始"然后找到并点击打开→"运行". 使用方法,打开命令操作窗口后,只要输入输入命令,然后按回车键或点击"确定"即可允许命名,实现各种功能. 了解如何打开命名操作框之后,接下来就来分享一下实用的命令吧,使用命令可以实现很多功能,

iOS UITableView 与 UITableViewController实例详解_IOS

很多应用都会在界面中使用某种列表控件:用户可以选中.删除或重新排列列表中的项目.这些控件其实都是UITableView 对象,可以用来显示一组对象,例如,用户地址薄中的一组人名. UITableView 对象虽然只能显示一行数据,但是没有行数限制. •编写新的应用程序 JXHomepwner 应用 创建应用,填写基本信息 •UITableViewController UITableView 是视图.我们知道 模型-视图-控制器(Model-View-Controller),他是我们必须遵守的一种

iOS开发之表视图详解_IOS

本文详细介绍了表视图的用法.具体如下: 概述 表视图组成 表视图是iOS开发中最重要的视图,它以列表的形式展示数据.表视图又一下部分组成: 表头视图:表视图最上边的视图 表脚视图:表视图最下边的视图 单元格(cell):表视图中每一行的视图 节(section):由多个单元格组成,应用于分组列表 节头 节脚 表视图的相关类 UITableView继承自UIScrollView,且有两个协议:UITableViewDelegate和UITableViewDataSource.此外UITableVi

ASP中利用OWC控件实现图表功能详解

控件|图表|详解 在ASP中利用OWC(Office Web Components)控件可轻松实现各种图表功能,如饼图,簇状柱型图,折线图等. 在下面的代码中我详细的给出了饼图,簇状柱型图,折线图的使用方法.OWC的更多功能,属性可参加MSOWCVBA.chm帮助文件(在office 2000的文件夹下大家自己找). testOWC.asp <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <

System.Data.DataTable计算功能详解

using System; using System.ComponentModel; using System.Data; using System.Windows.Forms; namespace WindowsApplication1 ...{ public partial class Form1 : Form ...{ public Form1() ...{ InitializeComponent(); } private void button1_Click(object sender,