我正在使用react-native-fcm开发一个电话呼叫应用程序,以便在来电时通知用户。这是我收到通知时的应用程序。
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.myApp");
startActivity(launchIntent);
到目前为止一切都很好,但我希望我的活动在背景上开始,而不是显示任何关于它的视觉信息。我可以使用moveTaskToBack(true);
在MainActivity中执行此操作,但它会闪烁1秒,无论如何都可以在没有闪烁的情况下执行此操作吗?
答案 0 :(得分:0)
您为什么使用活动?如果要在后台运行,请使用服务。如果稍后需要显示UI,则启动活动。
答案 1 :(得分:0)
因为您只想显示来自firebase服务的通知。查看清单文件:
<service android:name=".YourFirebaseMessagingService" android:enabled="true" android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
该服务有一个带有com.google.firebase.MESSAGING_EVENT
操作的意图过滤器,您只需通过扩展FirebaseMessagingService并覆盖onMessageReceived
方法来实施该服务。
请注意,大多数邮件类型都提供了onMessageReceived
,但以下情况除外:
通知消息。在这种情况下,通知将传递到设备的系统托盘。用户点按通知会默认打开应用启动器。
包含通知和数据有效负载的消息,包括后台和前台。在这种情况下,通知将传递到设备的系统托盘,并且数据有效负载将在启动器活动的附加内容中传递。
服务在主线程上运行,除非另有明确说明。这意味着您可以显示您喜欢的任何通知,或者开始新的活动。
以上是上述例子:
public class YourFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if (remoteMessage.getNotification().getBody() != null) {
Log.e("FIREBASE", "Message Notification Body: " + remoteMessage.getNotification().getBody());
//DO WHATEVER YOU NEED HERE TO DISPLAY YOUR MESSAGE OR ACTIVITY
}
}
}
请注意,如果您想要唤醒后台应用程序,则需要对以下URL执行POST:
POST https://fcm.googleapis.com/fcm/send
以下标题:
密钥:内容类型,价值: application / json
密钥:授权,价值:密钥=
<your-server-key>