iOS p8证书 APNS auth key 推送

9,165 阅读2分钟

最近在配合服务端人员调试相关的 APNS auth key 推送的问题,相比于苹果的P12证书的推送,显然P8证书的推送要显得方便很多了,

这个是我在苹果官方的视频看到的  APNS auth key  ,简单,安全 容易生成 最重要的是不会过期。相对于p12证书要生产和测试分开,而且一年的过期时间这个明显要显得方便很多。

p8证书的问题这里就不多说了,类似p12证书那样,我看到过极光推送的文档就有一整套完整的教程,如果有需要可以到哪里去看一下证书的生成规则。

 记住在生成证书之前最好把这个截图记下来

证书的team ID也需要记录下来的,对应的一个账号有一个team ID,该账号下可以生成不同的app,记录下这个team ID 后面只需要根据bundelId 来配置推送就可以了。

之前我们p12 证书本地测试推送的时候都是用第三方的pushBaby或者其他的工具来测试,换成P8证书后显然这些工具就不行了,下面提供的是一个测试脚本

#!/bin/bash
deviceToken=c3d5bc4a31021e8580764dbf86e3e55b8a37821aa680a40b2e5663be3ec6a595authKey="./Auth******TDP.p8"authKeyId=4L4**HTDPteamId=76M****H4P2

bundleId=com.test.Pushendpoint=https://api.development.push.apple.com
#// "https://api.push.apple.com"
read -r -d '' payload <<-'EOF'{"aps": {"badge": 2, "sound": "default","category": "mycategory","alert": {"title": "推送","subtitle": "推送测试消息","body": "收到推送消息请回复"}

},}EOF

# --------------------------------------------------------------------------base64() {openssl base64 -e -A | tr -- '+/' '-_' | tr -d =}sign() {printf "$1"| openssl dgst -binary -sha256 -sign "$authKey" | base64}

time=$(date +%s)header=$(printf '{ "alg": "ES256", "kid": "%s" }' "$authKeyId" | base64)claims=$(printf '{ "iss": "%s", "iat": %d }' "$teamId" "$time" | base64)jwt="$header.$claims.$(sign $header.$claims)"

curl --verbose \--header "content-type: application/json" \--header "authorization: bearer $jwt" \--header "apns-topic: $bundleId" \--data "$payload" \$endpoint/3/device/$deviceToken

当我们都设置好把对应的替换一下就可以本地模拟推送了

以上是在测试环境下跟换就可以了,如果是生产上的测试包 把域名地址更换下就可以测试推送了 

# endpoint = "https://api.development.push.apple.com"  测试环境# endpoint = "https://api.push.apple.com"  生产环境

以上就是P8证书下的本地推送调试,希望大家有问题可以一起探讨  qq:857798646