12

我尝试在 Apple passkit 相关项目中使用 PushSharp。

我目前的问题是关于 passkit 推送。

当我尝试创建通知时,它说

设备令牌长度无效(确切的异常消息:无效的设备令牌长度。

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,计数=1 2016-11-18 11:07:22.de。[INFO] APNS-Client[1]:已发送批次,等待可能的响应... Apple 通知失败:ID=1,代码=ConnectionError 2016-11-18 11:07:22.de。[INFO] 所有任务已于 2016-11-18 11:07:22.de 完成。[INFO] 通过WhenAll 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 的读取完成,正在重置批次计时器...

4

1 回答 1

8

似乎在旧版本中,它的工作方式如下:

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

该功能WithPasskitUpdate()不再可用,但这应该是等效的:

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

没有测试过,但是在检查了代码之后,也许它可以工作。基本上,您以这种方式绕过构造函数中的令牌长度检查ApnsNotification(如果令牌对于 passkit 推送来说较小,则应该是固定的)。

还要确保使用正确的证书(这似乎与常规推送通知的证书不同)并使用生产设置,因为似乎没有用于存折的沙盒环境(请参阅此答案)。

此外,您需要传递构造函数falsevalidateIsApnsCertificate参数ApnsConfiguration,因为检查不处理 pushkit 证书的证书。

var config = new ApnsConfiguration(ApnsConfiguration.ApnsServerEnvironment.Production, certificateFile, certificateFilePwd, false);
于 2016-11-17T16:31:01.920 回答