是否可以通过其他软件包(apk)中的onMessageReceived
中的代码从FirebaseMessagingService
调用MainActivity.java
而不使用Firebase API或连接到FCM Server?
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
}
}
答案 0 :(得分:2)
您将需要阅读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服务应用程序进程中运行,或者通过具有所需权限的通过根访问权限安装的其他类似进程运行,否则将无法强行传递消息。
答案 1 :(得分:0)
尝试从另一个软件包的MainActivity.java
中调用REST API。可以在here中找到API文档。提供适当的服务器密钥,以将FCM发送到另一个软件包的应用程序。