Полезная нагрузка FCM «данные» не получена в одном приложении, но находится в другом - PullRequest
0 голосов
/ 11 мая 2018

tl; dr - onMessageReceived не вызывается в одном приложении, но вызывается в другом в том же проекте Firebase. Сообщение успешно отправлено, но (объект «данные») никогда не принимается устройством. Оба приложения расширяют одни и те же базовые сервисы.

Привет, ребята,

Я не могу заставить мое приложение SDK Sample работать с FCM, как это делает мое главное приложение.

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

{
"multicast_id": 5418976075057112952,
"success": 1,
"failure": 0,
"canonical_ids": 0,
"results": [
    {
        "message_id": "0:1526059128643443%14258072f9fd7ecd"
    }
]}

Для интеграции я просто добавил свой пример приложения в приложение Firebase, которое мы используем для моих основных приложений iOS / Android на консоли, и когда я тестировал его с помощью консоли, все было «хорошо», то есть «уведомление» уведомления работали. Все значения выглядят корректно и в google-services.json.

Мои приложения Main и Sample расширяют объекты InstanceID / Messagaging в Firebase из моей библиотеки (возможно, это проблематично? Я подозреваю, что нет).

Я что-то упускаю из своего сценария? Это почти идентично учебникам, что касается конфигурации. Кто-нибудь знает о проблемах, когда вы пытаетесь добавить два приложения для Android в одном проекте Firebase?

Есть также шанс, что мне придется подождать некоторое время, чтобы позволить Google обновить, но я был на этом большую часть сегодняшнего дня, и, как я уже сказал, консоли FCM / "Уведомления" работают уведомления

Я обеспокоен тем, что может быть что-то более низкий уровень, который мне не хватает. Пожалуйста, помогите мне!

Спасибо, ребята!


Примерно то, что я отправляю (это работает в основном приложении, как и ожидалось):

{
"registration_ids": [<DEVICE>],
"data": 
    {"field1": "data1", ... },
 "content_available": true,
 "priority": "high"
}

Код службы сообщений (шаблон)

public class AppFirebaseMessagingService extends BaseFirebaseMessagingService {
   private static final String TAG = "AppFirebaseMessaging";
   public AppFirebaseMessagingService() {
       super();
   }

   @Override
   public void onMessageReceived(RemoteMessage remoteMessage) {
       //this isn't called in SAMPLE
   }
}

Декларации декларации:

<service android:name=".firebase.AppFirebaseMessagingService"
   android:enabled="true"
   android: permission = "android.permission.INTERNET" >
   <intent-filter>
   <action android:name = "com.google.firebase.MESSAGING_EVENT" / >
   </intent-filter> 
</service> 
<service android:name=".firebase.AppFirebaseInstanceIDService"
   android:enabled="true"
   android:permission="android.permission.INTERNET" >
   <intent-filter>
       <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
   </intent-filter>
</service>

1 Ответ

0 голосов
/ 11 мая 2018

priority и content_available - свойства сообщений верхнего уровня.FCM не распознает их, если поместить их в блок data.Кроме того, click_action имеет значение только внутри блока notification.Допустимое сообщение будет выглядеть следующим образом: необязательно: data или notification:

{
  "registration_ids": [<DEVICE>],
  "content_available": true,
  "priority": "high",
  "data": {
    "data_key_1": "some value",
    "data_Key_2": "another value"
  },
  "notification": {
    "title": "New Message",
    "body": "Hey there"
    "click_action": "ACTION_X_Y_Z_A_B_C_ETC"
  }
}

См. Документацию Legacy FCM Server для справки.

Возможно, вы не сразу видите сообщение с данными только на некоторых устройствах, поскольку ваше свойство priority неуместно.Сообщения только для данных отправляются с низким приоритетом по умолчанию и не вызывают пробуждение спящего устройства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...