極光推送分爲web推送與api推送兩種方式,web推送即通過極光後臺給設備推送,一般推送不針對單個用戶的消息,比如:歡迎參加xx活動。而api則一般推送包含變量的消息,如:{xx用戶}提現{xx金額}已到賬!
同時,web與api的推送的目標平臺有四種,分別爲:Android,ios開發環境,ios生產環境,WinPhone四種。
場景
集成了官方文檔中提供的服務端SDK庫(PHP),在通過api給指定registration_id推送消息時,Android設備可以收到推送,而ios設備調用無報錯,但是在後臺推送歷史查看(篩選條件選擇Api)查看時,發現ios推送記錄目標爲0,成功0;如下圖所示:
通過web方式給ios生產環境推送時則可以推送成功(ios開發環境爲開發同學調試時使用,app發佈我直接拿我自己手機的registration_id調的所以是生產環境推送),所以肯定不是app端sdk集成的問題。
解決方法
點開該條記錄的詳情,可以看到apns_production爲false,查看極光推送api文檔可知apns_production字段,True 表示推送生產環境,False 表示要推送開發環境;如果不指定則爲推送生產環境。但注意,JPush 服務端 SDK 默認設置爲推送 “開發環境”。該字段僅對 iOS 的 Notification 有效。
在調用api時將apns_production設置爲true即可推送成功。
最近app接極光推送,雖然踩過坑,但是也學習了很多,如果有接推送遇到問題的同學評論區留言,大家一起探討。