Baidu での Notification Hubs の使用Get started with Notification Hubs using Baidu

Baidu クラウド プッシュは、プッシュ通知をモバイル デバイスに送信するために使用することのできる中国のクラウド サービスです。Baidu cloud push is a Chinese cloud service that you can use to send push notifications to mobile devices.

Google Play と FCM (Firebase Cloud Messaging) は中国では利用できないため、別のアプリ ストアとプッシュ サービスを使用する必要があります。As Google Play and FCM (Firebase Cloud Messaging) are not available in China, it is necessary to use different app stores and push services. Baidu はその 1 つで、現在 Notification Hub で使用されています。Baidu is one of them, and the one currently used by Notification Hub.

前提条件Prerequisites

このチュートリアルには、次のものが必要です。This tutorial requires:

注意

このチュートリアルを完了するには、アクティブな Azure アカウントが必要です。To complete this tutorial, you must have an active Azure account. アカウントがない場合は、無料試用アカウントを数分で作成することができます。If you don't have an account, you can create a free trial account in just a couple of minutes. 詳細については、「Azure の無料試用版サイト」を参照してください。For details, see Azure Free Trial.

使用を開始するには、以下を実行します。To get started, do the following:

  1. Baidu アカウントを作成します。Create a Baidu account.
  2. Baidu クラウド プッシュ プロジェクトを作成し、API キーと秘密鍵をメモしておきます。Create a Baidu cloud push project, and make a note of the API key and secret key.

新しい Notification Hub を構成するConfigure a new notification hub

  1. Azure portal にサインインするSign in to the Azure portal.

  2. 左側のメニューで [すべてのサービス] を選択し、 [モバイル] セクションの [Notification Hubs] を選択します。Select All services on the left menu, and then select Notification Hubs in the Mobile section. サービス名の横にある星のアイコンを選択して、左側のメニューにある [お気に入り] セクションにサービスを追加します。Select the star icon next to the service name to add the service to the FAVORITES section on the left menu. Notification Hubs[お気に入り] に追加した後、左側のメニューでそれを選択します。After you add Notification Hubs to FAVORITES, select it on the left menu.

    Azure portal - Notification Hubs を選択する

  3. [Notification Hubs] ページで、ツール バーの [追加] を選択します。On the Notification Hubs page, select Add on the toolbar.

    Notification Hubs - [追加] ツール バー ボタン

  4. [Notification Hub] ページで、次の手順のようにします。On the Notification Hub page, do the following steps:

    1. [通知ハブ] に名前を入力します。Enter a name in Notification Hub.

    2. [新しい名前空間の作成] に名前を入力します。Enter a name in Create a new namespace. 名前空間には、少なくとも 1 つのハブが存在します。A namespace contains one or more hubs.

    3. [場所] ドロップダウン リスト ボックスで値を選択します。Select a value from the Location drop-down list box. この値には、ハブを作成する場所を指定します。This value specifies the location in which you want to create the hub.

    4. [リソース グループ] で既存のリソース グループを選択します。または、新しいリソース グループに名前を作成します。Select an existing resource group in Resource Group, or create a name for a new resource group.

    5. 作成 を選択します。Select Create.

      Azure Portal - 通知ハブのプロパティを設定

  5. [通知] (ベルのアイコン) を選択し、 [リソースに移動] を選択します。Select Notifications (the bell icon), and then select Go to resource. [Notification Hubs] ページの一覧を最新の情報に更新して、お使いの通知ハブを選択することもできます。You can also refresh the list on the Notification Hubs page and select your hub.

    Azure portal - リソースに移動

  6. リストから [アクセス ポリシー] を選択します。Select Access Policies from the list. 使用可能な 2 つの接続文字列を書き留めてください。Note that the two connection strings are available to you. これらは、後でプッシュ通知を処理するために必要になります。You'll need them later to handle push notifications.

    重要

    DefaultFullSharedAccessSignature ポリシーはアプリケーションで使用 "しない" でください。Do not use the DefaultFullSharedAccessSignature policy in your application. これの使用が意図されているのはバックエンドだけです。This is meant to be used in your back end only.

    Azure Portal - 通知ハブの接続文字列

  6.  6. 通知ハブで [Notification Services] を選択し、 [Baidu (Android China)] を選択します。In your notification hub, select Notification Services and then Baidu (Android China).

    Azure Notification Hubs - Baidu

  7.  7. 下へスクロールして Baidu 通知設定セクションに移動します。Scroll down to the Baidu notification settings section. Baidu コンソールから取得した API キーとシークレット キーを Baidu クラウド プッシュ プロジェクトに入力します。Enter the API key and secret key that you obtained from the Baidu console, in the Baidu cloud push project. その後、[保存] をクリックします。Then click Save.

    Azure Notification Hubs - Baidu (シークレット)

これで、通知ハブが Baidu と連携するように構成されました。Your notification hub is now configured to work with Baidu. また、アプリを登録してプッシュ通知を送受信するための 接続文字列 も得られました。You also have the connection strings to register your app to both send and receive push notifications.

[接続情報へのアクセス] ウィンドウの DefaultListenSharedAccessSignatureDefaultFullSharedAccessSignature を書き留めておいてください。Make a note of the DefaultListenSharedAccessSignature and DefaultFullSharedAccessSignature from the Access connection information window.

通知ハブにアプリケーションを接続するConnect your app to the notification hub

  1. Android Studio で新しい Android プロジェクトを作成 ([File](ファイル)、[New](新規)、[New Project](新しいプロジェクト) の順に選択) します。In Android Studio, create a new Android project (File > New > New Project).

    Azure Notification Hubs - Baidu (新しいプロジェクト)

  2. アプリケーション名を入力し、最小必須 SDK のバージョンが API 16: Android 4.1 に設定されていることを確認します。Enter an Application Name and ensure that the Minimum Required SDK version is set to API 16: Android 4.1. また、パッケージ名 (应用包名) が Baidu クラウド プッシュ ポータルでの名前と一致していることも確認してください。Also please make sure your package name (应用包名) is the same as in the Baidu Cloud Push Portal

    Azure Notification Hubs - Baidu Min SDK1 Azure Notification Hubs - Baidu Min SDK2Azure Notification Hubs - Baidu Min SDK1 Azure Notification Hubs - Baidu Min SDK2

  3. [Next](次へ) をクリックし、[Create Activity](アクティビティの作成) ウィンドウが表示されるまでウィザードに従います。Click Next and continue following the wizard until the Create Activity window appears. [Empty Activity](空のアクティビティ) が選択されていることを確認し、最後に [Finish](完了) を選択して新しい Android アプリケーションを作成します。Make sure that Empty Activity is selected, and finally select Finish to create a new Android Application.

    Azure Notification Hubs - Baidu (アクティビティの追加)

  4. プロジェクト ビルド ターゲットが正しく設定されていることを確認します。Make sure that the Project Build Target is set correctly.

  5. 次に、Azure Notification Hubs ライブラリを追加します。Then add Azure Notification Hubs libraries. アプリの Build.Gradle ファイルの dependencies セクションに次の行を追加します。In the Build.Gradle file for the app, add the following lines in the dependencies section.

    implementation 'com.microsoft.azure:notification-hubs-android-sdk:0.6@aar'
    implementation 'com.microsoft.azure:azure-notifications-handler:1.0.1@aar'
    

    dependencies セクションの後に次のリポジトリを追加します。Add the following repository after the dependencies section.

    repositories {
        maven {
            url "https://dl.bintray.com/microsoftazuremobile/SDK"
        }
    }
    

    リストの競合を防ぐために、次のコードをプロジェクトの Manifest.xml ファイルに追加します。To avoid the List conflict, add the following code in the project's Manifest.xml file:

    <manifest package="YOUR.PACKAGE.NAME"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android">
    

    また、<application/> タグには、次のコードを追加します。and in the <application/> tag:

    <application
        tools:replace="android:allowBackup,icon,theme,label">
    
  6. Baidu Push Android SDK をダウンロードして解凍します。Download and unzip the Baidu Push Android SDK. libs フォルダー内の pushservice-x.y.z jar ファイルをコピーします。Copy the pushservice-x.y.z jar file in the libs folder. さらに、.so ファイルを Android アプリケーションの src/main/jniLibs フォルダー (新しいフォルダーを作成してください) にコピーします。Then copy the .so files in the src/main/jniLibs (create a new folder) folders of your Android application.

    Azure Notification Hubs - Baidu (SDK ライブラリ)

  7. プロジェクトの libs フォルダーで、pushervice-x.y.z.jar ファイルを右クリックし、 [ライブラリとして追加] を選択して、このライブラリをプロジェクトにインクルードします。In the project's libs folder, right click on the pushervice-x.y.z.jar file; select Add as Library to including this library in the project.

    Azure Notification Hubs - Baidu (ライブラリとして追加)

  8. Android プロジェクトの AndroidManifest.xml ファイルを開いて、Baidu SDK に必要なアクセス許可を追加します。Open the Android project's AndroidManifest.xml file and add the permissions required by the Baidu SDK. YOURPACKAGENAME は実際のパッケージ名に置き換えてくださいReplace YOURPACKAGENAME with your package name.

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" />
    <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
    <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
    !! <uses-permission android:name="baidu.push.permission.WRITE_PUSHINFOPROVIDER.YOURPACKAGENAME" />
    !!<permission android:name="baidu.push.permission.WRITE_PUSHINFOPROVIDER.YOURPACKAGENAME"android:protectionLevel="normal" />
    
    
  9. application 要素内で、.MainActivity アクティビティ要素の後に次の構成を追加し、yourprojectname を置き換えます (例: com.example.BaiduTest)。Add the following configuration within the application element after the .MainActivity activity element, replacing yourprojectname (for example, com.example.BaiduTest):

    <activity
        android:name="com.baidu.android.pushservice.richmedia.MediaViewActivity"
        android:configChanges="orientation|keyboardHidden"
        android:label="MediaViewActivity" />
    <activity
        android:name="com.baidu.android.pushservice.richmedia.MediaListActivity"
        android:configChanges="orientation|keyboardHidden"
        android:label="MediaListActivity"
        android:launchMode="singleTask" />
    
    <!-- Push application definition message -->
    <receiver android:name=".MyPushMessageReceiver">
        <intent-filter>
    
            <!-- receive push message-->
            <action android:name="com.baidu.android.pushservice.action.MESSAGE" />
            <!-- receive bind,unbind,fetch,delete.. message-->
            <action android:name="com.baidu.android.pushservice.action.RECEIVE" />
            <action android:name="com.baidu.android.pushservice.action.notification.CLICK" />
        </intent-filter>
    </receiver>
    
    <receiver
        android:name="com.baidu.android.pushservice.PushServiceReceiver"
        android:process=":bdservice_v1">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            <action android:name="com.baidu.android.pushservice.action.notification.SHOW" />
            <action android:name="com.baidu.android.pushservice.action.media.CLICK" />
            <action android:name="android.intent.action.MEDIA_MOUNTED" />
            <action android:name="android.intent.action.USER_PRESENT" />
            <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
            <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
        </intent-filter>
    </receiver>
    
    <receiver
        android:name="com.baidu.android.pushservice.RegistrationReceiver"
        android:process=":bdservice_v1">
        <intent-filter>
            <action android:name="com.baidu.android.pushservice.action.METHOD" />
            <action android:name="com.baidu.android.pushservice.action.BIND_SYNC" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.PACKAGE_REMOVED" />
    
            <data android:scheme="package" />
        </intent-filter>
    </receiver>
    
    <service
        android:name="com.baidu.android.pushservice.PushService"
        android:exported="true"
        android:process=":bdservice_v1">
        <intent-filter>
            <action android:name="com.baidu.android.pushservice.action.PUSH_SERVICE" />
        </intent-filter>
    </service>
    
    <service
        android:name="com.baidu.android.pushservice.CommandService"
        android:exported="true" />
    
    <!-- Adapt the ContentProvider declaration required for the Android N system, and the write permissions include the application package name-->
    <provider
        android:name="com.baidu.android.pushservice.PushInfoProvider"
        android:authorities="com.baidu.push.example.bdpush"
        android:exported="true"
        android:protectionLevel="signature"
        android:writePermission="baidu.push.permission.WRITE_PUSHINFOPROVIDER. yourprojectname  " />
    
    <!-- API Key of the Baidu application -->
    <meta-data
        android:name="api_key"
        !!   android:value="api_key" />
    </application>
    
  10. ConfigurationSettings.java という新しいクラスをプロジェクトに追加します。Add a new class called ConfigurationSettings.java to the project.

    public class ConfigurationSettings {
        public static String API_KEY = "...";
        public static String NotificationHubName = "...";
        public static String NotificationHubConnectionString = "...";
    }
    

    Baidu クラウド プロジェクトからの API_KEY を使用して API_KEY 文字列の値を設定します。Set the value of the API_KEY string with the API_KEY from the Baidu Cloud Project.

    Azure Portal から得られる実際の通知ハブ名を使用して NotificationHubName 文字列の値を設定します。次に、Azure Portal から得られる DefaultListenSharedAccessSignature を使用して NotificationHubConnectionString を設定してください。Set the value of the NotificationHubName string with your notification hub name from the Azure portal; and then NotificationHubConnectionString with DefaultListenSharedAccessSignature from the Azure portal.

  11. MainActivity.java を開き、onCreate メソッドに次のコードを追加します。Open MainActivity.java, and add the following to the onCreate method:

    PushManager.startWork(this, PushConstants.LOGIN_TYPE_API_KEY,  API_KEY );
    
  12. MyPushMessageReceiver.java という名前の新しいクラスを追加し、それに次のコードを追加します。Add a new class called MyPushMessageReceiver.java, and add the following code to it. これは、Baidu プッシュ サーバーから受信したプッシュ通知を処理するクラスです。It is the class that handles the push notifications that are received from the Baidu push server.

    package your.package.name;
    
    import android.content.Context;
    import android.content.Intent;
    import android.os.AsyncTask;
    import android.text.TextUtils;
    import android.util.Log;
    
    import com.baidu.android.pushservice.PushMessageReceiver;
    import com.microsoft.windowsazure.messaging.NotificationHub;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import java.util.List;
    
    public class MyPushMessageReceiver extends PushMessageReceiver {
    
        public static final String TAG = MyPushMessageReceiver.class
                .getSimpleName();
        public static NotificationHub hub = null;
        public static String mChannelId, mUserId;
    
        @Override
        public void onBind(Context context, int errorCode, String appid,
                        String userId, String channelId, String requestId) {
            String responseString = "onBind errorCode=" + errorCode + " appid="
                    + appid + " userId=" + userId + " channelId=" + channelId
                    + " requestId=" + requestId;
            Log.d(TAG, responseString);
    
            if (errorCode == 0) {
                // Binding successful
                Log.d(TAG, " Binding successful");
            }
            try {
                if (hub == null) {
                    hub = new NotificationHub(
                            ConfigurationSettings.NotificationHubName,
                            ConfigurationSettings.NotificationHubConnectionString,
                            context);
                    Log.i(TAG, "Notification hub initialized");
                }
            } catch (Exception e) {
                Log.e(TAG, e.getMessage());
            }
            mChannelId = channelId;
            mUserId = userId;
    
            registerWithNotificationHubs();
        }
        private void registerWithNotificationHubs() {
    
            new AsyncTask<Void, Void, Void>() {
                @Override
                protected Void doInBackground(Void... params) {
                    try {
                        hub.registerBaidu(mUserId, mChannelId);
                        Log.i(TAG, "Registered with Notification Hub - '"
                                + ConfigurationSettings.NotificationHubName + "'"
                                + " with UserId - '"
                                + mUserId + "' and Channel Id - '"
                                + mChannelId + "'");
                    } catch (Exception e) {
                        Log.e(TAG, e.getMessage());
                    }
                    return null;
                }
            }.execute(null, null, null);
        }
    
        @Override
        public void onMessage(Context context, String message,
                            String customContentString) {
            String messageString = " onMessage=\"" + message
                    + "\" customContentString=" + customContentString;
            Log.d(TAG, messageString);
            if (!TextUtils.isEmpty(customContentString)) {
                JSONObject customJson = null;
                try {
                    customJson = new JSONObject(customContentString);
                    String myvalue = null;
                    if (!customJson.isNull("mykey")) {
                        myvalue = customJson.getString("mykey");
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
    
        }
    
        @Override
        public void onNotificationArrived(Context context, String title, String description, String customContentString) {
            String notifyString = " Notice Arrives onNotificationArrived  title=\"" + title
                    + "\" description=\"" + description + "\" customContent="
                    + customContentString;
            Log.d(TAG, notifyString);
            if (!TextUtils.isEmpty(customContentString)) {
                JSONObject customJson = null;
                try {
                    customJson = new JSONObject(customContentString);
                    String myvalue = null;
                    if (!customJson.isNull("mykey")) {
                        myvalue = customJson.getString("mykey");
                    }
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    
        @Override
        public void onNotificationClicked(Context context, String title, String description, String customContentString) {
            String notifyString = " onNotificationClicked title=\"" + title + "\" description=\""
                    + description + "\" customContent=" + customContentString;
            Log.d(TAG, notifyString);
            Intent intent = new Intent(context.getApplicationContext(),MainActivity.class);
            intent.putExtra("title",title);
            intent.putExtra("description",description);
            intent.putExtra("isFromNotify",true);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.getApplicationContext().startActivity(intent);
    
        }
    
        @Override
        public void onSetTags(Context context, int errorCode,
                            List<String> successTags, List<String> failTags, String requestId) {
            String responseString = "onSetTags errorCode=" + errorCode
                    + " successTags=" + successTags + " failTags=" + failTags
                    + " requestId=" + requestId;
            Log.d(TAG, responseString);
    
        }
    
        @Override
        public void onDelTags(Context context, int errorCode,
                            List<String> successTags, List<String> failTags, String requestId) {
            String responseString = "onDelTags errorCode=" + errorCode
                    + " successTags=" + successTags + " failTags=" + failTags
                    + " requestId=" + requestId;
            Log.d(TAG, responseString);
    
        }
    
        @Override
        public void onListTags(Context context, int errorCode, List<String> tags,
                            String requestId) {
            String responseString = "onListTags errorCode=" + errorCode + " tags="
                    + tags;
            Log.d(TAG, responseString);
    
        }
    
        @Override
        public void onUnbind(Context context, int errorCode, String requestId) {
            String responseString = "onUnbind errorCode=" + errorCode
                    + " requestId = " + requestId;
            Log.d(TAG, responseString);
    
            if (errorCode == 0) {
                // Unbinding is successful
                Log.d(TAG, " Unbinding is successful ");
            }
        }
    }
    

アプリケーションに通知を送信するSend notifications to your app

以下の画面に示すように、通知ハブの構成画面にある [送信] ボタンを使用して、Azure Portal から通知の受信テストをすばやく行うことができます。You can quickly test receiving notifications from the Azure portal: use the Send button in the notification hub configuration screen, as shown in the following screens:

赤の矢印の先に [テスト送信] オプションが赤枠で囲まれた Azure portal のスクリーンショット。 Baidu の [テスト送信] ページを示す Azure portal のスクリーンショット。Screenshot of the Azure Portal with the Test Send option outlined in red and a red arrow pointing to it. Screenshot to the Baidu Test Send page in the Azure portal.

プッシュ通知は通常、互換性のあるライブラリを使用して Mobile Services などのバックエンド サービスや ASP.NET に送信されます。Push notifications are normally sent in a back-end service like Mobile Services or ASP.NET using a compatible library. バックエンドでライブラリを利用できない場合、REST API を直接使用して通知メッセージを送信できます。If a library is not available for your back-end, you can use the REST API directly to send notification messages.

このチュートリアルでは、単純化するために、.NET SDK で通知を送信する方法のデモンストレーションとしてコンソール アプリを使用しています。For simplicity, this tutorial uses a console app as a demonstration on how to send a notification with the .NET SDK. ただし、ASP.NET バックエンドから通知を送信するには、次のステップとして Notification Hubs を使用したユーザーへのプッシュ通知に関するページを参照することをお勧めします。However, we recommend the Use Notification Hubs to push notifications to users tutorial as the next step for sending notifications from an ASP.NET backend.

通知を送信するためのさまざまな手法を次に示します。Here are different approaches for sending notifications:

(省略可能) .NET コンソール アプリケーションから通知を送信する(Optional) Send notifications from a .NET console app.

このセクションでは、.NET コンソール アプリケーションを使用した通知の送信方法について説明します。In this section, we show sending a notification using a .NET console app.

  1. Visual C# の新しいコンソール アプリケーションを作成します。Create a new Visual C# console application:

    [コンソール アプリケーション] Visual C# オプションが強調表示されている [新しいプロジェクト] ダイアログ ボックスのスクリーンショット。

  2. パッケージ マネージャー コンソール ウィンドウで [既定のプロジェクト] に新しいコンソール アプリケーション プロジェクトを設定した後、そのコンソール ウィンドウから次のコマンドを実行します。In the Package Manager Console window, set the Default project to your new console application project, and then in the console window, execute the following command:

    Install-Package Microsoft.Azure.NotificationHubs
    

    この手順により、Microsoft.Azure.Notification Hubs NuGet パッケージを利用して Azure Notification Hubs SDK に参照が追加されます。This instruction adds a reference to the Azure Notification Hubs SDK using the Microsoft.Azure.Notification Hubs NuGet package.

    [SendToNotificationHub] オプションが赤の楕円で囲まれた [パッケージ マネージャー コンソール] ダイアログ ボックスのスクリーンショット。

  3. Program.cs ファイルを開き、次の using ステートメントを追加します。Open the file Program.cs and add the following using statement:

    using Microsoft.Azure.NotificationHubs;
    
  4. Program クラスに次のメソッドを追加し、DefaultFullSharedAccessSignatureSASConnectionStringNotificationHubName を実際の値に置き換えます。In your Program class, add the following method and replace DefaultFullSharedAccessSignatureSASConnectionString and NotificationHubName with the values that you have.

    private static async void SendNotificationAsync()
    {
        NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString("DefaultFullSharedAccessSignatureSASConnectionString", "NotificationHubName");
        string message = "{\"title\":\"((Notification title))\",\"description\":\"Hello from Azure\"}";
        var result = await hub.SendBaiduNativeNotificationAsync(message);
    }
    
  5. Main メソッド内に次の行を追加します。Add the following lines in your Main method:

    SendNotificationAsync();
    Console.ReadLine();
    

アプリをテストするTest your app

実際の電話でこのアプリケーションをテストする場合は、USB ケーブルを使用してコンピューターに電話を接続するだけです。To test this app with an actual phone, just connect the phone to your computer by using a USB cable. この操作によって、接続した電話にアプリケーションが読み込まれます。This action loads your app onto the attached phone.

エミュレーターでこのアプリをテストするには、上部の Android Studio ツール バーで [Run](実行) をクリックし、アプリを選択します。エミュレーターが起動され、アプリが読み込まれて実行されます。To test this app with the emulator, on the Android Studio top toolbar, click Run, and then select your app: it starts the emulator, loads, and runs the app.

アプリが Baidu プッシュ通知サービスから userIdchannelId を取得し、通知ハブに登録します。The app retrieves the userId and channelId from the Baidu Push notification service and registers with the notification hub.

テスト通知は、Azure Portal の [デバッグ] タブを使用して送信できます。To send a test notification, you can use the debug tab of the Azure portal. Visual Studio で .Net コンソール アプリケーションを作成する場合、Visual Studio で F5 キーを押してアプリケーションを実行します。If you built the .NET console application for Visual Studio, just press the F5 key in Visual Studio to run the application. アプリケーションから通知が送信され、デバイスまたはエミュレーターの上部の通知領域に表示されます。The application sends a notification that appears in the top notification area of your device or emulator.