使用ASP.NET服务器添加iPhone推送通知

38

以下是概述。

我需要为iPhone应用程序添加推送通知。服务器端使用C#的ASP.NET。

我想要的是一些指导,以便逐步完成这个过程。然后,我将发布iPhone项目和ASP.NET Web应用程序的通用代码,以及逐步说明,以便其他人可以学习。

这是我的理解:

  1. 申请APNS证书并将其添加到钥匙串中。(不确定如何将此引入ASP.NET)
  2. 使iPhone在registerForRemoteNotificationWithTypes中注册,将值发送到服务器,并存储在数据库中。似乎这段代码很容易注册,但我找不到一个好的示例。(向ASP.NET服务器发送值没有问题。)
  3. 您的服务器应用程序创建有效载荷字符串,进行JSON编码,使用已保存到数据库中的设备令牌为每个(或组)的iPhone 发送到APNS服务器。

因此,开发补充的部分需要以下几个部分:

  • iPhone注册代码

  • 将iPhone注册代码发送到服务器并保存到数据库中的代码(这很容易,而且我已经有了这些部分)。

  • C#中的服务器端APNS联系代码。这还包括如何使用在Apple开发者网站上生成的证书。

  • 此外,有效载荷可以是多项选择问题吗,并且可以通过将结果发送回服务器进行回答吗?

谢谢您的帮助。我将将此转换为其他人的教程。


2
嗨@RickLeinecker,您是否曾经能够为iPhone项目和ASP.NET Web应用程序创建通用代码,并提供逐步说明?如果您可以为其他人提供这些内容,那将是非常棒的。 - Brabbeldas
4个回答

18

我花费很长时间才搞清楚这个问题,但最终我将所有的线索拼凑在一起了。您需要下载在开发者门户网站上注册的APPID的证书。该证书必须转换为P12格式才能在Windows上使用。以下是我在UNIX中使用的命令:

步骤1:

openssl x509 -in aps_developer_identity.cer -inform DER -out aps_developer_identity.pem -outform PEM}

其中 aps_developer_identity.cer 是从门户网站下载的文件

步骤 2:

openssl pkcs12 -nocerts -out APSCertificates.pem -in APSCertificates.p12

其中APSCertificates.p12是从Mac密钥链(Keychain)导出的文件。这很重要,你必须将证书从门户网站导入密钥链中。在"My Certificates"中找到它,打开披露三角形并突出显示证书和私钥,然后右键单击并将它们导出。给它们一个密码并将它们保存为p12文件。

第三步:

openssl pkcs12 -export -in aps_developer_identity.pem -out aps_developer_identity.p12 -inkey APSCertificates.pem
您将被提示输入几次在 Keychain 导出证书和私钥时使用的密码,并再次提示输入新密码以重新加密所有内容,但最终您将获得文件 aps_developer_identity.p12,您需要将其移动到 Windows 系统,然后在 MMC 中的“个人”和“受信任的根”部分中导入它。在 C# 中,当您使用 MoonAPNS 并调用 PushNotification 类时,您需要为其提供该证书的路径。还请确保从设备令牌中删除空格。

11

对于C#的推送部分,有一个开源项目可以使用,它很容易使用,并且具有一些示例代码,说明如何使用库以发送推送通知,这里是一个链接C#推送通知项目

基本上你需要做的就是从苹果获得推送证书,然后将其放入你的项目中,在C#项目中打开它(你可以查看示例,找到在哪里操作将会很明显)...

iPhone部分相当简单,有大量的示例可供参考。


项目现已弃用。有其他建议吗? - capdragon
同一位作者现在正在开发PushSharp - https://github.com/Redth/PushSharp/ - Stefan Mohr

3
我会推荐一个在线推送解决方案。在Parse.com关闭后,我使用过https://onesignal.com/ - 免费且易于与REST API集成。 旧回答:
我使用了https://parse.com/products/push - 免费且易于与REST API集成。 旧回答:
我会推荐PushSharp
我曾经遇到Moon-APNS的一些问题,尝试切换到PushSharp,它在5分钟内就可以工作。PushSharp甚至支持在同一个包中发送Android和Windows Phone推送消息,并可用作NuGet Package。

PushSharp非常容易工作,并具有一步步教程,可以帮助您跨越所有iOS的障碍。 - raider33
1
还伴随着许多奇怪的问题! :) - Mrchief
是的,PushSharp一直卡着不动。 - Toolkit

1
很遗憾,PushSharp仅支持.NET 4.0。作者也没有计划支持3.5。但我需要用到3.5,因为服务器只支持3.5。所以我选择了Moon-APNS,虽然我还没有看到它的工作效果。但是我今天刚刚实现了它,明天我的朋友们将会测试它。Moon-APNS也是.NET 4.0,但是很容易将它设置为3.5。只需下载3.5的依赖库并包含它们,就可以开始使用了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接