NotificationHub Push Notification returns : 从 Token Provider 获取的 Token 错误

NotificationHub Push Notification returns : The Token obtained from the Token Provider is wrong

我有 Wp8.1 Silverlight 应用程序,它从 Mobileservice(旧的 Azure 服务)接收推送通知 (WNS)。

因此,由于新功能,我想更新到新服务。我现在 created/upgraded 有一个新服务器可以使用 App Service - Mobile App。并使用来自 azure 的示例应用程序测试了推送通知(一切正常)。

回到我的应用程序 WP8.1 -> 通过 NuGet (2.0.1) 添加新包 Microsoft.Azure.Mobile.Client,问题是 Microsoft.WindowsAzure.Mobile.Ext 不包含 'GetPush' 扩展名。好像少了它?看WP8版本,只注册到MPNS,我需要WNS。所以我不知道是否可以使用任何其他组件。

我可以添加另一个程序集引用吗?

更新

下面的代码让我在服务器上注册设备,我可以看到设备正确注册。其中 channelUriinstallationInformation 由客户端检索并发送到服务器。

Installation ins = new Installation();
ins.Platform = NotificationPlatform.Wns;
ins.PushChannel = uTagAndChan.ChannelUri;
ins.Tags = uTagAndChan.Tags;
ins.InstallationId = uTagAndChan.installationInformation;
await hubClient.CreateOrUpdateInstallationAsync(ins);

向已注册的标签发送测试 toast-notification,导致以下错误:

The Token obtained from the Token Provider is wrong

搜索这个问题我发现 Windows Store App Push Notifications via Azure Service Bus。建议的解决方案说直接从应用程序注册到通知中心,我宁愿不让应用程序直接访问中心。但这是唯一的方法吗? (请注意,答案未被接受,但我会尝试所有方法,尽管这不是理想的解决方案)

更新

通过客户端 (WP8.1 Silverligt) 注册通知,向 MPNS 注册,这是我不想要的。

服务器上的代码片段注册了一个WNS,两个注册可以看这里:

URI 检索是使用

完成的
var channel = await Windows.Networking.PushNotifications.PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();

在描述中指出它 returns 是一个 WNS。这似乎推断我在服务器上进行的注册(顶部的代码片段)是正确的,而客户端上的注册是错误的。

但是图像上的注册似乎不正确。两次注册的 PNS Identifier 不应该不同吗? expiration date 似乎也有误?

如何修复此问题,因为 NuGet 包中不存在 GetPush()(在示例中可以正确注册客户端以获取通知)?

更新

我读到一个地方,删除并重新创建 NotificationHub 可能会有所帮助。我今天会试试这个。即使它有效,也更希望有解决方案,并知道注册是否正确完成?

临时解决方案:

删除、重新创建、插入包 SID 和机密。它再次起作用(奇怪)!

仍然对潜在问题感兴趣!

删除并重新创建服务,设置所有相同的设置使其再次运行。

我的 UWP 也有同样的问题。但就我而言,我对自签名证书有疑问。

当我将 AppxPackageSigningEnabled 属性 设置为 True(在 .csproj 中)时,通知停止工作并且我得到“从令牌提供者获得的令牌是错误的"(测试从 Azure 门户发送)。

证书的颁发者必须与 .appxmanifest 文件中 Identity 元素中的 Publisher 相同。