最近在配合服务端人员调试相关的 APNS auth key 推送的问题,相比于苹果的P12证书的推送,P8证书的推送显得方便很多,P8的优势在于简单,安全 容易生成 最重要的是不会过期。
现在我们来看下测试具体流程:
方法一
地址:https://developer.apple.com/account/resources/authkeys/list
1.点击Keys+
2.注册一个key
3.点击Register注册
4.点击下载证书
注意:证书需要保存好,因为只能下载一次,如果丢失了需要重新创建下载。
5.记录下TeamId
接下来是代码部分,通过JWT把p8证书密钥转换成token
let jwt = JWT(keyID: kKEY_ID, teamID: kTEAM_ID, issueDate: Date(), expireDuration: 60 * 60)
然后再通过http请求发送个测试示例就可以了
do {
let token = try jwt.sign(with: kP8)
var request = URLRequest(url: URL(string: kURL + kDEVICE_TOKEN)!)
request.httpMethod = "POST"
request.addValue("bearer \(token)", forHTTPHeaderField: "authorization")
request.addValue(kBUNDLE_ID, forHTTPHeaderField: "apns-topic")
request.httpBody = kPAYLOAD.data(using: .utf8)
URLSession.shared.dataTask(with: request) { (data, response, error) in
guard error == nil else {
DispatchQueue.main.async {
self.resultLabel.stringValue = error!.localizedDescription
}
return
}
guard data != nil else {
DispatchQueue.main.async {
self.resultLabel.stringValue = "未知错误"
}
return
}
DispatchQueue.main.async {
self.resultLabel.stringValue = "发送成功"
}
}.resume()
} catch {
DispatchQueue.main.async {
self.resultLabel.stringValue = "生成JWT Token失败"
}
}
方法二
在环信console后台上传P8证书,点击测试证书,也能达到相同的效果
参考地址:
- 注册环信IM:https://console.easemob.com/user/register
- P8证书生成并上传环信后台:https://www.imgeek.net/video/148