Как отправить молчащее пуш-уведомление

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

Это aps которые я отправил клиенту:

"aps": {
    "content-available": 1
}

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

Ответ 1

Есть несколько вариантов для этого! Давайте немного покататься, чтобы понять все различные полезные нагрузки и их использование.


Простая полезная нагрузка

Отображается в Центре уведомлений: Да

Пробуждает приложение для выполнения фоновой задачи: Нет

{
    "aps" : {
        "alert" : "You received simple notification!",
        "badge" : 1,
        "sound" : "default"
    }
}

Полезная нагрузка со звуком пользовательских уведомлений

Отображается в Центре уведомлений: Да

Пробуждает приложение для выполнения фоновой задачи: Нет

Step 1: Добавьте пользовательский звуковой файл уведомления (только для расширений .wav или .aiff. Например, messages.wav) в ваш пакет приложений.

Step 2 Настройте полезную нагрузку, как показано ниже, для воспроизведения собственного звука.

{
    "aps" : {
        "alert" : "It a custom notification sound!",
        "badge" : 1,
        "sound" : "notification.wav"
    }
}

Уведомление с пользовательской полезной нагрузкой

Отображается в Центре уведомлений: Да

Пробуждает приложение для выполнения фоновой задачи: Нет

{
    "aps" : {
        "alert" : "It a notification with custom payload!",
        "badge" : 1,
        "content-available" : 0         
    },
    "data" :{
        "title" : "Game Request",
        "body" : "Bob wants to play poker",
        "action-loc-key" : "PLAY"
    },

}

Здесь словарь data содержит пользовательскую информацию, что вы хотите. Он также будет отображаться как обычное уведомление с предупреждением "Это уведомление с пользовательской полезной нагрузкой!".


Нормальное Тихое Уведомление

Это не будет показывать предупреждение как панель уведомлений; оно только уведомит ваше приложение о наличии новых данных, предложив приложению извлечь новый контент.

Отображается в Центре уведомлений: Нет

Пробудить приложение для выполнения фоновой задачи: Да

{
    "content-available" : 1
}

Тихое уведомление с пользовательской нагрузкой

Здесь приходит волшебство, чтобы показывать уведомления, а также разбудить ваше приложение в фоновом режиме для задачи! (Примечание: только если он работает в фоновом режиме и не был явно отключен пользователем.) Просто добавьте дополнительный параметр "content-available": 1 в полезную нагрузку.

Отображается в Центре уведомлений: Да

Пробуждает приложение для выполнения фоновой задачи: Да

{
    "aps" : {
        "alert" : "Notification with custom payload!",
        "badge" : 1,
        "content-available" : 1
    },
     "data" :{
        "title" : "Game Request",
        "body" : "Bob wants to play poker",
        "action-loc-key" : "PLAY"
     }
}

Используйте любую из этих полезных нагрузок в соответствии с требованиями вашего приложения. Для background app refresh обратитесь к документации Apple. Я надеюсь, что это дает вам всю необходимую информацию. Удачного кодирования :)

Ответ 2

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

Для этого отредактируйте свою полезную нагрузку как:

 $body = array(
    'content-available' => 1,
    'sound' => ''
    );  

$payload = array();
$payload['aps'] = $body;
$payload['action'] = 'order_update';

Затем в вашем коде iOS:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{


    NSString *action = userInfo["action"];


    if([userInfo[@"aps"][@"content-available"] intValue]== 1 && [action isEqualToString:@"order_update") //order update notification
    {
        //handle Your Action here
        return;
    }


}

Надеюсь, что это решает вашу проблему!