jjzjj

c# - PushSharp 发送 passkit 推送时无效的 DeviceToken 长度

coder 2024-05-28 原文

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

我当前的问题是 passkit 推送。

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

device tokent length is invalid (exact exception message: Invalid DeviceToken Length.

var notif = new ApnsNotification(token, payload);

当我注册一个新的 passkit 优惠券时,它的 token 长度是 32。这对我来说似乎没问题。

应该是什么问题? PushSharp 完全支持 passkit 吗?据我所知,有人使用过它,但我找不到任何关于它的官方信息。

请注意,我知道 PushSharp,因为我用它发送正常 推送消息,它已经工作多年,对我来说没有任何问题。我的问题是关于 passkit 相关的推送。

非常感谢!

编辑

根据 Baris Akar 的建议更改代码后,问题得到解决,但另一个问题出现了:

Apple 通知失败:ID=1,Code=ConnectionError

2016-11-18 11:07:22.de. [INFO] Stopping: Waiting on Tasks 2016-11-18 11:07:22.de. [INFO] Waiting on all tasks 1 2016-11-18 11:07:22.de. [INFO] APNS-Client[1]: Sending Batch ID=1, Count=1 2016-11-18 11:07:22.de. [INFO] APNS-Client[1]: Sent Batch, waiting for possible response... Apple Notification Failed: ID=1, Code=ConnectionError 2016-11-18 11:07:22.de. [INFO] All Tasks Finished 2016-11-18 11:07:22.de. [INFO] Passed WhenAll 2016-11-18 11:07:22.de. [INFO] Broker IsCompleted 2016-11-18 11:07:22.de. [DEBUG] Broker Task Ended 2016-11-18 11:07:22.de. [INFO] Stopping: Done Waiting on Tasks 2016-11-18 11:07:22.de. [INFO] APNS-Client[1]: Done Reading for Batch ID=1, reseting batch timer...

最佳答案

似乎在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 推送的 token 较小,这应该可能是固定的)。

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

此外,您需要为 ApnsConfiguration 构造函数的 validateIsApnsCertificate 参数传递 false,因为有一个不检查证书的检查'处理 pushkit 证书。

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

关于c# - PushSharp 发送 passkit 推送时无效的 DeviceToken 长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40595170/

有关c# - PushSharp 发送 passkit 推送时无效的 DeviceToken 长度的更多相关文章

  1. ruby-on-rails - unicode 字符串的长度 - 2

    在我的Rails(2.3,Ruby1.8.7)应用程序中,我需要将字符串截断到一定长度。该字符串是unicode,在控制台中运行测试时,例如'א'.length,我意识到返回了双倍长度。我想要一个与编码无关的长度,以便对unicode字符串或latin1编码字符串进行相同的截断。我已经了解了Ruby的大部分unicode资料,但仍然有些一头雾水。应该如何解决这个问题? 最佳答案 Rails有一个返回多字节字符的mb_chars方法。试试unicode_string.mb_chars.slice(0,50)

  2. ruby - 如何以所有可能的方式将字符串拆分为长度最多为 3 的连续子字符串? - 2

    我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123

  3. ruby - 匹配大写字母并用后续字母填充,直到一定的字符串长度 - 2

    我有一个驼峰式字符串,例如:JustAString。我想按照以下规则形成长度为4的字符串:抓取所有大写字母;如果超过4个大写字母,只保留前4个;如果少于4个大写字母,则将最后大写字母后的字母大写并添加字母,直到长度变为4。以下是可能发生的3种情况:ThisIsMyString将产生TIMS(大写字母);ThisIsOneVeryLongString将产生TIOV(前4个大写字母);MyString将生成MSTR(大写字母+tr大写)。我设法用这个片段解决了前两种情况:str.scan(/[A-Z]/).first(4).join但是,我不太确定如何最好地修改上面的代码片段以处理最后一种

  4. ruby-on-rails - Rails 5 Active Record 记录无效错误 - 2

    我有两个Rails模型,即Invoice和Invoice_details。一个Invoice_details属于Invoice,一个Invoice有多个Invoice_details。我无法使用accepts_nested_attributes_forinInvoice通过Invoice模型保存Invoice_details。我收到以下错误:(0.2ms)BEGIN(0.2ms)ROLLBACKCompleted422UnprocessableEntityin25ms(ActiveRecord:4.0ms)ActiveRecord::RecordInvalid(Validationfa

  5. c# - 如何在 ruby​​ 中调用 C# dll? - 2

    如何在ruby​​中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL

  6. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

  7. C# 到 Ruby sha1 base64 编码 - 2

    我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha

  8. ruby - 从 String#split 返回的零长度字符串 - 2

    在Ruby1.9.3(可能还有更早的版本,不确定)中,我试图弄清楚为什么Ruby的String#split方法会给我某些结果。我得到的结果似乎与我的预期相反。这是一个例子:"abcabc".split("b")#=>["a","ca","c"]"abcabc".split("a")#=>["","bc","bc"]"abcabc".split("c")#=>["ab","ab"]在这里,第一个示例返回的正是我所期望的。但在第二个示例中,我很困惑为什么#split返回零长度字符串作为返回数组的第一个值。这是什么原因呢?这是我所期望的:"abcabc".split("a")#=>["bc"

  9. ruby - 使用 Ruby 通过 Outlook 发送消息的最简单方法是什么? - 2

    我的工作要求我为某些测试自动生成电子邮件。我一直在四处寻找,但未能找到可以快速实现的合理解决方案。它需要在outlook而不是其他邮件服务器中,因为我们有一些奇怪的身份验证规则,我们需要保存草稿而不是仅仅发送邮件的选项。显然win32ole可以做到这一点,但我找不到任何相当简单的例子。 最佳答案 假设存储了Outlook凭据并且您设置为自动登录到Outlook,WIN32OLE可以很好地完成此操作:require'win32ole'outlook=WIN32OLE.new('Outlook.Application')message=

  10. Ruby - 如何将消息长度表示为 2 个二进制字节 - 2

    我正在使用Ruby,我正在与一个网络端点通信,该端点在发送消息本身之前需要格式化“header”。header中的第一个字段必须是消息长度,它被定义为网络字节顺序中的2二进制字节消息长度。比如我的消息长度是1024。如何将1024表示为二进制双字节? 最佳答案 Ruby(以及Perl和Python等)中字节整理的标准工具是pack和unpack。ruby的packisinArray.您的长度应该是两个字节长,并且按网络字节顺序排列,这听起来像是n格式说明符的工作:n|Integer|16-bitunsigned,network(bi

随机推荐