Настройте полезную нагрузку Baidu Push JSON

Я использую API отдыха для отправки push-уведомлений Baidu. У меня нет доступа к классам построителя уведомлений Android, поэтому я не могу, например, использовать notificationBuilder.setPriority(2);, На самом деле главное, что мне нужно знать, это как установить приоритет уведомления Baidu Push на MAX, используя только JSON.

Согласно этому веб-сайту, здесь приведены все ключи и значения для полезной нагрузки Baidu JSON:

{
    //android必选,ios可选
    "title": "hello" ,   
    "description": "hello world" 

    //android特有字段,可选
    "notification_builder_id": 0,
    "notification_basic_style": 7,
    "open_type":0,
    "net_support" : 1,
    "user_confirm": 0,
    "url": "http://developer.baidu.com",
    "pkg_content":"",
    "pkg_name" : "com.baidu.bccsclient",
    "pkg_version":"0.1",

    //android自定义字段
    "custom_content": {
        "key1":"value1", 
        "key2":"value2"
    },  

    //ios特有字段,可选
    "aps": {
        "alert":"Message From Baidu Push",
       "sound":"",
        "badge":0
    },

    //ios的自定义字段
    "key1":"value1", 
    "key2":"value2"
}

Я предполагаю, что мне нужно установить значения notification_builder_id, но так как в качестве значения оно просто принимает целое число, я не уверен, как создать уведомление, соответствующее идентификатору.

1 ответ

Решение

Мне удалось выяснить, как установить высокий приоритет для того, чтобы уведомление отображалось как баннер, а не просто значок в строке состояния.

В клиентском приложении вам нужно установить построитель уведомлений и дать ему идентификатор, например, так (обратите внимание, что я использую Xamarin Forms, но логика та же, если вы используете родной Android. Кроме того, этот код должен быть размещен непосредственно после PushManager.StartWork() вызов метода, скорее всего, в вашей деятельности onCreate() метод):

BasicPushNotificationBuilder builder = new BasicPushNotificationBuilder();
builder.SetNotificationFlags(
    (int)NotificationFlags.AutoCancel |
    (int)NotificationFlags.HighPriority |
    (int)NotificationFlags.ShowLights);
builder.SetNotificationDefaults(
    (int)NotificationDefaults.Lights |
    (int)NotificationDefaults.Vibrate);
builder.SetStatusbarIcon(Resource.Drawable.icon);

// the second parameter is the id. This is the id that you need to set
// in the JSON payload in order for the incoming notification to appear
// in this way.
PushManager.SetNotificationBuilder(Xamarin.Forms.Forms.Context, 1, builder);

А затем для полезной нагрузки, это просто так:

{"title":"My Title","description":"my description","notification_builder_id":1}

Опять же, обратите внимание, что значение messages_builder_id должно соответствовать второму параметру в SetNotificationBuilder() метод.

Другие вопросы по тегам