我已经开始这个基础项目(React Native Firebase):
\n\nhttps://github.com/invertase/react-native-firebase
\n\n我已经集成了 React Native Navigation V2:
\n\nhttps://wix.github.io/react-native-navigation/v2/#/
\n\n以及 React Native 启动屏幕(npm 包react-native-splash-screen):
\n\nhttps://github.com/crazycodeboy/react-native-splash-screen
\n\n根据本教程集成:
\n\n\n\n根据react-native-navigation文档,我最近的更改是setRoot()对我内部的SplashScreen进行的Navigation.onAppLaunched(()=>{Navigation.setRoot({...})}),然后一旦安装了SplashScreen组件,它就会用于setRoot()导航到LoginScreen。
它看起来不错,但是当应用程序完成加载并登陆登录屏幕时,除非我使用 Cmd+m >“切换检查器”打开和关闭检查器,否则屏幕上不会出现任何触摸操作。
\n\n这是一些代码,首先是 AndroidManifest.xml:
\n\n<manifest xmlns:android="http://schemas.android.com/apk/res/android"\n package="com.jaqstudios.plantlife"\n android:versionCode="1"\n android:versionName="1.0">\n\n <uses-permission android:name="android.permission.INTERNET" />\n <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>\n\n <uses-sdk\n android:minSdkVersion="16"\n android:targetSdkVersion="22" />\n\n <application\n android:name=".MainApplication"\n android:allowBackup="true"\n android:label="@string/app_name"\n android:icon="@mipmap/ic_launcher"\n android:theme="@style/AppTheme">\n <activity\n android:name=".SplashActivity"\n android:theme="@style/SplashTheme"\n android:label="@string/app_name">\n <intent-filter>\n <action android:name="android.intent.action.MAIN" />\n <category android:name="android.intent.category.LAUNCHER" />\n </intent-filter>\n </activity>\n <activity\n android:name=".MainActivity"\n android:label="@string/app_name"\n android:configChanges="keyboard|keyboardHidden|orientation|screenSize"\n android:windowSoftInputMode="adjustResize"\n android:exported="true"\n …Run Code Online (Sandbox Code Playgroud) android splash-screen react-native react-native-navigation react-native-firebase
我正在尝试在 iOS 项目上安装react-native-firebase。我已遵循所有说明,但仍然遇到问题
我收到以下错误:
但是,我可以<Firebase.h>从AppDelegate.m文件导入
我尝试过不同的方法来解决问题:
pod updateplatform :ios, '9.0'$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase递归方式...我不知道还可以尝试什么!
这是 Pod 下载的依赖项:
Using Firebase (5.1.0)
Using FirebaseAnalytics (5.0.1)
Using FirebaseCore (5.0.2)
Using FirebaseInstanceID (3.0.0)
Using GoogleToolboxForMac (2.1.4)
Run Code Online (Sandbox Code Playgroud)
知道还有什么可能导致这个问题吗?
谢谢
Firestore 中的乐观更新似乎没有预期的那么快。我看到更新时间至少为 200 毫秒,在我写入 Firestore 的时间和触发快照侦听器的时间之间。我正在使用 React Native Firebase 库,但我认为问题不太可能源于此。该库只是本机 SDK 的一个薄包装层。我启用了离线持久性,但无论是否有互联网连接,行为都是相同的。
下面的代码片段说明了这个问题:
class App extends React.Component{
componentDidMount(){
db.collection("cities").onSnapshot(function(qsnap) {
this.setState({cities: qsnap.docs.map(s => s.data())})
});
}
addCity(){
db.collection("cities").add({
name: Math.random(),
country: "Japan"
})
}
render(){
//After clicking add city, the new render doesn't happen until
//after a minimum time of 200 ms :(
<View>
<TouchableOpacity onPress={this.addCity}>Add city</TouchableOpacity>
{this.state.cities.map(c => <Text>{c.name}</Text>)}
</View>
}
}
Run Code Online (Sandbox Code Playgroud)
我有什么做错的地方或者可以采取不同的做法吗?我喜欢从数据存储订阅快照并直接从中渲染 UI,然后直接写入数据存储并通过乐观传播让我的 UI 立即更新的模式。
firebase react-native google-cloud-firestore react-native-firebase
当用户注销时,使react-native-firebase上的firebase令牌失效的正确方法是什么?
Firebase 的deleteInstanceId在react-native-firebase 中不可用。
在 Github 问题中,建议使用以下方法:firebase.iid().delete()
然而,使用此方法一次后,我无法让用户继续接收通知(使用新生成的 firebase 令牌)——也是开始接收 firebase 的唯一方法又发消息,是要删除应用程序
此行为在 iOS 和 Android 上都发生过。
我想在注销时使令牌失效的原因是为了确保该设备不会收到仅供用户在登录时看到的通知
我想使用 firebase 云消息传递中的数据有效负载在通知中显示图像。该图像被指定为托管该图像的网站的 URL。
看起来我想要做的是将图像添加为附件,请参阅下面的第 8 行。然而,除了应用程序图标之外,不存在任何图像。
const notification = new firebase.notifications.Notification()
.setNotificationId("notification_id")
.setTitle(notification.data.title)
.setBody(notification.data.body)
.setData({ url: notification.data.url })
.ios.setLaunchImage(notification.data.icon)
.android.setBigPicture(notification.data.icon)
.ios.addAttachment("some_id", notification.data.icon, {});
Run Code Online (Sandbox Code Playgroud)
问题是没有任何错误消息可以帮助我。通知按预期显示标题和正文,但不存在图像。从我能读到的文档来看,我想做的事情是可能的。
当我尝试执行以下代码时,我的反应本机应用程序出现错误
react-native run-android --variant=release
Run Code Online (Sandbox Code Playgroud)
Starting a Gradle Daemon (subsequent builds will be faster)
> Configure project :react-native-firebase
react-native-firebase: using React Native prebuilt binary from /Users/sanglee/Documents/react-native-firebase-starter/node_modules/react-native/android
FAILURE: Build failed with an exception.
* What went wrong:
Task 'installDebug' not found in project ':app'.
Run Code Online (Sandbox Code Playgroud)
我从react-native-firebase下载了react-native应用程序,甚至无法使用android进行测试。
我正在使用react-native firebase 将我的媒体保存到firebase 中。我有一组需要保存在 firebase 中的 URL。为此,我使用 map() 来一一保存。保存后,我将成功 URL 推送到数组中。我需要用这个数组作为参数来调用一个函数。所以我需要在数组完成后调用这个函数。我进行了很多搜索,但没有找到此任务的良好解释。谁能帮我。谢谢。
var mediaArray = []; //array of success callbacks values
var completedMediaSurveysAnswers = [{}, {}, {}]; //object array of URLs and media types
completedMediaSurveysAnswers.map((i) => {
try {
const storage = firebase.storage();
const mRef = storage.ref('portal').child('Survey/Image/user/' + uuidv4() + 'media');
mRef.putFile(i.urlPath, {
contentType: i.mediaType
})
.on('state_changed', snapshot => {},
err => {
console.log('Failed to upload file to firebase storage')
},
uploadedFile => {
// Success
this.setState({
mediaPath: uploadedFile.downloadURL
})
mediaArray.push(this.state.mediaPath) …Run Code Online (Sandbox Code Playgroud) 我安装了 @react-native-firebase v6,它按预期工作,但是当我尝试运行单元测试时,出现以下错误:
Jest encountered an unexpected token
Details:
/node_modules/@react-native-firebase/database/lib/index.js:18
import { isBoolean, isNumber, isString } from '@react-native-firebase/app/lib/common';
^
SyntaxError: Unexpected token {
Run Code Online (Sandbox Code Playgroud)
我尝试将 @react-native-firebase/database 和 @react-native-firebase/app 添加到 jest config TransformIgnorePatterns 并收到以下错误:
Test suite failed to run
Invariant Violation: Native module cannot be null.
at invariant (node_modules/invariant/invariant.js:40:15)
at RNFBNativeEventEmitter.NativeEventEmitter (node_modules/react-native/Libraries/EventEmitter/NativeEventEmitter.js:36:7)
at new RNFBNativeEventEmitter (node_modules/@react-native-firebase/app/lib/internal/RNFBNativeEventEmitter.js:24:5)
at Object.<anonymous> (node_modules/@react-native-firebase/app/lib/internal/RNFBNativeEventEmitter.js:48:16)
at Object.<anonymous> (node_modules/@react-native-firebase/app/lib/internal/registry/nativeModule.js:21:1)
Run Code Online (Sandbox Code Playgroud)
我还尝试用 Jest 模拟模块,如下所示:
import * as FBCommon from '@react-native-firebase/app/lib/common'
jest.mock(FBCommon, () => {
return () => ({
isBoolean: jest.fn(),
isNumber: …Run Code Online (Sandbox Code Playgroud) Firestore 的一个主要卖点是能够将其用作在线/离线事实来源。我现在正在以这种方式使用它:直接在操作上更新 Firestore 文档,然后侦听 Firestore DB 更改并将其映射回本地状态。然而,依靠这种延迟补偿和映射回本地状态不足以实现快速更新(即使文档大小很小,也可以点击、切换)。例如,切换将“抖动”,因为 RN 切换可能会在点击时移动,并且本地状态在返回之前不会更新,请参阅视频示例。在 Android 上情况似乎更糟,而且问题并不严格限于基本切换。
以下哪些其他因素可能会影响延迟补偿?
人们是否经常使用 React Native / Firestore 应用程序构建本地数据填充层 / 本地应用程序状态来帮助提高本地性能速度?有没有推荐的库?
在应用程序加载时,安装侦听器,并将结果导出到上下文以通过应用程序使用
const [user, setUser] = useState();
firebase.firestore().collection(`users/${user.uid}`).onSnapshot(qs => setUser(oldState => {
const newState = {};
qs.docChanges().forEach(change => {
if (change.type === "added" || change.type === "modified") …Run Code Online (Sandbox Code Playgroud) reactjs react-native expo google-cloud-firestore react-native-firebase
我正在使用react-native-firebase和react-native-document-picker,并且我正在尝试遵循面部检测教程。
尽管通过PermissionsAndroid具有读取访问权限,但目前仍出现以下错误:
Permission Denial: reading com.android.provides.media.MediaDocumentsProvider uri [uri] from pid=4746, uid=10135 requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs
我可以在屏幕上显示用户选择的图像,但react-native-firebase功能似乎无法获得许可。错误发生在这个调用:const faces = await vision().faceDetectorProcessImage(localPath);。
关于如何授予人脸检测功能访问权限或我做错了什么有什么建议吗?
我的 AndroidManifest.xml 文件包含以下内容:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)
以下是该组件中的所有代码以供参考:
import React, {useState} from 'react';
import { Button, Text, Image, PermissionsAndroid } from 'react-native';
import vision, { VisionFaceContourType } from '@react-native-firebase/ml-vision';
import DocumentPicker from 'react-native-document-picker';
async function processFaces(localPath) …Run Code Online (Sandbox Code Playgroud) react-native ×10
firebase ×5
android ×1
arrays ×1
expo ×1
ios ×1
javascript ×1
jestjs ×1
loops ×1
reactjs ×1