ios远程推送的各种坑,啊吼吼吼~APNs

来源链接:http://blog.csdn.net/showhilllee/article/details/8631734?reload

远程推送写的最详细的就是这位啦,鉴于我反反复复搞了四五遍,我就不连字带图的转了,再也难不倒我╭(╯^╰)╮

主要写各种坑:

1.证书Certificates

开发或者发布ipa肯定都申请过证书,不过当时真是迷迷糊糊的,拿着公司账号各种晕,里面一堆的id,带*的不带*的,各种证书也不知道哪些能用哪些不能用。反正就是各种试,能用的赶紧用了再说。

在这里,先说一下,基本上刚拿到账户,对申请各种证书没什么概念的孩子,可以在里面各种操作,研究命名规则之类的,方便以后取名字。

但是,记住:一旦你搞懂了,一定要把哪些乌七八糟,各种test的证书都删掉,清除掉。证书不要钱啊,亲,随便删哟,不然,证书跟csr不配套,全部百搭。要知道csr是自己电脑生成的,一个没有保存妥当,不匹配,有证书也百搭。如果这些证书还发布了产品,就更晕菜了。

所以,搞清楚以后,在正式发版本前,把乱七八糟的证书都删了。保证开发者中心里的证书等干净整洁。

一般我们使用会用两种证书:1.development开发证书,2.production发布证书。可以简单的理解为debug和release版本需要的证书。

这两种证书是最多只能申请两份的。所以资源宝贵。申请完了,请把申请时使用的那个csr【钥匙串里创建的,证书申请文件】,和生成的ios_开头的cer文件妥善保管好。尤其是前面那个csr文件,因为后面的证书没了还能重新上开发者中心里下载。

安装证书,双击cer文件就行。但是,安装之前,先把你之前test时装进钥匙串里的那些乱七八糟的证书都删除掉。保持清爽。不然后面你再也不想翻看里面的细节。。。

好了,我建议同时申请开发证书和发布证书,这样他们对应同一个csr,日后方便管理维护。分别双击安装两个cer证书进钥匙串里。证书前面都会出现小三角,点开下面就是你的csr密钥。如果没有这个小三角,说明没有匹配的csr文件,基本上这个证书就不太好用了,可以删了,重新申请安装,或者在别的电脑上找到csr文件,*.certSigningRequest。拷贝回来。

2.App ID

这次删除安装了N遍,深刻体会了他的含义啊。T_T

以前不知道AppID的bundleID是做什么用的,全部用野id,就是*通配的,一般的开发,这也就够了。但是要想做APNs远程推送通知的话,就必须有唯一的BundleID字符串。而且这个字符串要和app的bundleID一致。

这里,我掉进了一个坑。我申请了app一致的ID,因为某些原因不能推送,所以我新建了一个test的app,然后把测试程序的bundleID改成了已经用于发布的这个正式的bundleID,后来推送ok了,我那个开心啊。

然后换回我要发布的app,运行,推送,接收。然后,我发现在通知中心里,通知app的名字居然是test!!!!!我死活改不回来了!!!!!!!

因为这是APNs的一个安全机制,就是为了防止有人伪造BundleID,截获推送通知的。于是我真正要用的app接收了,但是标题名是注册成功那次的app名称。而我注册成功的那次是test!坑爹。

好在,APNs的注册机制是针对一台一台的设备,每个设备只对应一个drive token的。所以,别的测试机还没来得急被我污染,⊙﹏⊙b。

我试了删掉App ID,重新建一个,bundle ID必须唯一,所以以前那个必须删除,但是删除重建一个后,没有任何改变。我才想起来APNs的注册是针对一个设备的。于是把设备还原了,再重新安装,推送,接收推送,然后推送通知里正常了。

app ID申请推送的两个SSl证书,这个没什么好说的,记得csr文件跟上面说的Certificates里面用的一致就ok了。然后双击cer文件,安装到钥匙串中。

3.provisioning profiles

配置文件,给Xcode用的。在此之前,肯定也测试过,安装过很多provisioning profiles。打开build setting->Code signing,点开provisong profiles,就可以看到目前安装上去的。博主我的xcode里面那叫乱七八糟啊,以前个人账户的,公司账户的,别的项目拿来试试看能不能用的。。。。趁此机会全部删掉了。。。

删除就在Xcode->preferences->accounts里面,选择账户,右下角有个View details,点开,里面就有目前安装过的provisioning profiles。可以清理了。

清理好了,就可以点击安装最新生成的配置文件了,现在,再看看xcode的build setting->Code signing里,很清爽,有木有。

4.生成ck.pem

导出.p12文件,这个文件一定是点击我上面Certificates里说的那个钥匙串里安装好证书后,三角形下面密钥那里右键导出。我曾经图简单,直接找密钥,导出,然后我发现单独导出的只有1k多,证书下这个导出的有3k多。(为什么我这么容易犯二~~~~(>_<)~~~~ )

然后生成chatcert.pem,chatkey.pem,两者加起来生成ck.pem。密码最好和p12的一致,好管理啊。

5.php pushMe.php

我就被源地址里那个博主的这个服务器文件坑死了。因为他通篇讲的是测试环境,偏偏php文件里用的是APNs正式地址,我又眼镜带坑,看了几遍没发现。于是客户端老是收不到。以为我证书哪里不对,就不停的删啊建啊,改啊,换app测试啊。。。折腾两天。。。

6.推送基于网络

远程推送在设备没联网时是收不到的,所以,做需求时也要看看有没有不合适的地方。而且推送也很不靠谱,有时候会掉推送。嗯嗯。。。

目前就先总结这些。发现不是在总结推送,完全是在总结各种证书申请及配置嘛。。。。。。

总之,没做出来前,听到手机里别的app推送消息,感觉都是在对我无情的嘲笑。如今做出来了,叮咚声真悦耳啊,我推我推我使劲推送啊,啊哈哈哈哈~不许嫌烦(⊙o⊙)哦~~~

时间: 2024-10-09 18:07:53

ios远程推送的各种坑,啊吼吼吼~APNs的相关文章

IOS远程推送

一.关于推送通知 推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能.是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的.一般说来,当要显示消息或下载数据的时候,通知是由远程服务器(程序的提供者)发送,然后通过苹果的推送通知服务(Apple Push Notification Service,简称apns)推送到设备的程序上. 推送的新消息可能是一条信息.一项即将到期的日程或是一份远程服务器上的新数据.在系统上展现的时候,可以显示警告信息或

iOS 远程推送 根据后台推送内容的不同跳转指定页面

转发自:http://www.jianshu.com/p/4531bd6e3a01 iOS 远程推送,根据后台推送内容的不同, 跳转指定页面 我目前的需求是总体分为两类: 1:私信.关注.点赞一类,只需跳转到对应的tabbar 中的某一项 2:每日精品文章项目推送,分两个子类 (1)如果当前已经打开 文章项目页面,则直接刷新,不推出新页面 (2)如果当前未打开此页面,则push出新的文章项目页面 iOS 推送情况分为 应用未启动的 情况: 打开应用 ,推送信息 会通过 - (BOOL)appli

iOS远程推送原理及实现过程

推送通知,是现在的应用必不可少的功能.那么在 iOS 中,我们是如何实现远程推送的呢?iOS 的远程推送原理又是什么呢?在做 iOS 远程推送时,我们会遇到各种各样的问题.那么首先让我们准备一些做推送需要的东西.我们需要一个付费的苹果开发者账号(免费的不可以做远程推送),有了开发者账号,我们可以去苹果开发者网站,配置自己所需要的推送的相关证书.然后下载证书,供我们后面使用,详细的证书配置过程,我们下面再说. 首先我们要说说iOS推送通知的基本原理: 苹果的推送服务通知是由自己专门的推送服务器AP

iOS 远程推送的实现

iOS的推送可以用下图简单的概括: 这里 Provider 是指某个应用的Developer,当然如果开发者使用AVOS Cloud的服务,把发送消息的请求委托给我们,那么这里的Provider就是AVOS Cloud的推送服务程序了.上图可以分为三步: 第一步:AVOS Cloud推送服务程序把要发送的消息.目的设备的唯一标识打包,发给APNs. 第二步:APNs在自身的已注册Push服务的应用列表中,查找有相应标识的设备,并把消息发送到设备. 第三步:iOS系统把发来的消息传递给相应的应用程

iOS 远程推送的详细配置

首先,来说一下苹果的推送机制.顾名思义,推送,是指服务器向客户端发送消息,那么在iOS中,应用是被后台挂起的,并不能一直连接网络,那么服务器怎么才能把消息发送到客户端呢?这就用到推送,苹果的推送机制,是只能由APNS发送推送通知,所以你自己的后台服务器想给客户端推送通知,得把要推送的内容发送给APNS. 说到这里,如果还不了解苹果的推送机制,可以自行查看资料.总之整体的流程就是:APP启动的时候,获取本设备的device_token,然后把这个device_token告诉你自己的服务器,服务器拿

iOS远程推送之友盟Push

入职后的一个任务,就是做远程推送,听老大说用的是友盟Push.所以就看了一下友盟push,具体的集成以及证书的生成请参照这里.具体的就不再多说了,主要是自己重新封装了一下UMessage,具体的内容如下: // // ZGUmessagePush.h // NotePad // // Created by zhanggui on 15/10/19. // Copyright © 2015年 xiaoguizi. All rights reserved. // #import <Foundatio

iOS远程推送,从机制到实现,尽量详细

本人第一次写博客,写的不好的地方大家请见谅. 本文主要参考了http://blog.csdn.net/showhilllee/article/details/8631734,感谢showhilllee详细的讲解.因为在做的过程中有些自己的理解和变化,所以自己再写一遍关于推送的详细博客. 本文分为四部分介绍: 一.解释APNS远程推送 二.配置推送的证书 三.导出自己服务器可用的证书 四.代码实现设备注册推送.获取推送消息 好了,现在开始正式讲解推送. 一.首先上一个老图,苹果很早就给大家的,推送

iOS 远程推送通知 详解

1: ios本地通知和远程通知 http://wangjun.easymorse.com/?p=1482 2: 苹果远程通知服务申请激活例图 (外国佬写的.) http://mobiforge.com/developing/story/programming-apple-push-notification-services 3:书籍参考:iPhone 开发秘籍 第16章 推送通知. 好了,进入正文: 首先是申请证书的网址 https://developer.apple.com/ios/manag

IOS远程推送证书的制作步骤

今天还在看环信的使用方法,在环信的官网上发现了这组制作远程推送证书的一组图片,正好之前本人没有写过关于远程证书的笔记,这里要写一篇博文,整理一下远程推送证书的制作流程,尽管如此,本篇博文依然是作者原创,方便自己学习.参考使用.(声明本文的图片全部来自网络,是为了节省时间) (1)打开开发者中心,并登陆自己的开发者账号(或者公司的开发者账号) (2)从Member Center进入Certificates, Identifiers & Profiles (3)选择要制作的证书为推送证书 对于开发环