PushSharp

时间:2016-11-14 18:12:24

标签: c# apple-push-notifications pushsharp passkit

我尝试在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,重置批量计时器...

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);