我正在使用react native cli开发一个纯react native-app。
我最近集成了firebase并安装了@react native firebase/messaging
调用消息传递的.getToken((时
import messaging from '@react-native-firebase/messaging';
await messaging().getToken() <------------ CAUSING APP TO CLOSE
每次我添加这一行时,应用程序都会在没有任何警告和日志的情况下关闭,当我评论行时不会发生这种情况
这是我的AndroidManifest.XML
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.NAME.NAME">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<application
android:name=".MainApplication"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:allowBackup="false"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-9772207663610474XXXXXXXXXX"/>
<meta-data
android:name="com.dieam.reactnativepushnotification.notification_foreground"
android:value="false"/>
<!-- Change the resource name to your App's accent color - or any other color you want -->
<meta-data
android:name="com.dieam.reactnativepushnotification.notification_color"
android:resource="@color/white"/> <!-- or @android:color/{name} to use a standard color -->
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationActions" />
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationPublisher" />
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationBootEventReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/>
</intent-filter>
</receiver>
</application>
这是Android/build.gradle
buildscript {
ext {
buildToolsVersion = "29.0.3"
minSdkVersion = 21
compileSdkVersion = 29
targetSdkVersion = 29
ndkVersion = "20.1.5948944"
googlePlayServicesVersion = "+"
firebaseVersion = "+"
firebaseMessagingVersion = "+"
}
repositories {
google()
jcenter()
}
dependencies {
classpath("com.android.tools.build:gradle:4.1.0")
classpath 'com.google.gms:google-services:4.3.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}}
allprojects {
repositories {
mavenLocal()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url("$rootDir/../node_modules/react-native/android")
}
maven {
// Android JSC is installed from npm
url("$rootDir/../node_modules/jsc-android/dist")
}
google()
jcenter()
maven { url 'https://www.jitpack.io' }
}}
您是否将此行添加到Android/app/build.gradle中?
implementation platform(‘com.google.firebase:firebase-bom:28.0.1’)
如果执行了,请尝试将其删除、清理、重新生成并再次运行项目。
firebaseMessagingVersion = "21.1.0"
解决我的问题。
在package.json
中更新为"@react-native-firebase/messaging": "^11.5.0"
并在android/build.gradle
的buildscript.ext
中更改firebaseMessagingVersion = "21.1.0"
为我解决了问题。
在执行此行之前检查消息传递权限。
_checkPermission = async() => {
const enabled = await firebase.messaging().hasPermission();
if (enabled) {
const device = await firebase.messaging().getToken()
console.warn(device)
}
else this._getPermission()
}
_getPermission = async() => {
firebase.messaging().requestPermission()
.then(() => {
this._checkPermission()
})
.catch(error => {
// User has rejected permissions
});
}