2

私はこの目標を達成するのに本当に困っています。私は PhoneGap アプリケーションを開発しており、それを Android、iOS、および Windows Phone にも展開する予定です。

Apple Notification Service (APN) と Google Cloud Messaging は問題なく使用できましたが、Windows Phone アプリで同じことをしようとすると、非常にうまくいきません。

GCM の APN とは異なり、アプリをプッシュ通知サービスと統合するためのコードを生成したり、証明書をダウンロードしたりする場所が見つかりませんでした。

このサービスを使用して、PHP http://phpwindowsphonepush.codeplex.com/で Windows Phone にプッシュ通知を送信しようとしています 。

例はこれを示しています$uri="http://db3.notify.live.net/throttledthirdparty/01.00/123456789123456798"; //uri sended by Microsoft plateformが、このような URI を取得するためにプラットフォームに登録するにはどうすればよいですか?

また、この PHP Windows Phone Push は、Windows Phone でトースト通知とタイル通知を送信するための正しい選択ですか? ドキュメントは非常に紛らわしく、サーバーとネイティブ コード アプリケーションの構成方法が明確ではありません。

4

1 に答える 1

3

呼び出された通知チャネルのその URI は、APNS デバイス トークンと GCM 登録 ID に相当する MPNS です。Windows Phone アプリ コードで取得できます。

public MainPage()
{
    /// Holds the push channel that is created or found.
    HttpNotificationChannel pushChannel;

    // The name of our push channel.
    string channelName = "ToastSampleChannel";

    InitializeComponent();

    // Try to find the push channel.
    pushChannel = HttpNotificationChannel.Find(channelName);

    // If the channel was not found, then create a new connection to the push service.
    if (pushChannel == null)
    {
        pushChannel = new HttpNotificationChannel(channelName);

        // Register for all the events before attempting to open the channel.
        pushChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(PushChannel_ChannelUriUpdated);
        pushChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(PushChannel_ErrorOccurred);

        // Register for this notification only if you need to receive the notifications while your application is running.
        pushChannel.ShellToastNotificationReceived += new EventHandler<NotificationEventArgs>(PushChannel_ShellToastNotificationReceived);

        pushChannel.Open();

        // Bind this new channel for toast events.
        pushChannel.BindToShellToast();

    }
    else
    {
        // The channel was already open, so just register for all the events.
        pushChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(PushChannel_ChannelUriUpdated);
        pushChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(PushChannel_ErrorOccurred);

        // Register for this notification only if you need to receive the notifications while your application is running.
        pushChannel.ShellToastNotificationReceived += new EventHandler<NotificationEventArgs>(PushChannel_ShellToastNotificationReceived);

        // Display the URI for testing purposes. Normally, the URI would be passed back to your web service at this point.
        System.Diagnostics.Debug.WriteLine(pushChannel.ChannelUri.ToString());
        MessageBox.Show(String.Format("Channel Uri is {0}",
            pushChannel.ChannelUri.ToString()));

    }
}

Web サービスを認証する必要はありません (認証されていない Web サービスは、デバイスごとに 1 日あたり 500 メッセージを送信できます) が、そうすることをお勧めします:

セキュリティを強化するために HTTPS インターフェイスを介して通信が行われるため、通知をプッシュ通知サービスに送信するように認証済み Web サービスを設定することをお勧めします。認証された Web サービスには、送信できるプッシュ通知の数に 1 日あたりの制限がありません。一方、認証されていない Web サービスは、サブスクリプションごとに 1 日あたり 500 件のプッシュ通知の割合で調整されます。詳細については、「Windows Phone のプッシュ通知を送信するための認証済み Web サービスのセットアップ」を参照してください。

関連リンク :

Windows Phone のプッシュ通知の送信

Windows Phone のプッシュ通知を送信するための認証済み Web サービスのセットアップ

于 2013-03-29T13:43:32.447 に答える