Test Apple push notification using an APNs Auth Key:
#!/bin/bash # Get curl with HTTP/2 and openssl with ECDSA: 'brew install curl-openssl' curl=/usr/local/opt/curl-openssl/bin/curl openssl=/usr/local/opt/openssl/bin/openssl # -------------------------------------------------------------------------- deviceToken=b27371497b85611baf9052b4ccfb9641ab7fea1d01c91732149c99cc3ed9342f authKey="./APNSAuthKey_ABC1234DEF.p8" authKeyId=ABC1234DEF teamId=TEAM123456 bundleId=com.example.myapp endpoint=https://api.development.push.apple.com read -r -d '' payload <<-'EOF' { "aps": { "badge": 2, "category": "mycategory", "alert": { "title": "my title", "subtitle": "my subtitle", "body": "my body text message" } }, "custom": { "mykey": "myvalue" } } 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-push-type: alert" \ --data "$payload" \ $endpoint/3/device/$deviceToken
download:
apns.sh
See the discussion on Stack Overflow.
Apple now have documentation for this method to Send a Push Notification Using a Token.
Also, have a look at how you might decode a JSON Web Token from the command-line.