gpt4 book ai didi

c# - 在 Windows Phone silverlight 8.1 上接收 WNS 推送通知

转载 作者:太空狗 更新时间:2023-10-29 21:44:11 27 4
gpt4 key购买 nike

我有 Windows Phone 8.1 silverlight 应用程序,我想在其中使用新框架 WNS 接收通知。

我在package.appxmanifest中有:<identity name="4657xxxxxxx" publisher="CN=xxxxx" version="1.0.0.0"/>并将其添加到移动服务中心。

为此,我删除了对 MPNS 使用的旧引用,并为 WNS 添加了以下内容:

using Windows.UI.Notifications;

using Windows.Networking.PushNotifications;

using Windows.UI.StartScreen;

这产生了一种获取channelURI的新方法:

 public static PushNotificationChannel CurrentChannel { get; private set; }

public async static Task<bool> UploadChannel()
{
bool newChannel = false;
var channel = await Windows.Networking.PushNotifications.PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
var settings = Windows.Storage.ApplicationData.Current.LocalSettings.Values;
object oldChannel;
settings.TryGetValue("channelURI", out oldChannel);
if ((oldChannel as PushNotificationChannel).Uri != CurrentChannel.Uri)
{
settings.Add("channelURI", CurrentChannel);
newChannel = true;
}
try
{
await App.MobileService.GetPush().RegisterNativeAsync(channel.Uri);
}
catch (Exception exception)
{
CurrentChannel.Close();
HandleRegisterException(exception);
}

CurrentChannel.PushNotificationReceived += CurrentChannel_PushNotificationReceived;
return newChannel;
}
private static void HandleRegisterException(Exception exception)
{
MessageBox.Show("error - retry pushchannel");
}

此外,我删除了 ID_CAP_PushNotification基于microsofts update info我没有收到 channel ,但出现错误:

The application does not have the cloud notification capability. (Exception from HRESULT: 0x803E0110)

解决方案搜索错误并 found this link ,这可以通过访问 package.appxmanifest 并启用 Internet(客户端和服务器)来解决,如下面的答案所述。

错误 2然后是UploadChannel()功能应该可以工作。但是,注册 API 调用 await App.MobileService.GetPush().RegisterNativeAsync(channel.Uri);导致服务器出现错误:

Message='Could not register with the 'mpns' platform. Error received: 'Unsupported channel uri: 'https://db3.notify.windows.com . . . .

这个错误是有道理的,但我不知道如何解决它。

Ekstra在服务器上,我可以使用 URI 进行订阅并接收通知。但不是在客户端。事情应该是这样吗?

最佳答案

在客户端:

理想情况下,要使用 WNS,您应该从 WMAppManifest.xml 中删除对 MPNS 的所有引用,并将 Windows 应用商店提供的信息添加到您的 package.appxmanifest 中。

我了解到您正在从 WP8 迁移到 WP8.1。因此,在您的 package.appxmanifest 中,编辑代码,使其如下所示:

<Identity Name="4657xxxxxxx" Publisher="CN=xxxxx" Version="1.0.0.0" />
<mp:PhoneIdentity PhoneProductId="xxxx" PhonePublisherId="00000000-0000-0000-0000-000000000000" />

注意: PhonePublisherId 中的 0 是故意的。我不知道为什么,但当我不提供它们时,应用程序将无法运行。

您正在正确执行 channel uri 请求:

PushNotificationChannel channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
string channelUri = channel.Uri;

您还应该在 Package.appxmanifest 中设置要检查的Internet(客户端和服务器)功能。

要在客户端上接收通知,您应该按照此处所述拦截接收到的通知: https://msdn.microsoft.com/en-us/library/windows/apps/xaml/jj709907.aspx

在服务器端:

出现“不支持的 channel URI”错误是因为您在 Azure 服务器中使用 MPNS 方法处理 URI。

请参阅此处,了解使用 WNS 执行此操作的正确方法:http://azure.microsoft.com/en-us/documentation/articles/mobile-services-dotnet-backend-windows-universal-dotnet-get-started-push/

关于c# - 在 Windows Phone silverlight 8.1 上接收 WNS 推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30278608/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com