2016-11-14 132 views
12

我嘗試在Apple Passkit相關項目中使用PushSharp。通過PushSharp發送Passkit推送時的DeviceToken長度無效

我目前的問題是關於passkit推動。

當我嘗試創建我的通知,它說

設備tokent長度無效(確切異常消息:無效DeviceToken長度

var notif = new ApnsNotification(token, payload); 

當我註冊一個新passkit優惠券,它的令牌長度爲32。這似乎沒給我。

應該是什麼問題?是否PushSharp支持passkit呢?依我之見,有些人我們編輯它,但我找不到任何官方信息。

請注意,我知道PushSharp,因爲我使用它發送正常推送消息,它已工作多年,沒有任何問題對我來說。我的問題是關於passkit相關的推送。

非常感謝!

編輯

改變由巴里斯阿卡爾的建議代碼後,這個問題是固定的,但另一個來自:

Apple Notification Failed: ID=1, Code=ConnectionError

2016年11月18日11時07分22秒由Matchi.com提供回到。 [INFO]停止:等待任務2016-11-18 11:07:22.de。 [INFO]等待所有任務1 2016-11-18 11:07:22.de。 [信息] APNS客戶端[1]:發送批次ID = 1,計數= 1 2016-11-18 11:07:22.de。 [信息] APNS客戶端[1]:發送批量,等待可能的響應...蘋果通知失敗:ID = 1, 代碼= ConnectionError 2016-11-18 11:07:22.de。 [信息]所有任務 完成2016-11-18 11:07:22.de。 [信息]通過時間2016-11-18 11:07:22.de。 [信息]經紀人完成2016-11-18 11:07:22.de。 [調試] 經紀人任務截止2016-11-18 11:07:22.de。 [INFO]停止:完成 等待任務2016-11-18 11:07:22.de。 [INFO] APNS客戶端[1]:完成 閱讀批次ID = 1,正在重置批處理定時器......

+2

你已經看過[這個問題](https://github.com/Redth/PushSharp/issues/771)嗎? – dymanoid

回答

8

在好像在an older version,它會像這樣工作:

var n = new AppleNotification().WithPasskitUpdate(); 

功能WithPasskitUpdate()已不存在,但是這應該是等價的:

var notif = new ApnsNotification(); 
notif.DeviceToken = token; 
notif.Payload = payload; 

沒有測試,但是檢查代碼後,也許它可以工作。基本上你是這樣繞過token length check in the ApnsNotification constructor(這應該可能是固定的,如果令牌對於passkit推送更小)。

此外,請確保使用正確的證書(似乎與常規推送通知的證書不同),並使用生產設置,因爲存摺似乎沒有沙箱環境(請參閱this answer)。

此外,你需要通過falseApnsConfiguration構造的validateIsApnsCertificate參數,因爲對於不辦理pushkit證書的證書進行檢查。

var config = new ApnsConfiguration(ApnsConfiguration.ApnsServerEnvironment.Production, certificateFile, certificateFilePwd, false); 
+0

還要確保使用正確的證書(這似乎是從證書定期推送通知不同),並測試這個與生產許可證,因爲似乎是存摺沒有沙箱環境中(見[這個答案](HTTP:/ /stackoverflow.com/a/30493091/594074))。 –

+0

謝謝你們!我會嘗試你的代碼,證書是好的,它是100%。 – Tom

+0

我試過了,它解決了這個問題,但又出現了另一個問題。 PLS。在我的問題中檢查我的更新。非常感謝! – Tom