アプリケーションをプッシュする


WindowsストアアプリでWNSプッシュ通知を実装することで、 ユーザー開発者の経験を共有したいと思います 。 私は、私のアプリケーションをどのように白くプッシュしたようにしたかについてのいたずら書きを読んでください。



皆さん、私はこの記事を読みました: 「異なるプラットフォーム上の何百万ものデバイスにプッシュ通知を配信するタスクの問題と解決策について
そしてこれ: 「プッシュ通知をWindowsユニバーサルアプリに送信する方法」
そして、私はこれを気に入った: 「Windows Phone 8.1で通知を処理します」
この記事は、 「Windows Azure Notification Hubs:タグとニュース速報アプリの作成」という、ネイティブではなく、必ずしも明確ではない英語で十分に理解できることがわかりました。
昨年のBuildのビデオは、面白くて関連性が高いことがわかりました。

これらの記事のように正確に成功しなかったので、さらに行動の指針を示しました。

https://portal.azure.com/で、アカウントの管理、アクションとリソースの表示、サブスクリプションの管理を行うことができます。 ただし、さまざまなオブジェクトを作成して管理する場合は、 https//manage.windowsazure.comにアクセスしてください。

https://manage.windowsazure.comにアクセスし、メニューから[モバイルサービス]を選択すると、[モバイルサービスの作成]リンクをクリックしてモバイルサービスを作成できます。



次に、URLの名前を選択して、データベースパラメータを設定できます。




私は無料のデータベースに限定し、追加のパラメーターを構成しませんでした。 デフォルトのパラメーターは、私にとって非常に良いです。

または、左下隅の「作成」ボタンをクリックして、モバイルサービスを作成できます(最初のスクリーンショットを参照)。 また、最初と2番目のバージョンでは、手順はほぼ同じです。



いずれかの方法でサービスを作成すると、次のウィンドウが表示されます。



サービスの名前をダブルクリックすると、サービスコントロールパネルが表示されます。



PUSHアイテムを選択すると、クライアントのシークレットとパッケージSIDを含む空のフィールドが表示されます。



アプリケーションのバインド前は、クライアントシークレットフィールドとパケットSIDフィールドの両方にデータが含まれていません。

Webサイトから注意をそらし、プッシュ通知を追加するアプリケーションを操作してみましょう。 アプリケーションを新しく作成したハブにバインドするために、最初に行う必要があるのは、Visual Studioでアプリケーションを開くことです。

次に、プロジェクトの名前(つまり、ソリューションではなくプロジェクト)のコンテキストメニューを呼び出すことにより、プッシュ通知をアプリケーションに追加する機会が得られます。 私のスタジオの英語版では、次のようになります。



「Next-Next」の手順に従って、ストア内のアプリケーションと新しく作成されたサービスを選択します。



これらのアクションは、アプリケーションがプッシュ通知を受信するためにすでに十分です。 サーバーのページを更新すると、「クライアントシークレット」フィールドと「SIDパッケージ」フィールドがすでに入力されていることがわかります。
プッシュ通知を追加する操作の後、いくつかのコードがアプリケーションに自動的に追加されます。
次のパブリック変数がAppクラスの変数宣言のApp.xaml.csファイルに追加されます。

public static Microsoft.WindowsAzure.MobileServices.MobileServiceClient redactorClient = new Microsoft.WindowsAzure.MobileServices.MobileServiceClient("https://redactor.azure-mobile.net/", "TSIFgOYeMNUdwIViawpdeIJKXlcVIV57"); 

同じApp.xaml.csで、チャンネル登録がOnLaunchedイベント処理コードの最後に追加されます。

 RedactoR.redactorPush.UploadChannel(); 

Servicesフォルダーは自動的に作成され、その中にMobileServicesフォルダーが作成されます。その中には、作成されたサービス「redactor」の名前を持つ別のフォルダーがあります。
アプリケーションを展開して実行し、ハブに登録します。

バインディングを作成したら、サイトhttps://manage.windowsazure.comに戻ります。ページを閉じなかった場合は、ハブの名前をクリックしてそのページにアクセスできます。 閉じている場合は、左側の一般メニューからこれを実行できます。



「接続文字列の表示」という名前の右側のリンクに注意してください。 それをクリックすることで、あなたは何を推測することができますか? そうです-接続文字列! 後で必要になります。

ハブから[デバッグ]タブに移動すると、テストプッシュ通知を送信できます。



送信する通知の種類を選択できます:行(追加のコードを記述する必要がある生の通知)、ロゴ、タイル、およびポップアップ通知(これらの種類の通知をアプリケーションに既に送信できます)。

ポップアップ通知を送信してみてください。 すべてが正常であれば、あなたはすべてを正しく行いました。あなたと私はさらに進んで少し複雑になります。

スクリーンショットのSEND TAGフィールドに注意してください。 ハブにアプリケーションを登録するときに、特定の登録に特定のキーワードを設定できます。 さまざまなカテゴリのニュースを含むニュースアプリがあるとします。 この場合、特定の通知を、たとえばスポーツニュースを好むユーザーにのみ送信できます。

これを行うには、UploadChannelコードを変更する必要があります。 最初は、次のようになります。

 var channel = await Windows.Networking.PushNotifications.PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync(); try { await App.redactorClient.GetPush().RegisterNativeAsync(channel.Uri); } catch (Exception exception) { HandleRegisterException(exception); } 

行を置き換える場合:

 await App.redactorClient.GetPush().RegisterNativeAsync(channel.Uri); 

オン:

 string[] PushTags = { "", " 1" }; await App.redactorClient.GetPush().RegisterNativeAsync(channel.Uri, PushTags); 

ラリーまたはフォーミュラ1タグで送信された特定のニュース項目を受信するようにアプリケーションを登録できます。 実際のプログラムでは、PushTags配列の要素はもちろん動的に設定されます。

私の場合、ロシア語のインターフェースを使用するユーザーをタグ「RU」で登録し、英語を使用するユーザーをタグ「EN」で登録して、さまざまなメッセージを送信したかったのです。 私が行ったこれらの小さな変更は、行を置き換えました:

 await App.redactorClient.GetPush().RegisterNativeAsync(channel.Uri); 

オン:

  string tempstr; tempstr = Convert.ToString(Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride); if (tempstr.ToUpper() == "EN") { string[] PushTags = { "EN" }; await App.redactorClient.GetPush().RegisterNativeAsync(channel.Uri,PushTags); } else { string[] PushTags = { "RU" }; await App.redactorClient.GetPush().RegisterNativeAsync(channel.Uri, PushTags); } 

これで、アプリケーションは、アプリケーションの現在の言語に応じて、「RU」タグまたは「EN」タグのいずれかでハブに登録されます。 サイトのコントロールパネルで、「ランダムブロードキャスト」をオフにして、目的の言語のタグで登録されているアプリケーションにのみメッセージを送信できます(つまり、「TAG」フィールドに「SEND」、「RU」、または「EN」

通知を送信する


Azureインターフェースからテスト通知を送信するのは便利ですが、特定の制限が課せられます-ランダムユーザーは10人しか送信されません。

さまざまな方法ですべてのユーザーに通知を送信できます。 通常、モバイルサービスを作成することが提案されています。 しかし、開発者にとってより便利で簡単な方法は、コンソールアプリケーションを作成することです。
この方法は、次のガイドで非常に明確です。
「通知ハブの使用開始」

この方法を簡単に説明します(非常に簡単です)。

簡単なコンソールアプリケーションを作成しましょう。 WindowsAzure.ServiceBusテキストマネージャーのNuGet検索を使用して、Microsoft Azure Service Busパッケージを見つけてインストールします。 NuGetマネージャーコンソールを使用して、次のコマンドでインストールできます。

 Install-Package WindowsAzure.ServiceBus 

名前空間を追加します。

 using Microsoft.ServiceBus.Notifications; 

そして、ただ一つの簡単な方法:

 private static async void SendNotificationAsync() { NotificationHubClient hub = NotificationHubClient .CreateClientFromConnectionString("<    >", "< >"); var toast = @"<toast><visual><binding template=""ToastText01""><text id=""1"">, App!</text></binding></visual></toast>"; await hub.SendWindowsNativeNotificationAsync(toast); } 

これは、接続文字列が必要な場所です。接続文字列は、ハブセクションのサイトで取得できます。 「接続文字列の表示」リンク(上のスクリーンショットを参照)をクリックして、DefaultFullSharedAccessSignatureの値をコピーします。これは次のようになります。
エンドポイント= sb://redactorhub-ns.servicebus.windows.net/; SharedAccessKeyName = DefaultFullSharedAccessSignature; SharedAccessKey = kjeJDdtIdvE + 3dh3hyIRlkvPF3Ns0zPbewouDHMwe4v3 =
このテキストは、<フルアクセスの接続文字列>の代わりに挿入され、<ハブ名>の代わりにハブ名(私の場合はredactorhub)を挿入します。

mainメソッドにコードを2行だけ追加します。

  SendNotificationAsync(); Console.ReadLine(); 

Source: https://habr.com/ru/post/J257209/


All Articles