отправить уведомление Firebase из другого приложения

#android #firebase #firebase-cloud-messaging

#Android #firebase #firebase-облако-обмен сообщениями

Вопрос:

Есть ли какой-либо возможный способ вызвать onMessageReceived from FirebaseMessagingService с помощью кода в MainActivity.java из другого пакета (apk) без использования Firebase API или подключения к серверу FCM?

MyFirebaseMessagingService.java

 public final class MyFirebaseMessagingService extends FirebaseMessagingService {
    public void onMessageReceived(RemoteMessage remoteMessage) {
         // I'm interested in this method
    }

    public void onNewToken(String str) {
        // code
    }
}
  

Комментарии:

1. Каков ваш вариант использования для этого? Почти наверняка есть лучшие способы реализации этого, если это законный вариант использования (а не просто попытка спамить другое приложение сообщениями, которые оно не должно получать).

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

Ответ №1:

Вы захотите прочитать документацию для FirebaseInstanceIdReceiver. Это BroadcastReceiver, который получает push-сообщения от FCM. Оно объединено в манифесте следующим образом:

  <receiver
     android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
     android:exported="true"
     android:permission="com.google.android.c2dm.permission.SEND" >
     <intent-filter>
         <action android:name="com.google.android.c2dm.intent.RECEIVE" />
         <category android:name="YOUR_PACKAGE_NAME" />
     </intent-filter>
 </receiver>
  

Как указано в этой документации:

com.google.android.c2dm.permission.SEND Разрешение предоставляется сервисами Google Play. Это не позволяет другим приложениям вызывать широковещательный приемник.

Итак, если ваш код не запущен в процессе приложения Google Play Services или в каком-либо другом подобном процессе, установленном через root-доступ, который имеет необходимые разрешения, принудительная доставка сообщения будет невозможна.

Ответ №2:

Попробуйте вызвать REST API из вашего MainActivity.java другого пакета. Документацию по API можно найти здесь. Укажите правильный ключ сервера для отправки FCM в приложение вашего другого пакета.