1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| #!/bin/bash
AUTH_KEY="/Users/apple/Desktop/PushShell/AuthKey.p8"
KEY_ID="XXXXXXXXX"
TEAM_ID="XXXXXXXXX"
TOPIC="com.xxx.app"
DEVICE_TOKEN="6484x5xx2xxx0e9ab1d89c22304f66cf8db5e1a5f52b682357586e2e34f3d597"
APNS_HOST="api.push.apple.com"
PAYLOAD='{"aps":{"alert":"Hello from APNs!","sound":"default","badge":1}}'
generate_jwt() { local header='{"alg":"ES256","kid":"'"$KEY_ID"'"}' local header_b64=$(printf '%s' "$header" | openssl base64 -e -A | tr -- '+/' '-_' | tr -d '=') local iat=$(date +%s) local payload='{"iss":"'"$TEAM_ID"'","iat":'"$iat"'}' local payload_b64=$(printf '%s' "$payload" | openssl base64 -e -A | tr -- '+/' '-_' | tr -d '=') local header_payload="${header_b64}.${payload_b64}" local signature=$(printf '%s' "$header_payload" | openssl dgst -binary -sha256 -sign "$AUTH_KEY" | openssl base64 -e -A | tr -- '+/' '-_' | tr -d '=') echo "${header_payload}.${signature}" }
main() { echo "🔑 生成JWT Token..." TOKEN=$(generate_jwt) echo "📱 发送推送通知..." echo "目标设备: $DEVICE_TOKEN" echo "推送内容: $PAYLOAD" echo "------------------------" curl -v --http2 \ --header "authorization: bearer $TOKEN" \ --header "apns-topic: $TOPIC" \ --header "apns-push-type: alert" \ --data "$PAYLOAD" \ "https://${APNS_HOST}/3/device/${DEVICE_TOKEN}" echo "------------------------" }
main "$@"
|