反应本机火力基地。 getInitialNotification 获取空值
react-native-firebase. getInitialNotification gets null
当点击来自托盘的通知时,触发了 getInitialNotification 但 notificationOpen 参数获取空值。
我正在通过 firebase 控制台发送通知。如果我的应用程序在前台,我会收到我发送的通知数据。但是如果我的应用程序在后台或应用程序被杀死,我会收到通知,但是当我点击通知时,openNotification 的值为空。
This.is我在做什么
firebase.notifications().getInitialNotification()
.then((notificationOpen: NotificationOpen) => {
console.log('Notification closed')
console.log(notificationOpen)
if (notificationOpen) {
// App was opened by a notification
// Get the action triggered by the notification being opened
const action = notificationOpen.action;
// Get information about the notification that was opened
const notification: Notification = notificationOpen.notification;
}
})
您应该在您的应用中实现 getInitialNotification
和 notificationOpenedListener
,具体取决于应用的状态,当您点击通知时会调用其中一个,但您可以确定只有其中 1 个将被调用。
firebase
.notifications()
.getInitialNotification()
.then(notificationOpen => {
if (notificationOpen) {
}
});
this.notificationOpenedListener = firebase
.notifications()
.onNotificationOpened(() => {
});
创建SplashActivity.java及以下代码
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, MainActivity.class);
// this line is necessary to open notification when app is closed
intent.putExtras(this.getIntent());
startActivity(intent);
finish();
}
}
将启动画面 activity 添加到 AndroidManifest.xml
...
<activity
android:name=".SplashActivity"
android:theme="@style/SplashTheme"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
...
将初始资源添加到 Styles.xml
...
<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@drawable/background_splash</item>
<item name="android:statusBarColor">@color/darkblue</item>
</style>
...
创建 background_splash.xml 并创建应用程序启动时显示的资源
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/blue"/>
<item android:gravity="center">
<bitmap
android:tileMode="disabled"
android:src="@drawable/ic_launcher"
android:gravity="center" />
</item>
</layer-list>
当点击来自托盘的通知时,触发了 getInitialNotification 但 notificationOpen 参数获取空值。
我正在通过 firebase 控制台发送通知。如果我的应用程序在前台,我会收到我发送的通知数据。但是如果我的应用程序在后台或应用程序被杀死,我会收到通知,但是当我点击通知时,openNotification 的值为空。
This.is我在做什么
firebase.notifications().getInitialNotification()
.then((notificationOpen: NotificationOpen) => {
console.log('Notification closed')
console.log(notificationOpen)
if (notificationOpen) {
// App was opened by a notification
// Get the action triggered by the notification being opened
const action = notificationOpen.action;
// Get information about the notification that was opened
const notification: Notification = notificationOpen.notification;
}
})
您应该在您的应用中实现 getInitialNotification
和 notificationOpenedListener
,具体取决于应用的状态,当您点击通知时会调用其中一个,但您可以确定只有其中 1 个将被调用。
firebase
.notifications()
.getInitialNotification()
.then(notificationOpen => {
if (notificationOpen) {
}
});
this.notificationOpenedListener = firebase
.notifications()
.onNotificationOpened(() => {
});
创建SplashActivity.java及以下代码
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, MainActivity.class);
// this line is necessary to open notification when app is closed
intent.putExtras(this.getIntent());
startActivity(intent);
finish();
}
}
将启动画面 activity 添加到 AndroidManifest.xml
...
<activity
android:name=".SplashActivity"
android:theme="@style/SplashTheme"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
...
将初始资源添加到 Styles.xml
...
<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@drawable/background_splash</item>
<item name="android:statusBarColor">@color/darkblue</item>
</style>
...
创建 background_splash.xml 并创建应用程序启动时显示的资源
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/blue"/>
<item android:gravity="center">
<bitmap
android:tileMode="disabled"
android:src="@drawable/ic_launcher"
android:gravity="center" />
</item>
</layer-list>