Add push noty script and docs (#10380)
This commit is contained in:
Executable
+78
@@ -0,0 +1,78 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Sends a sample APNS payload to a booted iOS simulator. Useful for testing
|
||||
# BlueskyNSE and useNotificationsHandler without a real APNS round-trip.
|
||||
#
|
||||
# Usage:
|
||||
# scripts/push-test/send.sh <payload-name> [--did <did>] [--device <udid>] [--bundle <id>]
|
||||
#
|
||||
# Examples:
|
||||
# scripts/push-test/send.sh like --did did:plc:abc123
|
||||
# BLUESKY_TEST_DID=did:plc:abc123 scripts/push-test/send.sh chat-message
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PAYLOAD_DIR="$SCRIPT_DIR/payloads"
|
||||
|
||||
device="booted"
|
||||
bundle="xyz.blueskyweb.app"
|
||||
did="${BLUESKY_TEST_DID:-}"
|
||||
name=""
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--did) did="$2"; shift 2;;
|
||||
--device) device="$2"; shift 2;;
|
||||
--bundle) bundle="$2"; shift 2;;
|
||||
-h|--help)
|
||||
cat <<EOF
|
||||
Usage: $0 <payload-name> [--did <did>] [--device <udid>] [--bundle <id>]
|
||||
|
||||
Available payloads:
|
||||
$(ls "$PAYLOAD_DIR" 2>/dev/null | sed 's/\.apns$//' | sed 's/^/ /')
|
||||
|
||||
Pass --did or set BLUESKY_TEST_DID to substitute the recipient DID. The DID
|
||||
must match the account currently signed in to the app, otherwise chat
|
||||
notifications will trigger an account-switch flow and other reasons will be
|
||||
silently dropped by the handler.
|
||||
EOF
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
if [[ -z "$name" ]]; then
|
||||
name="$1"
|
||||
else
|
||||
echo "Unknown arg: $1" >&2
|
||||
exit 1
|
||||
fi
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ -z "$name" ]]; then
|
||||
echo "Error: payload name required. Run with --help for options." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
src="$PAYLOAD_DIR/${name}.apns"
|
||||
if [[ ! -f "$src" ]]; then
|
||||
echo "Error: payload not found: $src" >&2
|
||||
echo "Available:" >&2
|
||||
ls "$PAYLOAD_DIR" | sed 's/\.apns$//' | sed 's/^/ /' >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z "$did" ]]; then
|
||||
echo "Error: missing recipient DID. Pass --did or set BLUESKY_TEST_DID." >&2
|
||||
echo " The DID must match the account currently signed in to the app." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
tmp="$(mktemp -t bluesky-push.XXXXXX).apns"
|
||||
trap 'rm -f "$tmp"' EXIT
|
||||
sed "s|__RECIPIENT_DID__|$did|g" "$src" > "$tmp"
|
||||
|
||||
echo "Pushing '$name' to $device ($bundle)"
|
||||
xcrun simctl push "$device" "$bundle" "$tmp"
|
||||
echo "Delivered."
|
||||
Reference in New Issue
Block a user