iOS 建立遠距推播 App (四) 推播測試 – 使用 mac 終端機
將下列程式碼依需求填入對應的資料,並存成 token_send.sh
TEAM_ID= #開發者ID(在帳號資料右上角) TOKEN_KEY_FILE_NAME= #p8格式的 Keys AUTH_KEY_ID= Keys 的 ID TOPIC= #App 的 Bundle Iden DEVICE_TOKEN= #使用者設備的DEVICE_TOKEN APNS_HOST_NAME=api.sandbox.push.apple.com JWT_ISSUE_TIME=$(date +%s) JWT_HEADER=$(printf '{ "alg": "ES256", "kid": "%s" }' "${AUTH_KEY_ID}" | openssl base64 -e -A | tr -- '+/' '-_' | tr -d =) JWT_CLAIMS=$(printf '{ "iss": "%s", "iat": %d }' "${TEAM_ID}" "${JWT_ISSUE_TIME}" | openssl base64 -e -A | tr -- '+/' '-_' | tr -d =) JWT_HEADER_CLAIMS="${JWT_HEADER}.${JWT_CLAIMS}" JWT_SIGNED_HEADER_CLAIMS=$(printf "${JWT_HEADER_CLAIMS}" | openssl dgst -binary -sha256 -sign "${TOKEN_KEY_FILE_NAME}" | openssl base64 -e -A | tr -- '+/' '-_' | tr -d =) AUTHENTICATION_TOKEN="${JWT_HEADER}.${JWT_CLAIMS}.${JWT_SIGNED_HEADER_CLAIMS}" PAYLOAD=' { "aps": { "alert": { "title": "非洲大草原", "subtitle": "肯亞", "body": "大象一隻" }, "badge": 10, "sound": "default", "content-available" : 1 }, } ' echo $JWT_ISSUE_TIME curl -v \ --header "apns-collapse-id: oo7" \ --header "apns-topic: $TOPIC" \ --header "apns-push-type: alert" \ --header "authorization: bearer $AUTHENTICATION_TOKEN" \ --data "$PAYLOAD" \ --http2 https://${APNS_HOST_NAME}/3/device/${DEVICE_TOKEN} #curl -v --header "apns-topic: $TOPIC" --header "apns-push-type: alert" --header "authorization: bearer $AUTHENTICATION_TOKEN" --data "$PAYLOAD" --http2 https://${APNS_HOST_NAME}/3/device/${DEVICE_TOKEN}
將 取得 的 p8 格式的 Key 和 token_send.sh 放在同一目錄。(建議不要有中文)
執行下列指令測試 :
source ./token_send.sh
相關 PAYLOAD 的值可參考 : https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/generating_a_remote_notification