背景:ionic集成極光推送插件,Android推送沒遇到任何問題,iOS下就遇到一堆問題(真是有特殊性),按照官方文檔兩種鑑權方式的配置,此次我使用的是通過 APNs Auth Key 鑑權(很方便),第一種貌似有點複雜(哈哈哈哈)。配置完成後通過測試按理,iOS開發環境下沒問題,生產環境暫時沒測試,正式服務上推送又出問題,因此總結一下遇到的問題。
1、文檔儘量參考官方(比較完整);
2、推送服務端一定要查看,具體調用的方法(是否同時支持iOS和Android兩種平臺),若自生項目只需要其中的一種,那設置一種也行;(我的項目就是出在調用的方法只推送的android,沒有推送到iOS,所以iOS收不到)
3、iOS下開發環境能收到,生產環境收不到(API 推送設置可選參數 options——環境參數 apns_production,true 爲生產、false 是開發,請務必注意參數類型是 Boolean ,不是字符串或其他),切記別忘記配置此參數,對應到具體的環境。
具體可參考官方社區:https://community.jiguang.cn/t/topic/5145/9
https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/#options
關鍵點:.setOptions(Options.newBuilder().setApnsProduction(true).build())
public static PushPayload buildPushObject_ios_tagAnd_alertWithExtrasAndMessage() {
JsonObject sound = new JsonObject();
sound.add("critical", new JsonPrimitive(1));
sound.add("name", new JsonPrimitive("default"));
sound.add("volume", new JsonPrimitive(0.2));
return PushPayload.newBuilder()
.setPlatform(Platform.ios())
.setAudience(Audience.tag_and("tag1", "tag_all"))
.setNotification(Notification.newBuilder()
.addPlatformNotification(IosNotification.newBuilder()
.setAlert(ALERT)
.setBadge(5)
.setMutableContent(false)
// .setSound("happy")
.setSound(sound)
.addExtra("from", "JPush")
.build())
.build())
.setMessage(Message.content(MSG_CONTENT))
.setOptions(Options.newBuilder()
.setApnsProduction(true)
.build())
.build();
}
4、還有一點就是,安裝插件後,或者集成sdk後若推送不到,可先通過官方推送平臺進行推送,若對應的平臺能收到,那說明配置以及基礎功能沒有問題,iOS下只能在對應的環境下收到(開發能收到,生產環境就不能收到,反之),此時只需檢查服務端對應推送方法即可,不用着急修改前段或者客戶端。