【问题标题】:Processing multiple Notifications with PushSharp for ios and android使用 PushSharp for ios 和 android 处理多个通知
【发布时间】:2013-07-06 08:28:49
【问题描述】:

我已经实现了一个 Windows 服务,它每 3 分钟运行一次,并轮询数据库以获取准备发送的通知。我将它们收集到一个列表中,确定它是 ios 还是 android 通知,然后调用 PushBroker(PushSharp 解决方案作为编译解决方案包含在我的解决方案项目中)然后我迭代列表中的项目以进行如下处理:

    static void ProcessIOS(List<Client> IOS)
   {
       PushBroker push = new PushBroker();
       push.OnNotificationSent += NotificationSent;
       push.OnChannelException += ChannelException;
       push.OnServiceException += ServiceException;
       push.OnNotificationFailed += NotificationFailed;
       push.OnDeviceSubscriptionExpired += DeviceSubscriptionExpired;
       push.OnDeviceSubscriptionChanged += DeviceSubscriptionChanged;
       push.OnChannelCreated += ChannelCreated;
       push.OnChannelDestroyed += ChannelDestroyed;
       foreach (var entry in IOS)
           {
               string dev = entry.Device_Id.ToString();
               string load = entry.Push_Payload.ToString();
               int count = entry.Unread_Count;
              var appleCert = File.ReadAllBytes(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "../../../productionfile.p12"));
               push.RegisterAppleService(new ApplePushChannelSettings(true, appleCert, "password")); //Extension method
                     push.QueueNotification(new AppleNotification()
                                          .ForDeviceToken(dev)
                                          .WithAlert(load)
                                          .WithBadge(count));
                  }

   }

消息发送成功,但是我遇到的问题是 1.尝试在消息发送成功或失败时检索响应,失败原因等......这些是pushsharp代码中的代表,以便我可以将响应记录到我们的数据库中。为了澄清......我需要知道错误响应来自哪个条目尝试(设备ID)。由于数据未链接到任何特定的 deviceid 传递尝试,因此我无法通过通知代理生成的消息来判断。 2. 我还希望能够保持 pushsharp 代码不变,并从我的代码中调用方法,以减少将来对 pushsharp 代码进行任何更新时的合并问题。 有什么建议? 如果有人可以给我任何关于如何使用响应事件和委托来检索每次通知发送尝试的信息的示例,我将不胜感激。 谢谢。

【问题讨论】:

    标签: notifications push pushsharp


    【解决方案1】:

    我没有收到任何回复,但通过进一步研究,我能够解决失败的问题,并且能够成功发送通知而没有错误。解决方案是重新生成我的证书。由于我将 Windows 服务器用于我的推送通知服务器,因此以下步骤将指导您从 Windows 服务器生成 APNs 证书。 如果您已经从 Mac OS X 工作站生成了证书,则可以跳过此步骤 部分并将您的证书上传到推送通知服务器。

    第 1 步 - 生成证书签名请求 (CSR) 1. 转到开始 > 管理工具 > Internet 信息服务 (IIS) 管理器,然后选择 服务器名称。 2. 双击服务器证书。

    注意:本文档中IIS服务器版本为7.0。

    1. 在右侧的“操作”窗格中,单击“创建证书请求”。申请证书 出现向导。

    2. 在“可分辨名称属性”窗口中,键入以下内容: • 通用名称——与您的 Apple 开发者帐户关联的名称 • 组织——您的组织/公司的合法注册名称 • 组织单位——组织内的部门名称 • 城市/地区——您的组织所在的城市 • 州/省——您的组织所在的州或省 • 国家/地区——您的组织所在的国家或地区

    3. 单击下一步。出现加密服务提供者属性窗口。

    4. 在加密服务提供程序中选择 Microsoft RSA SChannel 加密提供程序 字段和位长度字段中的 2048,然后单击下一步。

    5. 选择要保存证书请求文件的位置。一定要记住 文件名和保存文件的位置。

    6. 单击完成。您现在已创建 CSR 请求并准备将其上传到您的 Apple 发展门户。 第 2 步 — 将 CSR 上传到您的 Apple 开发门户并生成 APNs 证书 第 3 步 — 下载并安装您的 APNs 证书

    7. 单击“下载”将 .cer 文件保存到您的计算机。

    8. 将 .cer 证书文件复制到您在其中创建 证书申请文件。

    9. 转到开始 > 管理工具 > Internet 信息服务 (IIS) 管理器,选择 服务器名称,然后双击服务器证书
    10. 在右侧的“操作”窗格中,单击“完成证书请求”。完整的 出现证书申请向导。

    11. 选择您从 Apple Developer Portal 下载的 .cer 证书文件,然后键入 友好名称字段中的应用程序名称(例如 com.xxxx.xxxxx)。

    提示:友好名称不是证书本身的一部分,而是由服务器使用 管理员轻松区分证书。 6. 选择确定。证书将安装在服务器上。 7. 验证您的 Apple 生产推送服务证书出现在服务器证书上 列表。

    A.如果可以看到证书,请按照以下步骤导出证书并将其上传到 推送通知服务器。 8. 右键单击​​“服务器证书”列表中的证书,然后单击“导出”。

    1. 选择要保存文件的位置,选择导出密码,然后 单击确定。 (导出为 .pfx)

    提示:如果您只能选择另存为 .cer 文件而不是 .pfx,那么您不是 正确导出证书。确保您选择了正确的文件来导出。如果您仍然没有导出为 .pfx 的选项,请转到下面的步骤 B。 注意:请务必记住密码,或将其保存在安全的地方。密码将 将证书上传到推送通知服务器时需要。 完成所有这些步骤后,您应该拥有以下项目: • APNs 证书(.pfx 格式,不是 .cer 格式) • 您在导出证书时设置的密码 如果您尚未在该服务器上,您现在可以将证书上传到推送通知服务器。

    B.如果您在服务器证书 UI 中看不到证书,如上所示,或者没有从该 UI 导出为 .pfx 的选项,请按照以下步骤导出证书并将其上传到推送通知服务器。 8.转到 Microsoft 管理控制台 9. 在开始菜单上,单击运行,键入 MMC,然后单击确定。 Microsoft 管理控制台打开时显示一个空控制台(或管理工具),如下图 1 所示。在您添加一些管理单元之前,空控制台没有管理功能。 Microsoft 管理控制台窗口顶部菜单栏上的 MMC 菜单命令适用于整个控制台。

    1. 点击文件->打开并选择Console1.msc并打开

    2. 右键单击要导出的证书选择所有任务->导出

    3. 在证书导出向导上单击下一步

    4. 选择是,导出私钥
    5. 警告:不要选择删除私钥
    6. 如果默认情况下尚未选择,请选择个人信息交换 - PKCS #12 (.PFX)。
    7. 浏览到计算机上 .cer 所在的位置
      1. 选择要保存文件的位置,选择导出密码,然后单击“确定”。 (导出为 .pfx)
    8. 转到导出的 .pfx 文件并将扩展名重命名为 .p12。

    9. 将文件放在安装推送通知引擎的根目录中(例如 C:\ 或 D:)

    【讨论】:

    • 你能告诉我你是如何“在消息发送成功或失败时检索响应,失败原因等”吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多