Firebase 未在 iOS Ionic 上初始化
Firebase isn't initialised on iOS Ionic
我无意中发现了我的 Ionic、Angular 和 Firebase 应用程序的问题。
我以前遇到过这个问题,不过好像自己解决了,现在又遇到了,不知道有没有人知道为什么。
我正在使用 Firebase FCM 存储用户的 token
,然后向他们发送通知。在 android 上这完美地工作,在 iOS 上它曾经工作..
我从 Firebase 生成了 GoogleService-Info.plist
文件并将其放在我的主文件夹中。
我有以下代码来获取 fcm
令牌:
getFCMToken() {
let token;
this.firebaseNative.getToken().then((tok) => {
token = tok;
if(this.platform.is('ios')) {
this.firebaseNative.grantPermission().then((tok) => {
return this.fcmToFirestore(token);
}).catch(error => this.showToast("There was an error: " + error));
} else {
return this.fcmToFirestore(token);
}
}).catch(error => {
this.showToast("There was an error: " + error)
});
}
fcmToFirestore(token) {
if (!token) return;
const devicesRef = this.afs.collection('devices')
const docData = {
token,
userId: this.userData.uid,
}
return devicesRef.doc(token).set(docData);
}
当我 运行 在 iPhone 上执行以下代码时,我收到消息:
There was an error: Firebase isn't initialised
我在 imports
中的 app.module.ts
中初始化了应用程序,它一直有效,而且正如我所说,在 android 上运行良好。
知道为什么这对 iOS 不起作用吗?谢谢!
FCM
是 Firebase Cloud Messaging
,勉强支持可读性(这与 Firestore
完全不同)。 CocoaPods
可能缺乏相关依赖性,这可以解释它在 iOS 上不为 .ts
所知。将 CocoaPods
的当前版本与以前的版本进行比较应该可以显示那里到底发生了什么变化(使用版本控制的一个很好的理由)。
请参阅 FirebaseFirestore Framework Reference ...这与 JavaScript 无关。
这是必需的:pods/FirebaseFirestore。
This is an issue with the installed version of firebase plugin.
我通过降级到 1.0.5 减轻了这个错误
cordova plugin remove cordova-plugin-firebase
cordova plugin add cordova-plugin-firebase@1.0.5 --save
P.S。确保 config.xml
在所需版本中提到了 firebase。这有助于在所有开发系统中保持版本相同。
<plugin name="cordova-plugin-firebase" spec="~1.0.5" />
[编辑]
请注意,自 cordova-plugin-firebase
版本 2.x 起,initXXXXX
方法已再次删除。
并且版本 1.1.x 已被标记为 deprecated
.
[/编辑]
首先,如果您能提供有关您正在使用的 libraries/versions 的更多详细信息,这将很有帮助。
我猜你正在使用 cordova-plugin-firebase
版本 1.1.x 与 @ionic-native/firebase
(?)
看来,cordova-plugin-firebase
有一些新的初始化方法现在需要显式调用,然后才能使用 firebase 服务。
即
FirebasePlugin.initFirebase(success, error)
FirebasePlugin.initAnalytics(success, error)
FirebasePlugin.initCrashlytics(success, error)
FirebasePlugin.initPerformance(success, error)
FirebasePlugin.initRemoteConfig(success, error)
请注意,截至目前的最新版本 @ionic-native/firebase
(v4.12.2) 尚未集成这些功能。
因此,为了在 Ionic 应用程序中使用这些,您可能需要访问 "raw" FirebasePlugin
实例本身,例如
declare var FirebasePlugin;
// ...
this.platform.ready().then(() => {
FirebasePlugin.initFirebase(...
问题似乎是 Firebase 现在启动时未初始化,需要为此目的调用一个函数,然后您的代码才能调用 getToken()。
您需要的代码是(<any>window).FirebasePlugin.initFirebase()
我已经能够从 cordova firebase 插件的 github 获取此信息,其他人也遇到了同样的问题。出于某种原因,虽然 google 没有找到这个,也许它仍然是一个太新的问题
https://github.com/arnesson/cordova-plugin-firebase/issues/816
我无意中发现了我的 Ionic、Angular 和 Firebase 应用程序的问题。
我以前遇到过这个问题,不过好像自己解决了,现在又遇到了,不知道有没有人知道为什么。
我正在使用 Firebase FCM 存储用户的 token
,然后向他们发送通知。在 android 上这完美地工作,在 iOS 上它曾经工作..
我从 Firebase 生成了 GoogleService-Info.plist
文件并将其放在我的主文件夹中。
我有以下代码来获取 fcm
令牌:
getFCMToken() {
let token;
this.firebaseNative.getToken().then((tok) => {
token = tok;
if(this.platform.is('ios')) {
this.firebaseNative.grantPermission().then((tok) => {
return this.fcmToFirestore(token);
}).catch(error => this.showToast("There was an error: " + error));
} else {
return this.fcmToFirestore(token);
}
}).catch(error => {
this.showToast("There was an error: " + error)
});
}
fcmToFirestore(token) {
if (!token) return;
const devicesRef = this.afs.collection('devices')
const docData = {
token,
userId: this.userData.uid,
}
return devicesRef.doc(token).set(docData);
}
当我 运行 在 iPhone 上执行以下代码时,我收到消息:
There was an error: Firebase isn't initialised
我在 imports
中的 app.module.ts
中初始化了应用程序,它一直有效,而且正如我所说,在 android 上运行良好。
知道为什么这对 iOS 不起作用吗?谢谢!
FCM
是 Firebase Cloud Messaging
,勉强支持可读性(这与 Firestore
完全不同)。 CocoaPods
可能缺乏相关依赖性,这可以解释它在 iOS 上不为 .ts
所知。将 CocoaPods
的当前版本与以前的版本进行比较应该可以显示那里到底发生了什么变化(使用版本控制的一个很好的理由)。
请参阅 FirebaseFirestore Framework Reference ...这与 JavaScript 无关。
这是必需的:pods/FirebaseFirestore。
This is an issue with the installed version of firebase plugin.
我通过降级到 1.0.5 减轻了这个错误
cordova plugin remove cordova-plugin-firebase
cordova plugin add cordova-plugin-firebase@1.0.5 --save
P.S。确保 config.xml
在所需版本中提到了 firebase。这有助于在所有开发系统中保持版本相同。
<plugin name="cordova-plugin-firebase" spec="~1.0.5" />
[编辑]
请注意,自 cordova-plugin-firebase
版本 2.x 起,initXXXXX
方法已再次删除。
并且版本 1.1.x 已被标记为 deprecated
.
[/编辑]
首先,如果您能提供有关您正在使用的 libraries/versions 的更多详细信息,这将很有帮助。
我猜你正在使用 cordova-plugin-firebase
版本 1.1.x 与 @ionic-native/firebase
(?)
看来,cordova-plugin-firebase
有一些新的初始化方法现在需要显式调用,然后才能使用 firebase 服务。
即
FirebasePlugin.initFirebase(success, error)
FirebasePlugin.initAnalytics(success, error)
FirebasePlugin.initCrashlytics(success, error)
FirebasePlugin.initPerformance(success, error)
FirebasePlugin.initRemoteConfig(success, error)
请注意,截至目前的最新版本 @ionic-native/firebase
(v4.12.2) 尚未集成这些功能。
因此,为了在 Ionic 应用程序中使用这些,您可能需要访问 "raw" FirebasePlugin
实例本身,例如
declare var FirebasePlugin;
// ...
this.platform.ready().then(() => {
FirebasePlugin.initFirebase(...
问题似乎是 Firebase 现在启动时未初始化,需要为此目的调用一个函数,然后您的代码才能调用 getToken()。
您需要的代码是(<any>window).FirebasePlugin.initFirebase()
我已经能够从 cordova firebase 插件的 github 获取此信息,其他人也遇到了同样的问题。出于某种原因,虽然 google 没有找到这个,也许它仍然是一个太新的问题
https://github.com/arnesson/cordova-plugin-firebase/issues/816