第一次记录:
打开xcode------点击(直接用快捷键command +(《,)键也行)
然后出现页面,点击peference,出现页面
点击view Details,出现如下页面
选中一个,右击show in finder,出现
选择你不需要的删除,即可
常见问题
问题1,有时候,我们下载证书,点击输入电脑密码后,发现在钥匙串中发现不了私钥。怎么解决的。我也不知道什么原因,我点击登录后,在往下面点就发现了 那个私钥了。
点击登录钥匙串,然后,点击下面种类里面的证书,然后拉进去,或者叫拖进去即可。
问题2,证书提示"此证书的签发者无效",这个问题,参照了,网络文章。简单就是双击然后,编辑始终信任。
文章地址:http://jingyan.baidu.com/article/49711c617a540cfa441b7c86.html
问题3,开发证书的简单生成过程。
可以参照如下图
http://www.myexception.cn/operating-system/1882765.html
关于证书的一些笔记和疑问:
创建步骤,
第一步,创建的一个appid名字和id,id名字必须和项目的id相同,因为,我们不论在云信和极光推送,我们都要输入我们app的id,如果证书的名字和我们在云信、极光后台的应用的id不一样,那么就会提示报错说证书名字不匹配。
第二步可以有两种选择,一种直接点击证书id进行编辑,可以创建push 和dev证书,并可以进行下载,或者revoke,注意编辑的时候一定要选中push notification,中间有一个签名文件的创建,签名文件的邮箱和名字不可缺少,这个名字以后就是证书私钥的名字
另一种点击证书栏,分别创建dev和push证书,跟id建立连接
第三步,缺乏第三步的结果导致dev证书不能推送,相反product证书可以,我于是推断,线上无需描述文件,而线下需要。具体怎么做呢,具体生成一个描述文件,这个文件名字可以任意,但是id必须选择之前创建的id.这样的推送证书可以了。
总结;证书和描述文件都不能少,证书和描述文件都必须跟id建立连接。
导出的时候一定只能导出证书而不是钥匙文件。
钥匙串不能乱乱删,否则可能出问题,私钥不见的原因,是因为我把签名文件删掉了,那个就是私钥呢,知道不
开发环境需要描述文件,但是线上环境不需要猜测 待验证
同类文章参考:
http://www.cnblogs.com/cywin888/p/3263027.html
http://www.jianshu.com/p/8e967c1d95c2
http://blog.csdn.net/phunxm/article/details/42685597
https://leancloud.cn/docs/ios_push_cert.html#创建_Universal_推送证书
第二次记录:
1、苹果的网一般比较慢。
2、证书可以用文本编辑、vim打开,通过vim打开可以看到这个证书是开发证书还是生产证书,这个一个检测的过程。
3、证书本质上是一套的加密术。
4、不能为证书的id是※的创建证书,即使创建了那样也会收不到,创建证书时会有两种格式:有通配符和无通配符,要选择没通配符的,具体的。
5、直接从id处创建证书更容易,流程分两步:制作csr 和制作证书。
6、csr文件本质上是什么
答:csr 的全称是Cerificate Signing Request即证书请求文件,CSR是Cerificate Signing Request的英文缩写,即证书请求文件,也就是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥Private Key的同时也生成证书请求文件CSR,证书申请者只需要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的SSL证书
7、csr文件可以重复使用。
8、邮件最好填开发者中心的的邮箱。
9、双击证书进入keychain。
10、导出证书,要先将证书收起来再导出来(下图)。
第三次学习:
两篇优秀文章:
关于Certificate、Provisioning Profile、App Id的介绍及其之间的关系。
1、https://www.cnblogs.com/cywin888/p/3263027.html
iOS10推送通知进阶
2、https://www.jianshu.com/p/78ef7bc04655
信鸽官方文档
3、https://xg.qq.com/docs/ios_access/ios_access_guide.html
这两篇文章重要观点:
1、推送的步骤
(1)网络链接(2)请求获取token(3)注册token(4)请求APNs下发消息(5)推送消息
三个重要的参与方:app ,apns,三方服务器。发推送的原理,是三方是给苹果服务器发,带上token,苹果知道往哪里发了。
2、用openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
可以将p12文件生成pem,文件,pem文件我们可以通过vim去看里面的私钥和公钥的具体信息。
3、证书是真机调试、打包的前提,原理就是在本地保存了公钥私钥,苹果开发服务器,有私钥,通信确认可行,就可以打包和真机调试。
4、要注意区分正式环境和测试环境的名字。
5、重要词汇,设计id时,有几个词汇,wildcard 通配符,explicit清晰的。
6、证书三部曲
(1)创建id
(2)开启通知设置 很重要
(3)钥匙串从证书颁发机构获取证书
就完成了
7、错误信息: Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用程序的“aps-environment”的授权字符串" UserInfo=0x16545fc0 {NSLocalizedDescription=未找到应用程序的“aps-environment”的授权字符串}
这个错误是因为没有在xcode设置里面打开,notification。
8、profiles配置文件,profies是什么
一个Provisioning Profile文件包含了上述的所有内容:证书、App ID、设备。
试想一下,如果我们要打包或者在真机上运行一个应用程序,我们首先需要证书来进行签名,用来标识这个应用程序是合法的、安全的、完整的等等;然后需要指明它的App ID,并且验证Bundle ID是否与其一致;再次,如果是真机调试,需要确认这台设备能否用来运行程序。而Provisioning Profile就把这些信息全部打包在一起,方便我们在调试和发布程序打包时使用,这样我们只要在不同的情况下选择不同的profile文件就可以了。而且这个Provisioning Profile文件会在打包时嵌入.ipa的包里。
好的问题:
1、如何获取生产环境的deviceToken
将那个打印环境去掉就行了,让release也能打印
// DEBUG日志
#ifdef DEBUG
#define MDFLog(s,...) NSLog(@" hihi \n <%p %@:(%d)>\n %s\n %@\n\n", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, __func__, [NSString stringWithFormat:(s), ##__VA_ARGS__])
#define NSSLog(FORMAT, ...) fprintf(stderr,"%s:%d\t%s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String])
#else
#define MDFLog(s,...)
#define NSSLog(FORMAT, ...)
#define NSLog(...)
#endif
将release环境设置跟debug一样就行
2、release环境不要禁止打印
https://cli.im/url?812798aa441cf417aca2efa06ff98195
3、正式环境和测试环境的标志区别是什么,只是release和debug的区别吗
4、生产环境和测试环境与正式环境和测试环境,是一一匹配的吗
5、如果我把本地证书全部删掉,直接从上面下载证书行不行,会有p12文件吗?可以验证
验证通过,是的有的。但是,如果我们删除了证书里面那个p12文件,然后再删除那个证书文件,再次下载这个证书就没有p12文件。这个时候,要么别人把p12导出来给你,要么就只能重做了(重新从证书颁发机构获取request文件)。
怎么解释:可能是第五步删证书的时候,没有把本地的p12删掉吧。
删除p12文件警告:
警告!如果删除专用密钥,则与该密钥相关的证书无法再使用。这可能会阻止您读取加密信息或进行安全连接。只有当您确定不再需要所选密钥时才继续此操作。
注意,如果点击了删除,删除的文件时不能进入到垃圾桶的,此步骤不能恢复的。
一旦进行这个步骤,下面的文件就不能用了,只能重新制作。
6、如何验证证书的有效性
7、如何给别人用,创建一个配置文件,选择对应的id和设备,产生如下文件:
会产生如下文件:
别人拿着这个文件就能用了
8、引出p12文件方式,经验证,以下两种方式都没问题,我通过生成pem文件,发现这两个文件里面的细节还是有不一样的,我们同时用这两种方式生成两个p12文件,发现里面的数据,certificate和key都是不一样的,格式里面也有一些出入,结论,他们并不是一模一样,并且在上线的时候,只有用那种较全的证书,但是测试的时候,两种证书都行。注意,环境、名字、证书都要设置正确,并且要等待一点时间,至少七鱼的问题是这样的。
故障排查
1、收不到推送,注意正式和测试是否配置正确;bundleid是否正确;名字;打包时有没有打开Capabilities里面的推送能力(很关键);
2、另外,推送并且一定能收到,我亲自遇到过,什么都没动,推送忽好忽怀,这个问题怎么解决??看上面各项都没问题,我们只有等待。等待三方服务器或者苹果服务器变好。
3、有时配置不一定立马生效,需要等待"线上的大概会有半个小时左右的延迟,有时候会快一些",这是一个重要经验,一般等待至少等待半小时。