标签: react-native-firebase

React Native - 使用启动屏幕和 navigation.setRoot() 初始化应用程序后触摸不起作用

我已经开始这个基础项目(React Native Firebase):

\n\n

https://github.com/invertase/react-native-firebase

\n\n

我已经集成了 React Native Navigation V2:

\n\n

https://wix.github.io/react-native-navigation/v2/#/

\n\n

以及 React Native 启动屏幕(npm 包react-native-splash-screen):

\n\n

https://github.com/crazycodeboy/react-native-splash-screen

\n\n

根据本教程集成:

\n\n

https://medium.com/handlebar-labs/how-to-add-a-splash-screen-to-a-react-native-app-ios-and-android-30a3cec835ae

\n\n

根据react-native-navigation文档,我最近的更改是setRoot()对我内部的SplashScreen进行的Navigation.onAppLaunched(()=>{Navigation.setRoot({...})}),然后一旦安装了SplashScreen组件,它就会用于setRoot()导航到LoginScreen。

\n\n

它看起来不错,但是当应用程序完成加载并登陆登录屏幕时,除非我使用 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

5
推荐指数
0
解决办法
1440
查看次数

在 iOS 上安装 react-native-firebase 时出现问题

我正在尝试在 iOS 项目上安装react-native-firebase。我已遵循所有说明,但仍然遇到问题

我收到以下错误:

在此输入图像描述

但是,我可以<Firebase.h>AppDelegate.m文件导入

我尝试过不同的方法来解决问题:

  • pod update
  • 未注释platform :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)

知道还有什么可能导致这个问题吗?

谢谢

ios firebase react-native react-native-firebase

5
推荐指数
1
解决办法
4437
查看次数

Firestore - 乐观更新缓慢?

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

5
推荐指数
0
解决办法
1094
查看次数

注销时使 Firebase 令牌失效 (React Native Firebase)

当用户注销时,使react-native-firebase上的firebase令牌失效的正确方法是什么?

Firebase 的deleteInstanceId在react-native-firebase 中不可用。

在 Github 问题中,建议使用以下方法:firebase.iid().delete() 然而,使用此方法一次后,我无法让用户继续接收通知(使用新生成的 firebase 令牌)——也是开始接收 firebase 的唯一方法又发消息,是要删除应用程序

此行为在 iOS 和 Android 上都发生过。

我想在注销时使令牌失效的原因是为了确保该设备不会收到仅供用户在登录时看到的通知

firebase react-native react-native-firebase

5
推荐指数
0
解决办法
636
查看次数

如何使用react-native-firebase将自定义图像添加到iOS中的通知中

我想使用 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)

问题是没有任何错误消息可以帮助我。通知按预期显示标题和正文,但不存在图像。从我能读到的文档来看,我想做的事情是可能的。

firebase react-native react-native-firebase

5
推荐指数
1
解决办法
3428
查看次数

在项目“:app”中找不到任务“installDebug”

当我尝试执行以下代码时,我的反应本机应用程序出现错误

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 react-native-firebase

5
推荐指数
1
解决办法
1万
查看次数

如何在执行map()循环后调用函数

我正在使用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)

javascript arrays loops react-native react-native-firebase

5
推荐指数
1
解决办法
5363
查看次数

@react-native-firebase 破坏单元测试

我安装了 @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)

firebase jestjs react-native react-native-firebase

5
推荐指数
1
解决办法
2021
查看次数

我应该构建本地数据层/应用程序状态来维护 React Native/Firestore 应用程序中的状态吗?

Firestore 的一个主要卖点是能够将其用作在线/离线事实来源。我现在正在以这种方式使用它:直接在操作上更新 Firestore 文档,然后侦听 Firestore DB 更改并将其映射回本地状态。然而,依靠这种延迟补偿和映射回本地状态不足以实现快速更新(即使文档大小很小,也可以点击、切换)。例如,切换将“抖动”,因为 RN 切换可能会在点击时移动,并且本地状态在返回之前不会更新,请参阅视频示例。在 Android 上情况似乎更糟,而且问题并不严格限于基本切换。

  1. 文档大小或查询结果大小对延迟补偿的影响更大吗?目前我们的文档大小非常小,最坏情况下大约有 1000 个查询结果集。我们可以将文档放大 1000 倍 (100kb),并拥有大小为 1 的查询结果集。更新:此处的测试似乎不一致,延迟补偿在这两种情况下都不理想
  2. 以下哪些其他因素可能会影响延迟补偿?

    • 使用带有自定义索引的查询。注意:我们当前没有从缓存中读取,我们使用的是 JS SDK
    • 多次写入。对同一个文档进行多次写入会使情况变得更糟(4 次快速写入与 2 次快速写入)。更新:不清楚这有很大的不同
    • 使用原生与 JS 模块。我们目前正在将 Firestore Web SDK 与 Expo 应用结合使用。更新:通过React-Native Firestore切换到本机模块没有明显的性能提升
  3. 人们是否经常使用 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

5
推荐指数
1
解决办法
482
查看次数

如何克服“权限拒绝......使用 ACTION_OPEN_DOCUMENT 或相关 API 获取访问权限”?

我正在使用react-native-firebasereact-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 react-native-firebase

5
推荐指数
1
解决办法
5712
查看次数