iOS APNS遠(yuǎn)程推送 測(cè)試全方案匯總

最近弄了下推送,在測(cè)試時(shí)遇到了些問(wèn)題,在此整理匯總了些推送測(cè)試相關(guān)的方案,并添加了一些補(bǔ)充信息。下方鏈接是相關(guān)文章,感謝各位作者的分享。

注意

debug包和build切換為release直接在手機(jī)上跑生成的device token都是開(kāi)發(fā)token。release打包后注冊(cè)生成的token是生產(chǎn)的。

1、極光、個(gè)推等三方推送平臺(tái)

向證書(shū)制作者要推送證書(shū)的 p12文件。 雙擊輸入密碼。在鑰匙串中找到如下。


截屏2022-03-28 上午10.44.45.png

證書(shū)有下方密鑰,沒(méi)有的話證書(shū)不可用。
將p12上傳的三方平臺(tái)并填寫密碼即可。測(cè)試推送在這些推送平臺(tái)填寫 設(shè)備token等信息即可。

2、公司自己開(kāi)發(fā)推送服務(wù)

給中臺(tái)p12文件和密碼,協(xié)商好消息格式、提供對(duì)應(yīng)環(huán)境的token,由中臺(tái)觸發(fā)即可。
注意證書(shū)分為三種。測(cè)試(sanbox)、生產(chǎn)、 測(cè)試和生產(chǎn)合并。
如果發(fā)送成功,核對(duì) token、證書(shū)、中臺(tái)鏈接蘋果服務(wù)器息的地址。是否為統(tǒng)一環(huán)境。(蘋果的推送服務(wù)器也是區(qū)分測(cè)試和生產(chǎn)的,域名不同,下方腳本中可以看到)

3、模擬器推送

在Xcode11.4之后,模擬器也支持推送測(cè)試

3.1、創(chuàng)建推送文件
{
    "aps":{
        "alert":{
            "title":"標(biāo)題",
            "body":"內(nèi)容內(nèi)容內(nèi)容"
        },
        "content-available" : 1,
        "mutable-content" : 1
    }}

具體格式根據(jù)你們的產(chǎn)品要求,接入極光或者個(gè)推的可以在控制臺(tái)發(fā)一條推送打印出具體格式內(nèi)容查看,將文件保存后綴為apns,待會(huì)要用到

3.2、執(zhí)行如下命令進(jìn)行測(cè)試

a、查看已啟動(dòng)模擬器

xcrun simctl list devices | grep Booted

會(huì)看到類似下面信息,如果沒(méi)有請(qǐng)先啟動(dòng)模擬器

iPhone 12 Pro (1BEE4182-C934-431E-BCBF-F7676C4C2BFC) (Booted)

b、運(yùn)行項(xiàng)目在模擬器上后執(zhí)行相應(yīng)命令simctl push <device> [<bundle identifier>] (<json file> | -)
示例如下

xcrun simctl push Booted com.app.test /Users/lazyloading/Desktop/payload.apns

3.3方式二直接拖入推送文件到模擬題

將第一步創(chuàng)建的json文件內(nèi)容稍加修改,具體就是添加了"Simulator Target Bundle": "com.app.test"你項(xiàng)目的包名

{
    "Simulator Target Bundle": "com.app.test",
    "aps":{
        "alert":{
            "title":"標(biāo)題",
            "body":"內(nèi)容辱與共產(chǎn)主義不容辭"
        },
        "content-available" : 1,
        "mutable-content" : 1
    }}

然后直接拖動(dòng)文件到模擬器上,出現(xiàn)綠色?后松手,這樣也可以進(jìn)行推送測(cè)試

4、推送腳本

參考蘋果官方文檔

Sending Push Notifications Using Command-Line Tools

<u>https://links.jianshu.com/go?to=https%3A%2F%2Fdeveloper.apple.com%2Fdocumentation%2Fusernotifications%2Fsending_push_notifications_using_command-line_tools</u>

這里只講一種方式

1、在終端新建 shell 文件,這里命名為 push-remote-notification

touch push-remote-notification.sh
vim push-remote-notification.sh

2、編輯 shell 腳本,這里需要 der 和 pem 證書(shū),如果已經(jīng)有了 p12 證書(shū),可以通過(guò) openssl 進(jìn)行轉(zhuǎn)換

# 下面的變量需要根據(jù)實(shí)際情況修改
CERTIFICATE_FILE_NAME={DER 證書(shū)路徑}
CERTIFICATE_KEY_FILE_NAME={PEM 證書(shū)路徑}
# bundle id
TOPIC={appid}
DEVICE_TOKEN={device-token}
# 生產(chǎn)環(huán)境
# APNS_HOST_NAME=api.push.apple.com
# 開(kāi)發(fā)環(huán)境
APNS_HOST_NAME=api.sandbox.push.apple.com

curl -v --header "apns-topic: ${TOPIC}" --header "apns-push-type: alert" --cert "${CERTIFICATE_FILE_NAME}" --cert-type DER --key "${CERTIFICATE_KEY_FILE_NAME}" --key-type PEM --data '{"aps":{"alert":"test"}}' --http2  https://${APNS_HOST_NAME}/3/device/${DEVICE_TOKEN}

運(yùn)行 shell 腳本

sh push-remote-notification.sh

推送成功截圖:
截屏2022-03-24 下午8.17.20.png

真實(shí)腳本事例:

# 下面的變量需要根據(jù)實(shí)際情況修改

CERTIFICATE_FILE_NAME=/Users/ume/Desktop/shellApns/xxxapns.der

CERTIFICATE_KEY_FILE_NAME=/Users/ume/Desktop/shellApns/xxxapns.pem

# bundle id

TOPIC=com.xxxx.xx.xxx

DEVICE_TOKEN=xxxxa47e0e41626165aa1c4baa510fed4114b2c60afc82e001e1e9075d96978e

# 生產(chǎn)環(huán)境

APNS_HOST_NAME=api.push.apple.com

# 開(kāi)發(fā)環(huán)境

# APNS_HOST_NAME=api.sandbox.push.apple.com

curl -v --header "apns-topic: ${TOPIC}" --header "apns-push-type: alert" --cert "${CERTIFICATE_FILE_NAME}" --cert-type DER --key "${CERTIFICATE_KEY_FILE_NAME}" --key-type PEM --data '{"aps":{"alert":"test"},"badge":3,}' --http2  [<u>https://${APNS_HOST_NAME}/3/device/${DEVICE_TOKEN}</u>](https://${apns_host_name}/3/device/$%7BDEVICE_TOKEN%7D)

5、.pem 文件和 .der文件生成

a、p12轉(zhuǎn)der需要先轉(zhuǎn)為pem格式,再?gòu)膒em轉(zhuǎn)到der格式
openssl pkcs12 -in disPush.p12 -out disPush.pem -nodes
b、pem轉(zhuǎn)der
openssl x509 -outform der -in certificate.pem -out certificate.der

6、推送工具

Smart push
git地址:https://github.com/shaojiankui/SmartPush

截屏2022-03-28 上午10.55.11.png

如果報(bào)錯(cuò)
SSL端點(diǎn)域名不能被設(shè)置 -25300
Keychain中不能找到證書(shū) -25300

說(shuō)明鑰匙串中沒(méi)有密鑰,要新的p12文件并雙擊

7、其他在線推送測(cè)試工具

不推薦,所以不例舉,網(wǎng)站風(fēng)險(xiǎn)無(wú)法判斷。

8、相關(guān)鏈接

<u>http://www.itdecent.cn/p/15d58b1ada5b</u> 證書(shū)轉(zhuǎn)換

<u>https://blog.csdn.net/u013250412/article/details/78729828</u> 證書(shū)轉(zhuǎn)換

<u>http://www.itdecent.cn/p/9d7aece4a88d</u> 證書(shū)轉(zhuǎn)換

<u>https://developer.apple.com/documentation/usernotifications/sending_push_notifications_using_command-line_tools</u>

<u>https://blog.csdn.net/berryreload/article/details/52205397</u>

<u>http://www.itdecent.cn/p/87168eecc395</u> 腳本

<u>https://developer.aliyun.com/article/116088?spm=a2c6h.13813017.content3.2.6bc0590ePir0NF</u>

<u>http://www.itdecent.cn/p/87168eecc395</u> 腳本

<u>http://www.itdecent.cn/p/e8e4f4984fee</u> 模擬器

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容