0

MPNS の代わりに WNS を使用するようにアプリを構成しようとしています (私は Xamarin Forms を使用しており、バックエンドに Azure 通知ハブを備えた Win Phone 8.1 Silverlight プロジェクトを持っています)。そのために、モバイルを使用するようにコードを更新しました。サービスをプッシュ通知用に電話を登録し、WMAppManifest.xml の通知サービスを WNS に変更しました。これらの変更を実装した後、Azure で電話の登録を確認すると、MPNS と表示されます。以下は、私の構成のスクリーン キャプチャと、アプリの登録方法のコード スニペットです。

WMAppManifest.xml

WNS

プッシュ通知が有効

パッケージ.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 に適切に登録する方法を誰かが知っている場合は、助けていただければ幸いです。ありがとう!

4

1 に答える 1

0

誰かがこれに遭遇した場合に備えて、私がどのように問題を解決したかについての最新情報です。winphone プロジェクトを Silverlight 以外のアプリケーションに切り替える必要がありました (このバージョンではサポートされていないと思います)。これを行うと、すべてが正しく機能し始めました。

于 2016-04-01T03:35:23.643 に答える