我尝试在Apple passkit相关项目中使用PushSharp。
我目前的问题是关于passkit推送。
当我尝试创建通知时,它会显示
设备密码长度无效(确切的异常消息:无效的DeviceToken长度。
var notif = new ApnsNotification(token, payload);
当我注册新的passkit优惠券时,其令牌长度为32.对我来说似乎没问题。
应该是什么问题? PushSharp是否支持passkit?正如我所见,有些人使用它,但我找不到任何关于它的官方信息。
请注意,我知道PushSharp使用它发送普通推送消息,它已经工作多年没有任何问题。我的问题是与passkit相关的推动。
非常感谢!
修改
在Baris Akar的建议改变代码后,问题得到解决,但另一个问题出现了:
Apple Notification Failed: ID=1, Code=ConnectionError
2016-11-18 11:07:22.de。 [INFO]停止:等待任务2016-11-18 11:07:22.de。 [INFO]等待所有任务1 2016-11-18 11:07:22.de。 [INFO] APNS-Client [1]:发送批次ID = 1,Count = 1 2016-11-18 11:07:22.de。 [INFO] APNS-Client [1]:已发送批处理,等待可能的响应... Apple通知失败:ID = 1, Code = ConnectionError 2016-11-18 11:07:22.de。 [INFO]所有任务 完成2016-11-18 11:07:22.de。 [INFO]通过时所有2016-11-18 11:07:22.de。 [INFO] Broker IsCompleted 2016-11-18 11:07:22.de。 [DEBUG] 经纪人任务结束2016-11-18 11:07:22.de。 [INFO]停止:完成 等待任务2016-11-18 11:07:22.de。 [INFO] APNS-Client [1]:完成 读取批次ID = 1,重置批量计时器...
答案 0 :(得分: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)。
此外,您需要为false
构造函数的validateIsApnsCertificate
参数传递ApnsConfiguration
,因为检查了不能处理pushkit证书的证书。
var config = new ApnsConfiguration(ApnsConfiguration.ApnsServerEnvironment.Production, certificateFile, certificateFilePwd, false);