繁体   English   中英

在 Firebase 上打开活动收到通知

[英]open activity on Firebase notification received

我想在收到通知时自动打开一个活动,当应用程序在前台时它工作正常但当应用程序在后台时它不工作。

Intent intent = new Intent(this, NewPickUpRequestActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
            intent.putExtra(EXTRA_TRIP_ID, tripId);
            Helper.setStringValue(KEY_LAST_TRIP_TRIP_ID, tripId);
            startActivity(intent);

试试这个

Intent intent = new Intent("android.intent.category.LAUNCHER");
intent.setClassName("com.your.package", "com.your.package.MainActivity");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

当您无法启动活动https://developer.android.com/guide/components/activities/background-starts时,您应该考虑一些例外情况

有两种类型的消息数据消息和通知消息。 无论应用程序是在前台还是后台,数据消息都在 onMessageReceived 中处理。 数据消息是 GCM 传统上使用的类型。 当应用程序在前台时,仅在 onMessageReceived 中接收通知消息。 当应用程序在后台时,会显示自动生成的通知。 当用户点击通知时,他们将返回到应用程序。 包含通知和数据有效负载的消息被视为通知消息。 Firebase 控制台始终发送通知消息。

示例代码:- 您需要像这样在通知负载中指定 click_action

$noti = array
    (
    'icon' => 'new',
    'title' => 'title',
    'body' => 'new msg',
    'click_action' => 'open_NewPickUpRequestActivity'
);

现在在manifest文件中,在您的NewPickUpRequestActivity活动标签中执行此操作

<activity
           android:name=".NewPickUpRequestActivity">
            <intent-filter>
                <action android:name="open_NewPickUpRequestActivity" /> // should be same as in click action
               <category android:name="android.intent.category.DEFAULT"/>
           </intent-filter>
    </activity>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM