swift 我想使用.pem从终端发送呼叫通知

nuypyhwy  于 2023-05-21  发布在  Swift
关注(0)|答案(1)|浏览(194)

我想使用terminal.pem文件发送呼叫通知。所有代码都在我的末端看起来很好。终端抛出此错误。

pushregistrytoken从应用程序中检索并在终端上尝试此命令。
curl -v -d '{"aps":{"alert":"hello"}}' --http2 --cert Certificates.pem:1234 https://api.development.push.apple.com/3/device/pushregistrytoken
这里我使用http2协议
资源:https://websitebeaver.com/callkit-swift-tutorial-super-easy
我正在工作与终端发送通知为第一次。
谢谢

a6b3iqyw

a6b3iqyw1#

旧的证书和密码方式已经不起作用了,您需要创建一个AuthKey.p8沿着它的authKey,并根据开发者的设置替换这里的条目,然后将下面的代码封装在File.sh内,并在终端**$ bash pathToFile/File.sh * 执行

#!/bin/bash

deviceToken="tokenHere"
authKey="pathTo........./AuthKey.p8"
authKeyId="......."
teamId="........"
bundleId="........"
endpoint="https://api.sandbox.push.apple.com:2197"
apns_collapse_id="send_update"

read -r -d '' payload <<-'EOF'
{
   "aps": {
      "badge": 2,
      "category": "mycategory",
      "alert": {
         "title": "my title",
         "subtitle": "my subtitle",
         "body": "my body text message 103"
      }
   },
   "custom": {
      "id": "1234"
   }
}

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" \
   --header "apns-collapse-id: $apns_collapse_id"\
   --http2 \
   --data "$payload" \
   $endpoint/3/device/$deviceToken

相关问题