MPNS の代わりに WNS を使用するようにアプリを構成しようとしています (私は Xamarin Forms を使用しており、バックエンドに Azure 通知ハブを備えた Win Phone 8.1 Silverlight プロジェクトを持っています)。そのために、モバイルを使用するようにコードを更新しました。サービスをプッシュ通知用に電話を登録し、WMAppManifest.xml の通知サービスを WNS に変更しました。これらの変更を実装した後、Azure で電話の登録を確認すると、MPNS と表示されます。以下は、私の構成のスクリーン キャプチャと、アプリの登録方法のコード スニペットです。
WMAppManifest.xml
パッケージ.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
}
}
紺碧では、Windows パッケージ SID とクライアント シークレットを設定しました。また、認証されていないプッシュ通知を有効にしています (私の理解では、これは MPNS 用です)。
最後に、次のコードで登録する方法のスクリーン キャプチャを次に示します。
WNS に適切に登録する方法を誰かが知っている場合は、助けていただければ幸いです。ありがとう!