- 浏览: 643835 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
lizaochengwen:
网络请求碰到的中文乱码使用encodeURL吧- (NSStr ...
iPhone开发/iPad开发 中文乱码问题 -
hhb19900618:
还是没弄懂怎么解决了中文乱码? 正确代码能重写贴出吗
iPhone开发/iPad开发 中文乱码问题 -
zhengjj_2009:
我的理解是讲ipa文件解压缩之后再重新打包,已经破坏了签名,所 ...
xcodebuild和xcrun实现自动打包iOS应用程序 -
zhengjj_2009:
我参考你的“ 从ipa格式的母包生成其它渠道包的shell脚本 ...
xcodebuild和xcrun实现自动打包iOS应用程序 -
同一片天空:
问题果然解决了
iOS 搭建 XMPP实现环境
这是一篇编译的文章,内容均出自Parse.com的iOS开发教程,同时作者还提供了视频讲解。本文将带领开发者一步一步向着iOS推送通知的深处探寻,掌握如何配置iOS推送通知的奥义。
介绍一点点背景资料
众所周知,使用推送通知是一个很棒的、给应用添加实时消息通知的方式。这样做的结局是,开发者和用户之间,彼此永远保持着一种令人愉悦的亲密关系。
然而不幸的是,iOS的推送通知并非那么容易驾驭,往往会搞的开发者精疲力尽,灰心丧气,无法持久。现在,救星来了!只要通读本教程,你就能摆脱这些烦恼,成为一名活力四射,精壮(Robust I mean!)的开发者。
正式开始之前的准备工作
我们先来从Apple Developer网站上创建一个关联App ID和开发供应配置文件的SSL证书,来开始这段美好的教程。接着,我们看看在iOS下是如何在解析网站(Parse website)配置解析程序(Parse app)的。最后,我们把这些理论付诸实践,创建一个带有推送功能的App,并且将消息推到用户。
在开始这段美好旅程之前,大家一定要注意iOS模拟器是不支持推送的,所以你必须想办法找一台真机过来。还有就是要有苹果开发者协议,之后才能在真机上面进行开发和测试。
创建SSL证书
首先,需要在苹果开发者网站上创建一个App ID以及关联的SSL证书,有了这个证书,解析服务器才能将找到你的App ID,继而将通知推送到该应用。
创建一个证书请求
首先的首先,我们需要有一个证书签名请求文件,之后创建SSL证书才有意义。创建文件的方法如下:
1.在Mac上运行钥匙串访问(keychain)
2.选择钥匙串访问 > 证书助理 > 从证书颁发机构中请求一个证书
3.输入你的名字和邮件地址,CA邮件地址默认就可以,不要试图去进行任何改动。
4.选择“保存到硬盘”,这样就会将刚创建的证书请求文件下载到电脑桌面上了。
创建并调教一个App ID
每个安装在你开发者设备上的iOS程序都需要一个独有的App ID,方便起见,App ID以反向路径规则命名,形如com.parseSampleApp,但是一定要注意App ID里不能包含星号("*")。创建步骤如下:
1.登陆网站Apple Developer Member Center并进入iOS Provisioning Portal。
2.从左边栏里点击App IDs。
3.选择New App ID,然后创建一个新的App ID。一定要确保Bundle Identifier一栏中没有星号。
4.在你的App ID下面找到Configure,选中。
5.将“Enable for Apple Push Notification service”勾选上,然后点击Development Push SSL Certificate下面的Configure,然后会出现Apple Push Notification service SSL Certificate Assistant设置向导。
6.点击Continue继续,然后点击Choose File,选中刚创建见的.certSigningRequest文件。
7.点击Generate开始生成,然后点击Download下载生成的SSL证书。
8.通过keychain程序来安装下载好的SSL证书。
9.接着在“我的证书”选项先面,找到你刚才安装名称形如“Apple Development IOS Push Services: xxx”的证书。
10.双击证书,选择“导出”,导出后的文件后缀名为.p12。这个时候千万注意!出现密码提示的时候一定不要添任何东西。
这里值得注意的一点就是,至此我们只是将应用的推送通知功能在开发模式中开启了,所以应用开始正式发布之前,一定记得要将第四步到第九步的流程重新走一遍,并将第五步中的“Development Push SSL Certificate”改成“Production Push SSL Certificate”。这样就完美了。
创建一个Provisioning Profile(配置简介)
Provisioning Profile会验证运行所开发应用的设备。而且不管你是新建一个App ID还是去修改现成的,都得重新生成并安装一遍Provisioning Profile。步骤如下:
1.在iOS Provisioning Portal中选择Provisioning变迁。
2.点击New Profile
3.填好对应的信息,确保一下三项(developer certificate、上面刚创建好的App ID以及用于测试的设备)都没有遗漏,全都选中。
4.点击Actions一栏下面的Download按钮下载生成好的Provisioning Profile。
5.双击下载好的文件,默认是由iPhone Configuration Utility程序开。
配置Parse App
要想在推送通知中使用Parse功能,必须将此项特性设置成开启状态,然后将上面创建好的推送SSL证书上传上去。步骤如下:
1.在Parse website上找到你的Parse app,然后选择Settings标签页。
2.在iOS Push Notification Settings下面,点击Choose File,然后将之前用keychain导出的.p12文件上传上去。
3.如果希望用户能够发送推送通知,我们需要将Client push enabled?选项中的Yes勾选上。这个功能对于像即时聊天的软件非常有用,我们现在将它勾选上,当然开发者需要自行决定是否要开启这项功能。
4.点击Save保存。
至此,所有的前提条件都搞完了,马上进入最激动人心的创建一个具备推送通知应用的环节了,喝口水,开搞。
创建一个具备推送通知的应用
首先,我们需要先对Xcode项目进行一些设置,确保App ID和provisioning profile都被设置成良好的状态。做开发吗,
1.在Supporting Files文件夹下选中ProjectName-Info.plist,对右侧视图中的Bundle Identifier选项进行修改,和你自己创建的App ID保持一致(形如:com.parseSampleApp)。
2.在左侧的菜单中选中刚创建的project文件,在下面找到Build Settings然后搜索Code Signing Identity。
3.将对应provisioning profile的所有的值全部设置好。
4.选择左手边Targets下面的项目名称,再次找到Build Settings,来到Code Signing Identity区域,确保所有的值都和新的provisioning profile保持一致。
代码环节
接下来就开始进入编程模式了。我们需要对应用程序代理(app delegate)进行少量的修改,从而使得我们的应用可以接受到推送通知。步骤如下:
1.注册设备需要在app delegate的[application:didFinishLaunchingWithOptions:]方法中调用[application registerForRemoteNotificationTypes:]方法,代码如下:
2.一旦成功,以上方法会在app delegate中执行回调方法[application:didRegisterForRemoteNotificationsWithDeviceToken:] 。我们需要实现这个方法,用它来告知Parse我们的设备信息。代码如下:
3.广播频道(broadcast channel)用于同时联系到所有用户,所以很多时候开发者可能需要自己创建一些更精准化的频道。一旦推送通知被接受但是应用不在前台,就会被显示在iOS推送中心。反之如果应用刚好处于活动状态,则交于应用去自行处理。具体我们可以在app delegate中实现[application:didReceiveRemoteNotification]方法。一下示例代码只是简单的将这一需求交由Parse去处理,Parse会创建一个模态警报显示推送内容。
好了,现在开始在你的iOS设备上运行一下,一切顺利的话,就可以看到从用户到推送通知之间的一条模态警报请求许可。
发送推送通知
从Parse website发送
Parse允许你从Parse website发送推送通知,API和SDK均可。找到Parse app,选择Push Notifications标签,你可以在文本框里添加一条消息,然后广播给所以用户。你可以使用Parse web API通过发送一个POST请求来发送推送到任何频道。以下示例是一条广播通知,内容是“Hello World”,使用curl进行发送。
从应用发送
从应用发送需要开启Parse app中的Client push enabled功能。实现从应用发送推送通知的方式多种多样,你可以在iOS API documentation中找到一切。
好了。教程就到这里结束了,预祝大家开发顺利。如果大家有好的应用,可以联系 @CSDN移动 或者发送邮件到 yangpf@csdn.net ,向我们进行推荐。
介绍一点点背景资料
众所周知,使用推送通知是一个很棒的、给应用添加实时消息通知的方式。这样做的结局是,开发者和用户之间,彼此永远保持着一种令人愉悦的亲密关系。
然而不幸的是,iOS的推送通知并非那么容易驾驭,往往会搞的开发者精疲力尽,灰心丧气,无法持久。现在,救星来了!只要通读本教程,你就能摆脱这些烦恼,成为一名活力四射,精壮(Robust I mean!)的开发者。
正式开始之前的准备工作
我们先来从Apple Developer网站上创建一个关联App ID和开发供应配置文件的SSL证书,来开始这段美好的教程。接着,我们看看在iOS下是如何在解析网站(Parse website)配置解析程序(Parse app)的。最后,我们把这些理论付诸实践,创建一个带有推送功能的App,并且将消息推到用户。
在开始这段美好旅程之前,大家一定要注意iOS模拟器是不支持推送的,所以你必须想办法找一台真机过来。还有就是要有苹果开发者协议,之后才能在真机上面进行开发和测试。
创建SSL证书
首先,需要在苹果开发者网站上创建一个App ID以及关联的SSL证书,有了这个证书,解析服务器才能将找到你的App ID,继而将通知推送到该应用。
创建一个证书请求
首先的首先,我们需要有一个证书签名请求文件,之后创建SSL证书才有意义。创建文件的方法如下:
1.在Mac上运行钥匙串访问(keychain)
2.选择钥匙串访问 > 证书助理 > 从证书颁发机构中请求一个证书
3.输入你的名字和邮件地址,CA邮件地址默认就可以,不要试图去进行任何改动。
4.选择“保存到硬盘”,这样就会将刚创建的证书请求文件下载到电脑桌面上了。
创建并调教一个App ID
每个安装在你开发者设备上的iOS程序都需要一个独有的App ID,方便起见,App ID以反向路径规则命名,形如com.parseSampleApp,但是一定要注意App ID里不能包含星号("*")。创建步骤如下:
1.登陆网站Apple Developer Member Center并进入iOS Provisioning Portal。
2.从左边栏里点击App IDs。
3.选择New App ID,然后创建一个新的App ID。一定要确保Bundle Identifier一栏中没有星号。
4.在你的App ID下面找到Configure,选中。
5.将“Enable for Apple Push Notification service”勾选上,然后点击Development Push SSL Certificate下面的Configure,然后会出现Apple Push Notification service SSL Certificate Assistant设置向导。
6.点击Continue继续,然后点击Choose File,选中刚创建见的.certSigningRequest文件。
7.点击Generate开始生成,然后点击Download下载生成的SSL证书。
8.通过keychain程序来安装下载好的SSL证书。
9.接着在“我的证书”选项先面,找到你刚才安装名称形如“Apple Development IOS Push Services: xxx”的证书。
10.双击证书,选择“导出”,导出后的文件后缀名为.p12。这个时候千万注意!出现密码提示的时候一定不要添任何东西。
这里值得注意的一点就是,至此我们只是将应用的推送通知功能在开发模式中开启了,所以应用开始正式发布之前,一定记得要将第四步到第九步的流程重新走一遍,并将第五步中的“Development Push SSL Certificate”改成“Production Push SSL Certificate”。这样就完美了。
创建一个Provisioning Profile(配置简介)
Provisioning Profile会验证运行所开发应用的设备。而且不管你是新建一个App ID还是去修改现成的,都得重新生成并安装一遍Provisioning Profile。步骤如下:
1.在iOS Provisioning Portal中选择Provisioning变迁。
2.点击New Profile
3.填好对应的信息,确保一下三项(developer certificate、上面刚创建好的App ID以及用于测试的设备)都没有遗漏,全都选中。
4.点击Actions一栏下面的Download按钮下载生成好的Provisioning Profile。
5.双击下载好的文件,默认是由iPhone Configuration Utility程序开。
配置Parse App
要想在推送通知中使用Parse功能,必须将此项特性设置成开启状态,然后将上面创建好的推送SSL证书上传上去。步骤如下:
1.在Parse website上找到你的Parse app,然后选择Settings标签页。
2.在iOS Push Notification Settings下面,点击Choose File,然后将之前用keychain导出的.p12文件上传上去。
3.如果希望用户能够发送推送通知,我们需要将Client push enabled?选项中的Yes勾选上。这个功能对于像即时聊天的软件非常有用,我们现在将它勾选上,当然开发者需要自行决定是否要开启这项功能。
4.点击Save保存。
至此,所有的前提条件都搞完了,马上进入最激动人心的创建一个具备推送通知应用的环节了,喝口水,开搞。
创建一个具备推送通知的应用
首先,我们需要先对Xcode项目进行一些设置,确保App ID和provisioning profile都被设置成良好的状态。做开发吗,
1.在Supporting Files文件夹下选中ProjectName-Info.plist,对右侧视图中的Bundle Identifier选项进行修改,和你自己创建的App ID保持一致(形如:com.parseSampleApp)。
2.在左侧的菜单中选中刚创建的project文件,在下面找到Build Settings然后搜索Code Signing Identity。
3.将对应provisioning profile的所有的值全部设置好。
4.选择左手边Targets下面的项目名称,再次找到Build Settings,来到Code Signing Identity区域,确保所有的值都和新的provisioning profile保持一致。
代码环节
接下来就开始进入编程模式了。我们需要对应用程序代理(app delegate)进行少量的修改,从而使得我们的应用可以接受到推送通知。步骤如下:
1.注册设备需要在app delegate的[application:didFinishLaunchingWithOptions:]方法中调用[application registerForRemoteNotificationTypes:]方法,代码如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { ... // Register for push notifications [application registerForRemoteNotificationTypes: UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound]; ... }
2.一旦成功,以上方法会在app delegate中执行回调方法[application:didRegisterForRemoteNotificationsWithDeviceToken:] 。我们需要实现这个方法,用它来告知Parse我们的设备信息。代码如下:
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)newDeviceToken { [PFPush storeDeviceToken:newDeviceToken]; // Send parse the device token // Subscribe this user to the broadcast channel, "" [PFPush subscribeToChannelInBackground:@"" block:^(BOOL succeeded, NSError *error) { if (succeeded) { NSLog(@"Successfully subscribed to the broadcast channel."); } else { NSLog(@"Failed to subscribe to the broadcast channel."); } }]; }
3.广播频道(broadcast channel)用于同时联系到所有用户,所以很多时候开发者可能需要自己创建一些更精准化的频道。一旦推送通知被接受但是应用不在前台,就会被显示在iOS推送中心。反之如果应用刚好处于活动状态,则交于应用去自行处理。具体我们可以在app delegate中实现[application:didReceiveRemoteNotification]方法。一下示例代码只是简单的将这一需求交由Parse去处理,Parse会创建一个模态警报显示推送内容。
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { [PFPush handlePush:userInfo]; }
好了,现在开始在你的iOS设备上运行一下,一切顺利的话,就可以看到从用户到推送通知之间的一条模态警报请求许可。
发送推送通知
从Parse website发送
Parse允许你从Parse website发送推送通知,API和SDK均可。找到Parse app,选择Push Notifications标签,你可以在文本框里添加一条消息,然后广播给所以用户。你可以使用Parse web API通过发送一个POST请求来发送推送到任何频道。以下示例是一条广播通知,内容是“Hello World”,使用curl进行发送。
curl -X POST "https://api.parse.com/1/push" -H "Content-Type: application/json" \ --data '{"key":"your_push_master_key", "channel":"", "type":"ios",\ "data":{"alert":"Hello World!"}}'
从应用发送
从应用发送需要开启Parse app中的Client push enabled功能。实现从应用发送推送通知的方式多种多样,你可以在iOS API documentation中找到一切。
// Broadcast "Hello World" [PFPush sendPushMessageToChannelInBackground:@"" withMessage:@"Hello World!"];
好了。教程就到这里结束了,预祝大家开发顺利。如果大家有好的应用,可以联系 @CSDN移动 或者发送邮件到 yangpf@csdn.net ,向我们进行推荐。
发表评论
-
SOCK_STREAM和SOCK_DGRAM
2015-07-23 20:08 1566sock_stream 是有保障的(即能保证数据正确传送到 ... -
SOCKET bind INADDR_LOOPBACK和INADDR_ANY的区别
2015-07-23 19:49 2003今天写程序时候,服务器端启动了,然后客户端总是连接不上,con ... -
htons()
2015-07-23 19:26 532在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺 ... -
使用symbolicatecrash分析crash文件
2015-03-10 11:32 1118原文 http://www.cnblogs.com/ning ... -
程序设计中的计算复用(Computational Reuse)
2015-02-10 10:18 607从斐波那契数列说起 ... -
didReceiveMemoryWarning
2015-02-09 16:11 487IPhone下每个app可用的内存是被限制的,如果一个app使 ... -
iOS开发中怎么响应内存警告
2015-02-09 16:08 605好的应用应该在系统内存警告情况下释放一些可以重新创建的资源。在 ... -
ASIHTTPRequest多次重复请求的问题
2014-12-17 14:34 590在一个车票订购的项目中,点击一次订购,却生成了2次订单,通过抓 ... -
从 CloudKit 看 BaaS 服务的趋势
2014-09-26 11:51 690从 6 月份 WWDC 苹果发布 ... -
ios编程--AVCapture编程理解
2014-09-26 11:03 8710、媒体采集的几个东西。这里所需要明白的是,在这个流程中,这里 ... -
NSURLProtocol
2014-09-25 10:42 7591、http://nshipster.com/nsurlpro ... -
关于iOS8的extension插件
2014-09-25 10:41 1216关于iOS8的extension插件,有兴趣的同学可以参考一下 ... -
【转】ios app在itunesConnect里面的几种状态
2014-08-05 10:34 1090Waiting for Upload (Yellow) Ap ... -
[转]iOS Dev (45) iOS图标与切片处理工具Prepo
2014-02-07 17:02 987iOS Dev (45) iOS图标与切片处理工具Prepo ... -
phoneGap开发IOS,JS调用IOS方法/phoneGap插件开发
2014-01-13 17:49 1206前沿 废话不说phoneGap是什么不多介绍,官方网站: h ... -
如何在IOS平台下搭建PhoneGap开发环境(PhoneGap2.5)
2014-01-13 15:23 699由于在下最近在做基于HTML5的跨平台移植,搭建环境的时候着实 ... -
xcode 4 制作静态库详解
2013-12-20 18:27 482最近在做Apple的IOS开发,有开发静态库的需求,本身IOS ... -
【翻译】ios教程-创建静态库
2013-12-20 18:19 3010作者:shede333 主页:htt ... -
封装自己的控件库:iPhone静态库的应用
2013-12-20 17:03 510由于iPhone 控件的极度匮乏和自定义组件在重用上的限制,在 ... -
iphone:使用NSFileManager取得目录下所有文件(遍历所有文件)
2013-11-18 17:56 823From:http://note.sdo.com/u/xiao ...
相关推荐
本文将带领开发者一步一步向着iOS推送通知的深处探寻,掌握如何配置iOS推送通知的奥义。众所周知,使用推送通知是一个很棒的、给应用添加实时消息通知的方式。这样做的结局是,开发者和用户之间,彼此永远保持着一种...
详细讲解ios推送的中文文档。想用推送的同学可以照着文档做了,保证看得懂。
iOS本地推送与远程推送详解
本篇文章详细介绍iOS远程消息推送的机制和实现原理,介绍的很详细,适合初学者来学习。
不管是本地通知还是远程通知无时不刻的在影响着我们的用户体验,以致于在iOS10的时候苹果对推送大规模重构,独立了已 UserNotifications 和 UserNotificationsUI 两个单独的framework,可见重要性一斑。针对于WWDC18...
iOS远程推送,详解,有demo示范,一下都能看懂,还有详细的注释
实际上,在很多移动操作系统中,官方都为其提供了推送方案,例如,Google的云推送、IOS、Windows Phone7/8也都提供了类似的推送方案。不过这些推送方案的服务器都在国外,有一些推送服务(如Goo
一、iOS推送通知简介 众所周知苹果的推送通知从iOS3开始出现, 每一年都会更新一些新的用法. 譬如iOS7出现的Silent remote notifications(远程静默推送), iOS8出现的Category(分类, 也可称之为快捷回复), iOS9出现的...
主要介绍了iOS13即将到来,iOS推送DeviceToken适配方案详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
推送用第三方推送,也就是在客户端建一个广播接收器,当服务器发送消息时发送到信鸽,信鸽再发送一次,广播接受器接受下; 我实现的功能比较简单,当app在运行状态时,会在主页展示一个弹窗展示推送的消息;如果app...
本代码是著名的PushMeBaby demo ,刚刚测试通过。希望可以帮助到可以帮助的人。 具体的远程推送详解可以参考我的博客:http://blog.csdn.net/robinson_911/article/details/40658663
主要为大家详细介绍了iOS10推送开发教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
如果用户不同意则下次打开程序也不会弹出该提示框,需要用户到设置里面设置。一共有三种提示类型: UIUserNotificationTypeBadge:应用图标右上角的信息提示 UIUserNotificationTypeSound:播放提示音 ...
CIM是一套基于mina或netty框架下的推送系统,或许有一些企业有着自己一套即时通讯系统的需求,那么CIM为您提供了一个解决方案,目前CIM支持websocket,android,ios,桌面应用,系统应用等多端接入支持,可应用于移动...