IOS 远程推送 学习笔记 更新于2015年4月18日
2014-10-31 18:23
591 查看
APP上架简介:
1. 上传APP到IOS APP store上步骤,进入https://developer.apple.com/membercenter,输入开发者账户,密码。然后填写关于此APP的一些资源描述(包括APP图标和APP详细介绍)
2. 然后在xcode下面的window-------Organizer---------Archives-----Distribute-------Submit to the IOS App store -----next ------上传成功
这两天又在重新调试消息推送,一直收不到消息,最后才发现客户端APP打包的证书是企业证书(com.xx.*)。因为消息推送证书的appID 要与客户端得APPID唯一绑定,所以这边的APPID([b]com.xx.xx)要唯一。20150418日调试笔记[/b]
在苹果官网申请PUSH证书的时候有说明,截图如下:
![](http://img.blog.csdn.net/20150418101934072?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm9iaW5zb25fOTEx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
另外IOS8,注册消息推送的函数有所变化,具体如下在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
//IOS注册推送消息格式如下:
#ifdef HS_IOS_8_0_API_BAN
[application registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge
| UIRemoteNotificationTypeSound
| UIRemoteNotificationTypeAlert)];
#else
if ([[[UIDevice currentDevice] systemVersion] floatValue] > 7.99)
{
UIUserNotificationType remoteNotifyType = (UIUserNotificationTypeBadge
| UIUserNotificationTypeSound
| UIUserNotificationTypeAlert);
UIUserNotificationSettings *notificationSettings = [UIUserNotificationSettings settingsForTypes:remoteNotifyType
categories:nil];
[application registerUserNotificationSettings:notificationSettings];
[application registerForRemoteNotifications];
}
else
{
UIRemoteNotificationType remoteNotifyType = (UIRemoteNotificationTypeBadge
| UIRemoteNotificationTypeSound
| UIRemoteNotificationTypeAlert);
[application registerForRemoteNotificationTypes:remoteNotifyType];
}
#endif
}
费了九牛二虎之力,终于把苹果的消息中心搞定了,写此文记录下。
大家也可以看这篇文章,写的比较好:http://blog.csdn.net/daydreamingboy/article/details/7977098
我测试通过的PushMeBaby demo下载地址:http://download.csdn.net/detail/robinson_911/8106011
一。证书的申请与制作
0 .在制作证书前,需要使用钥匙串来制作CSR文件(物理层的描述文件)。具体如下图所示:
![](http://img.blog.csdn.net/20141031182651094?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm9iaW5zb25fOTEx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
此处别忘记选择将文件存储在磁盘。
用户电子邮件地址 常用名称 CA电子邮件地址 -----------这三项必填,才可以生成有效的CSR签名物理文件
![](http://img.blog.csdn.net/20141031182717442?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm9iaW5zb25fOTEx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
然后一路继续,我的文件存储在桌面,这时你会在桌面看到此文件CertificateSigningRequest.certSigningRequest
[b]1. P12文件制作[/b]
[b] 生成的cer文件只能单个电脑使用,倘若要多个电脑都想使用这个cer证书,就需要将cer文件转换为P12文件(个人交换文件---供多台电脑使用),具体如下:[/b]
[b]
![](http://img.blog.csdn.net/20150206094943862?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm9iaW5zb25fOTEx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
[/b]
![](http://img.blog.csdn.net/20150206095007980?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm9iaW5zb25fOTEx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2. 手机证书
(1)
登录:develop.apple.com 然后在会有这个页面(如下图):
然后点击左边的加号,然后一路继续,接着会让你导入刚刚生成的CSR文件(CertificateSigningRequest.certSigningRequest)
![](http://img.blog.csdn.net/20141031181355133?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm9iaW5zb25fOTEx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(2)经过一步骤后,会生成下面的页面,是手机端证书,下载下来。{chaofeng Liu (M7RK9P2TE7).cer }
![](http://img.blog.csdn.net/20141031181513398?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm9iaW5zb25fOTEx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(3)跟上面的步骤差不多,下面的页面是服务端的PUSH证书(服务器端使用---------此处是用pushmebaby这个demo来使用),下载下来aps_development.cer 文件
![](http://img.blog.csdn.net/20141031181532789?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm9iaW5zb25fOTEx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(4)这个是描述用得[b](授权文件)Provisioning
Profile,下载下来robinsonProvisioning.mobileprovision文件[/b]
(双击它,就可以导入手机工程(客户端)了。此处一定要先导入它robinsonProvisioning.mobileprovision),然后才会带出,显示手机端的证书(chaofeng Liu (M7RK9P2TE7).cer)
![](http://img.blog.csdn.net/20141031181920656?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm9iaW5zb25fOTEx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
二:iphone客户端配置:
在info中修改,Bundle identitifier 然后保证你所建的工程的bundle是更上面证书所匹配的
![](http://img.blog.csdn.net/20141031182111201?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm9iaW5zb25fOTEx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20141031184000689?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm9iaW5zb25fOTEx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
三:服务端的PushMeBaby demo
我测试通过的PushMeBaby demo下载地址:http://download.csdn.net/detail/robinson_911/8106011
强调下:这边工程里面的
aps_development.cer 文件为上面的2(3)的服务端push文件。
![](http://img.blog.csdn.net/20141031184801108?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm9iaW5zb25fOTEx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
当你本地配置OK的话,启动demo,在debug区域可以看到如下正确内容:
第一个参数为0,表示APNS返回正确。否则,本地配置有错误。
96表明发送的字节数为96个字节。
具体解释可以参考这篇文章:http://blog.csdn.net/a6472953/article/details/8604823
![](http://img.blog.csdn.net/20141031185158977?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm9iaW5zb25fOTEx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
点击Push,就可以把消息发送给APNS了,然后APNS会将消息转发给唯一token的手机客户端。
![](http://img.blog.csdn.net/20141031185418441?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm9iaW5zb25fOTEx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
四。从手机客户端程序取得全球唯一的Token,设置断点,打印Token。然后给上面的PushMeBaby demo使用
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSLog(@"%@",deviceToken);
}
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
}
打印结果如下:
2014-10-31 16:29:54.394 IPad[31932:707] <cc07a3ce ae0fe192 b1d4b846 0c1e308c 2de3214a 6846b8aa 052b3a4a 134f7a1b>
2014-10-31 16:29:55.048 IPad[31932:707] <cc07a3ce ae0fe192 b1d4b846 0c1e308c 2de3214a 6846b8aa 052b3a4a 134f7a1b>
OK
1. 上传APP到IOS APP store上步骤,进入https://developer.apple.com/membercenter,输入开发者账户,密码。然后填写关于此APP的一些资源描述(包括APP图标和APP详细介绍)
2. 然后在xcode下面的window-------Organizer---------Archives-----Distribute-------Submit to the IOS App store -----next ------上传成功
这两天又在重新调试消息推送,一直收不到消息,最后才发现客户端APP打包的证书是企业证书(com.xx.*)。因为消息推送证书的appID 要与客户端得APPID唯一绑定,所以这边的APPID([b]com.xx.xx)要唯一。20150418日调试笔记[/b]
在苹果官网申请PUSH证书的时候有说明,截图如下:
另外IOS8,注册消息推送的函数有所变化,具体如下在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
//IOS注册推送消息格式如下:
#ifdef HS_IOS_8_0_API_BAN
[application registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge
| UIRemoteNotificationTypeSound
| UIRemoteNotificationTypeAlert)];
#else
if ([[[UIDevice currentDevice] systemVersion] floatValue] > 7.99)
{
UIUserNotificationType remoteNotifyType = (UIUserNotificationTypeBadge
| UIUserNotificationTypeSound
| UIUserNotificationTypeAlert);
UIUserNotificationSettings *notificationSettings = [UIUserNotificationSettings settingsForTypes:remoteNotifyType
categories:nil];
[application registerUserNotificationSettings:notificationSettings];
[application registerForRemoteNotifications];
}
else
{
UIRemoteNotificationType remoteNotifyType = (UIRemoteNotificationTypeBadge
| UIRemoteNotificationTypeSound
| UIRemoteNotificationTypeAlert);
[application registerForRemoteNotificationTypes:remoteNotifyType];
}
#endif
}
费了九牛二虎之力,终于把苹果的消息中心搞定了,写此文记录下。
大家也可以看这篇文章,写的比较好:http://blog.csdn.net/daydreamingboy/article/details/7977098
我测试通过的PushMeBaby demo下载地址:http://download.csdn.net/detail/robinson_911/8106011
一。证书的申请与制作
0 .在制作证书前,需要使用钥匙串来制作CSR文件(物理层的描述文件)。具体如下图所示:
此处别忘记选择将文件存储在磁盘。
用户电子邮件地址 常用名称 CA电子邮件地址 -----------这三项必填,才可以生成有效的CSR签名物理文件
然后一路继续,我的文件存储在桌面,这时你会在桌面看到此文件CertificateSigningRequest.certSigningRequest
[b]1. P12文件制作[/b]
[b] 生成的cer文件只能单个电脑使用,倘若要多个电脑都想使用这个cer证书,就需要将cer文件转换为P12文件(个人交换文件---供多台电脑使用),具体如下:[/b]
[b]
[/b]
2. 手机证书
(1)
登录:develop.apple.com 然后在会有这个页面(如下图):
然后点击左边的加号,然后一路继续,接着会让你导入刚刚生成的CSR文件(CertificateSigningRequest.certSigningRequest)
(2)经过一步骤后,会生成下面的页面,是手机端证书,下载下来。{chaofeng Liu (M7RK9P2TE7).cer }
(3)跟上面的步骤差不多,下面的页面是服务端的PUSH证书(服务器端使用---------此处是用pushmebaby这个demo来使用),下载下来aps_development.cer 文件
(4)这个是描述用得[b](授权文件)Provisioning
Profile,下载下来robinsonProvisioning.mobileprovision文件[/b]
(双击它,就可以导入手机工程(客户端)了。此处一定要先导入它robinsonProvisioning.mobileprovision),然后才会带出,显示手机端的证书(chaofeng Liu (M7RK9P2TE7).cer)
二:iphone客户端配置:
在info中修改,Bundle identitifier 然后保证你所建的工程的bundle是更上面证书所匹配的
三:服务端的PushMeBaby demo
我测试通过的PushMeBaby demo下载地址:http://download.csdn.net/detail/robinson_911/8106011
强调下:这边工程里面的
aps_development.cer 文件为上面的2(3)的服务端push文件。
当你本地配置OK的话,启动demo,在debug区域可以看到如下正确内容:
第一个参数为0,表示APNS返回正确。否则,本地配置有错误。
96表明发送的字节数为96个字节。
具体解释可以参考这篇文章:http://blog.csdn.net/a6472953/article/details/8604823
点击Push,就可以把消息发送给APNS了,然后APNS会将消息转发给唯一token的手机客户端。
四。从手机客户端程序取得全球唯一的Token,设置断点,打印Token。然后给上面的PushMeBaby demo使用
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSLog(@"%@",deviceToken);
}
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
}
打印结果如下:
2014-10-31 16:29:54.394 IPad[31932:707] <cc07a3ce ae0fe192 b1d4b846 0c1e308c 2de3214a 6846b8aa 052b3a4a 134f7a1b>
2014-10-31 16:29:55.048 IPad[31932:707] <cc07a3ce ae0fe192 b1d4b846 0c1e308c 2de3214a 6846b8aa 052b3a4a 134f7a1b>
OK
相关文章推荐
- 杨小麦iOS学习笔记--远程推送
- 【iOS学习笔记】远程推送
- iOS学习笔记之远程推送、静默推送与自定义消息推送
- iOS开发笔记10:圆点缩放动画、强制更新、远程推送加语音提醒及UIView截屏
- iOS学习笔记27— IOS详细推送
- ios远程推送和python版push server相关笔记
- 【Git学习笔记】git fetch取回远程库的更新到本地仓库中
- iOS学习笔记32-iOS 9系统策略更新,使用微信SDK的开发者注意升级
- IOS学习笔记40——苹果推送机制APNs(一)
- ios学习笔记:ios推送细节
- iOS学习笔记31—appStore检查版本更新与从app里跳到appstore评论页面
- iOS学习爬坑记录14:自定义远程推送通知铃声(Custom Alert Sounds)
- IOS学习笔记—苹果推送机制APNs
- iOS学习笔记33-iOS 开发博客合集(持续更新中。。。)
- IOS学习笔记33—苹果推送机制APNs(一)
- IOS学习笔记40——苹果推送机制APNs(一)
- iOS学习笔记---利用NSThread实现异步更新UI和下载图片
- iOS学习笔记总结二(持续更新)
- iOS学习笔记27— IOS详细推送
- iOS学习笔记14-CocoaPods pod install/pod update更新慢的问题