从其他应用发送Firebase通知

时间:2020-09-15 04:41:54

标签: android firebase firebase-cloud-messaging

是否可以通过其他软件包(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
    }
}

2 个答案:

答案 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发送到另一个软件包的应用程序。