Xamarin Forms WinPhone 8.1 Silverlight WNS 推送通知

Xamarin Forms WinPhone 8.1 Silverlight WNS push notifications

我正在尝试将我的应用程序配置为使用 WNS 而不是 MPNS(我正在使用 Xamarin Forms 并且有一个 Win Phone 8.1 Silverlight 项目,后端有一个 Azure 通知中心),为此我更新了代码以使用移动服务为推送通知注册 phone,并将 WMAppManifest.xml 中的通知服务更改为 WNS。实施这些更改后,当我通过 azure 检查 phones 注册时,它说它是 MPNS。下面是我的配置的一些屏幕截图和我如何注册应用程序的代码片段。

WMAppManifest.xml

Package.appxmanifest

NotificationManager 代码

public class PushNotificationManager : IPushNotificationManager
{
    private PushNotificationChannel channel;

    public PushNotificationManager() { }

    public static MobileServiceClient MobileService = new MobileServiceClient(Utilities.Constants.ApplicationURL, Utilities.Constants.ApplicationKey);

    public async Task RegisterDevice()
    {
        try
        {
            channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();

            channel.PushNotificationReceived += Channel_PushNotificationReceived;

            await this.RegisterWinDevice(channel.Uri);

            NotificationTask.UnregisterBackgroundTask();
            NotificationTask.RegisterBackgroundTask();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    protected void Channel_PushNotificationReceived(PushNotificationChannel sender, PushNotificationReceivedEventArgs args)
    {
        try
        {
            //Create notification
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    public async Task UnregisterDevice()
    {
        if(channel != null)
        {
            channel.Close();
        }

        await MobileService.GetPush().UnregisterNativeAsync();
    }

    private async Task RegisterWinDevice(string channelUri)
    {
        try
        {
            var tags = new List<string>() { };
            User user = LocalStorage.GetUserInfo();
            tags.Add(user.Id.ToString());

            await MobileService.GetPush().RegisterNativeAsync(channelUri, tags.ToArray());
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void CreateNotification(string title, string message)
    {
        //Show Toast
    }
}

在 azure 中,我设置了 windows 包 SID 和客户端密码。我还启用了未经身份验证的推送通知(尽管据我了解这是针对 MPNS 的)。

最后是它如何使用以下代码注册的屏幕截图:

如果有人知道如何让它正确注册到 WNS,我将非常感谢您的帮助。谢谢!

只是更新一下我是如何解决我的问题的,以防万一有人遇到这个问题。我不得不将我的 winphone 项目切换到非 silverlight 应用程序(我猜这个版本不支持它)。一旦我这样做了,一切就开始正常工作了。