所以,我試圖從Java與APNS進行通信。我找到了java-apns,javapns和pushy庫。 Java-apns似乎擁有最充足的API。Java:推送通知但未收到
初始化:
public static void main(String[] args) {
String certificateFilePath = args[0]; // "/path/to/cert.p12"
apnsService = APNS.newService()
.withCert(certificateFilePath, Config.APNS_PROVIDER_CERTIFICATE_PASSWORD)
.withDelegate(new ApnsDelegate() {
@Override
public void messageSent(ApnsNotification apnsNotification, boolean b) {
System.out.println("message sent");
}
@Override
public void messageSendFailed(ApnsNotification apnsNotification, Throwable throwable) {
System.out.println("message failed");
}
@Override
public void connectionClosed(DeliveryError deliveryError, int i) {
System.out.println("connection closed");
}
@Override
public void cacheLengthExceeded(int i) {
System.out.println("cache length exceeded");
}
@Override
public void notificationsResent(int i) {
System.out.println("notification resent");
}
})
.withSandboxDestination()
.build();
...
}
此時iOS應用在設備上啓動。本地和遠程通知已註冊,設備令牌已獲取併發送到服務器。
然後一些事件發生,我發送通知:
static void sendMessage(List<String> tokens, String message) {
String payload = APNS.newPayload().alertBody(message).build();
apnsService.push(tokens, payload);
}
每個令牌是一樣的東西"5fb58761f9...4e92465e12"
。
ApnsDelegate說的唯一的東西是「消息發送」,但設備上沒有任何反應。我認爲這條消息是真正發送的,因爲我試圖發送帶有損壞的令牌的通知,在這種情況下,我收到「消息失敗」,並提示有關無效令牌的錯誤。
所以,其實我甚至不明白我的問題的起源。但是我覺得它是用Java編寫的,因爲iOS部分非常簡單,與服務器端相比,它的所有HTTP/2-voodoo-stuff都是。
哪款iPhone OS? – iMHitesh
@Hiteshsurani,我使用iOS10在設備上進行測試,但我的部署目標是8.0 – seelts
如果12K用戶(如@RadLexus)的編輯不符合您的喜好,那麼可能值得讓他們詢問編輯的目的。在這種情況下,這是非常正確的 - 我們不使用[解決]標題攻擊,也沒有解決方案的答案。總是把它們放在一個答案中,我已經在下面爲你做了答案。 – halfer