最近在配合服务端人员调试相关的 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) inguard 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