阻止第三方图书馆获取我的推送通知

Leo*_*san 5 android firebase firebase-cloud-messaging

我的应用程序正在实施FCM,因此我使用的是第3方库。我的问题是,每次我通过控制台发送通知时,第三方都已注册了这样的广播接收器

    <receiver
        android:name=".ThirdPartyReceiver"
        android:exported="true"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        </intent-filter>
    </receiver>
Run Code Online (Sandbox Code Playgroud)

能够获取所有通知的内容,如何防止这种情况?atm我正在使用我的凭据初始化和使用firebase应用程序实例,如下所示:

FirebaseOptions.Builder()
        .setApplicationId(id)
        .setApiKey(api)
        .setDatabaseUrl(databaseurl)
        .setGcmSenderId(senderId)
        .setProjectId(projectId)
        .build()
Run Code Online (Sandbox Code Playgroud)

但是看起来FCM仅依靠packageName来传递推送通知,并且我项目中包含的任何第三方库都可以注册以获取推送通知,有没有办法防止这种情况发生?

观察,手动禁用所有未知的接收器可以防止这种情况,但是随后库不再收到通知,因此我破坏了其功能。

Ján*_*iár 3

我不确定 FCM 是否使用有序广播,但如果使用,那么您必须:

  1. 更改您的优先级BroadcastReveiver(例如在 中AndroidManifest.xml)并且
  2. abortBroadcast()在实现中调用onReceive()以防止任何其他广播接收器接收广播。

https://developer.android.com/reference/android/content/BroadcastReceiver.html#abortBroadcast()

它可能对你有帮助。