从另一个应用程序发送 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 服务应用程序进程中,或者是通过具有所需权限的根访问权限安装的其他类似进程,否则将不可能强行发信息
是否有任何方法可以在不使用 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 服务应用程序进程中,或者是通过具有所需权限的根访问权限安装的其他类似进程,否则将不可能强行发信息