是否有任何可能的方法可以在不使用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
}
}
您需要阅读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>
如该文件所述:
com.google.android.c2dm.permission.SEND
权限由Google Play服务持有。这将阻止其他应用程序调用广播接收器。
因此,除非您的代码运行在Google Play服务应用程序进程中,或者通过具有所需权限的root访问安装的其他类似进程中,否则不可能强制传递消息。
尝试从另一个包的MainActivity.java
调用REST API。API文档可在此处找到。提供适当的服务器密钥以将FCM发送到另一个程序包的应用程序。