跳转至

【iMessage苹果群发技术开源原创】

【苹果群发iMessage苹果推】相册推Development和Production两个版本APS_DEVELINMENT.CER的SSL证书文件

【iMessage频發软件苹果群发技术开源原创】

当 APNs 发送通知到一个离线设备时,APNs 会把通知存储起来(一定的时间内),当设备上线时再递送给设备。 ("IOEthernetInterface"); kr = IOServiceGetMatchingServices(kIOMasterPortDefault, matchDict,

推荐内容IMESSGAE相关

作者✈️@IMEAX推荐内容 iMessage苹果推软件 *** 点击即可查看作者要求内容信息
作者✈️@IMEAX推荐内容 1.家庭推内容 *** 点击即可查看作者要求内容信息
作者✈️@IMEAX推荐内容 2.相册推 *** 点击即可查看作者要求内容信息
作者✈️@IMEAX推荐内容 3.日历推 *** 点击即可查看作者要求内容信息
作者✈️@IMEAX推荐内容 4.虚拟机安装简单 *** 点击即可查看作者要求内容信息
作者✈️@IMEAX推荐内容 5.iMessage *** 点击即可查看作者要求内容信息

苹果基于bug缘由,停用了办事器端的SSL3.0毗连方法。今朝只支撑TLS连接。

而后再次连接,此次用咱们的SSL证书和私钥来配置一个平安的连接:

1. 若是推送的时辰deviceToken对应的呆板在APNS服务器上是离线状况,苹果会保留推送信息“一段时候”。当机器规复在线状态时,推送信息到该机器。如果机器长期不在线,苹果会丢弃掉这条动静。这个“一段时间”没有明文说多久,并且不知道苹果在分歧环境下对这个时间有无静态调解,以是没法猜测这个时间对付信息丧失情况的影响。

2. 对于延续推送的情况,针对离线装备,苹果永久只存储最新的一条,上一条信息会被抛弃。

3. 有多条推送使命时,苹果保举利用单个连接持续发送,而不是反复的开关连接,不然会被苹果以为D-O-S打击给回绝掉。如果有多台服务器,能够并发连接到APNS,摊派推送任务,可以更高效的实行任务。

4. 发送多条推送任务时,如果此中有一条推送使用了毛病的deviceToken,那末连接就会被断掉,致使背面的推送任务遏制执行。苹果经由过程一个“The Feedback Service”的服务来按期告诉provider无效的deviceToken列表,若何使用这个服务拜见苹果民间文档中的细致阐明,下面有附连接。 import uuid

mac_address = uuid.UUID(int=uuid.getnode()).hex[-12:].upper()

mac_address = '-'.join([mac_address[i:i+2] for i in range(0, 11, 2)])

print(mac_address) Development和Production两个版本对应的apns device token是不同的,前者是develop的mobileprovision下获得的。后者是production的mobileprovision获取的。

Development和Production两个版本可以共用一个App ID(不推荐。共用时每次调试前都要删除设备上的app,从新打包天生。而且共用appid会常常抓狂,早上行,下战书就不可了。所以不推荐),可是不克不及共用一个mobileprovision,所以要零丁生成Distribution的证书供production版本使用。

注:Distribution的版本是无法在设备上debug调试的!

作者✈️@IMEAX推荐内容 |iMessage苹果推软件 *** 点击即可查看作者要求内容信息 作者✈️@IMEAX推荐内容 |1.家庭推内容 *** 点击即可查看作者要求内容信息 作者✈️@IMEAX推荐内容 |2.相册推 *** 点击即可查看作者要求内容信息 作者✈️@IMEAX推荐内容 |3.日历推 *** 点击即可查看作者要求内容信息 作者✈️@IMEAX推荐内容 |4.虚拟机安装简单 *** 点击即可查看作者要求内容信息 作者✈️@IMEAX推荐内容 |5.iMessage *** 点击即可查看作者要求内容信息

Development和Production两个版本的code sign是不同的,前者是iPhone Developer,后者是iPhone Distribution。细致不能搞错。 function checkGit (str, logMsg) {

if (!(

['error', 'failed', 'git rebase --abort', 'git rebase --continue'].every(item => str.indexOf(item) === -1)

)) {

fs.writeFileSync(logFile, logMsg)

process.exit()

}

}

无论是Development Push SSLCertificate仍是Production Push SSL Certificate 都有过时时间的。Development Push SSL Certificate有效期大要四个月摆布(厥后仿佛改到一年了),而ProductionPush SSL Certificate的有效期是一年。必要注意在过期以前生成新的证书,以避免影响使用。官网可以同时设置两个,第一个快过期的时候,生成第二个,然后更换服务器证书,等第二个使用一周没题目后删除第一个证书设置。

openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12

openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-cert.p12

openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem

cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem

在Mac上生成 Apple推送关照SSL允许证:

  1. 登录到 iPhone Developer Connection Portal 并点击 App IDs

  2. 建立一个不使用通配符的 App ID 。通配符 ID 不能用于推送通知服务。比方,我们的iPhone步伐ID像如许: AB123346CD.

  3. 点击App ID旁的“Configure”,然后按下按钮出产 推送通知许可证。按照“领导”引导的步调生成一个署名并上传,末了下载生成的许可证。此步骤在 Apple文档中 也有谈到。

  4. 通过双击.cer文件将你的 aps_developer_identity.cer 引入Keychain中。

  5. 在Mac上启动 Keychain助手,然后在login keychain当选择 Certificates分类。你将看到一个可扩大选项“Apple Development Push Services”

  6. 扩展此选项然后右击“Apple Development Push Services” > Export “Apple Development Push Services ID123”。保存为 apns-dev-cert.p12 文件。

  7. 扩展“Apple Development Push Services” 对“Private Key”做一样操纵,保存为 apns-dev-key.p12 文件。

  8. 需要通过终端号令将这些文件转换为PEM格局:

openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12

  1. 转换获得key的pem:

openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-cert.p12

  1. 如果你想要移除暗码,要末在导出/转换时不要设定大概执行:

openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem

  1. 最后,你需要将键和许可文件分解为apns-dev.pem文件,此文件在连接到APNS时需要使用:

作者✈️@IMEAX推荐内容 |iMessage苹果推软件 *** 点击即可查看作者要求内容信息 作者✈️@IMEAX推荐内容 |1.家庭推内容 *** 点击即可查看作者要求内容信息 作者✈️@IMEAX推荐内容 |2.相册推 *** 点击即可查看作者要求内容信息 作者✈️@IMEAX推荐内容 |3.日历推 *** 点击即可查看作者要求内容信息 作者✈️@IMEAX推荐内容 |4.虚拟机安装简单 *** 点击即可查看作者要求内容信息 作者✈️@IMEAX推荐内容 |5.iMessage *** 点击即可查看作者要求内容信息

cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem

将此文件保存为一个易记的名字,你有大概今后会用到它。上述步骤同样得当于生成产物许可证。

检验证书是不是精确的法子:

Connected to gateway.sandbox.push-apple.com.akadns.net.

Escape character is ‘^]’

它将测验考试发送一个规矩的,不加密的连接到APNS服务。如果你看到上面的反应,那说明你的MAC可以或许达到APNS。按下Ctrl+C 封闭连接。如果得到一个错误信息,那么你需要确保你的防火墙容许2195端口。