问题描述
移动推送对于已成功送入APNs但未收到通知的排查方法。
解决方案
客户反馈未收到消息,这边排查推送日志又是APNs2 sent success for ${deviceid} - ${deviceToken},说明消息成功发送到厂商服务端。
对于已成功送入APNs的通知:
是必现还是偶现。
如果是必现,则用Shell直接向APNs推送,看能否推送成功。
如果是iOSMutableContent=true的,收到后应该会在设备上留下日志,看一下是否存在日志。
如果未设置iOSMutableContent的,建议推送时设置iOSMutableContent=true,这样在通知展示前会通知extension来处理,可以在日志里记录一下通知收到的信息。
第2步的Shell脚本如下,客户创建push-ios-example.sh文件,替换对应的信息,终端运行sh push-ios-example.sh
,看客户端上是否能收到消息。
#!/bin/bash
#推送p12证书的路径
CERT_FILE=${cert_filename.p12}
#推送证书的密码
CERT_PASSWORD=${cert_password}
#true是开发环境,false是生产环境
SANDBOX=true
#安装包的bundleId
BUNDLE_ID=${bundle_id}
#安装包获取的APNs的Token
DEVICE_TOKEN=${deviceToken}
if [ "${SANDBOX}" = true ]; then
HOST=api.sandbox.push.apple.com
else
HOST=api.push.apple.com
fi
curl -v \
-d '{"aps":{"alert":"Test Push Message! --EMAS"}}' \
--cert-type P12 \
--cert ${CERT_FILE}:${CERT_PASSWORD} \
-H "apns-topic:${BUNDLE_ID}" \
https://${HOST}/3/device/${DEVICE_TOKEN}
适用于
移动推送
文档内容是否对您有帮助?