从另一个应用程序发送 Firebase 通知

send Firebase notification from another app

是否有任何方法可以在不使用 Firebase API 或连接到 FCM 服务器的情况下使用来自另一个包 (apk) MainActivity.java 中的代码从 FirebaseMessagingService 调用 onMessageReceived

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
    }
}

尝试从另一个包的 MainActivity.java 调用 REST API。 API 可以找到文档 here。提供正确的服务器密钥以将 FCM 发送到您的另一个包的应用程序。

您需要阅读 FirebaseInstanceIdReceiver 的文档。这是从 FCM 接收推送消息的 BroadcastReceiver。它像这样合并到清单中:

 <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>

如该文档所述:

The com.google.android.c2dm.permission.SEND permission is held by Google Play services. This prevents other apps from invoking the broadcast receiver.

因此,除非您的代码是 运行 在 Google Play 服务应用程序进程中,或者是通过具有所需权限的根访问权限安装的其他类似进程,否则将不可能强行发信息