Firebase React Native:脱机身份验证
我在React Native iOS应用程序中使用Firebase,主要用于存储用户数据和用户身份验证,当设备实际具有可用的网络连接时,该工作非常有效.
说到Firebase的离线功能,它看起来像这样: 问题:用户启动没有网络连接的应用程序无法执行任何操作,因为他们从未登录过 以下是重现此行为的步骤: 第1步:注销用户启动具有网络连接的应用程序 >用户点击“Facebook登录”按钮 第2步:登录用户启动具有网络连接的应用程序 > app意识到本地存储中有一个generatedToken 第3步:登录用户启动应用程序,无需网络连接 > app意识到本地存储中有一个generatedToken 尝试的解决方案 >在初始化FIRApp之后,在Objective-C / AppDelegate.m中将persistenceEnabled设置为true: (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // ... [FIRApp configure]; [FIRDatabase database].persistenceEnabled = YES; // ... } 这不会导致期望的结果,并且(至少在我的情况下)在Firebase的行为方面不会改变任何内容. 感谢您的投入!
虽然Firebase JS SDK很棒并且通常在React Native中运行,但它主要是为Web平台构建的,因此不是在React Native环境中使用的最全面的解决方案,例如有很多Firebase服务,您将无法使用Web SDK.参见比较表
here.
但是,您可以使用原生Android / iOS Firebase SDK运行,并在它们和JavaScript代码之间建立桥梁(即反应原生模块). 值得庆幸的是,您不必自己实现,因为已经有模块可以为您执行此操作: 例如,react-native-firebase在JavaScript端镜像Web SDK API,但在本机端使用本机Android& iOS Firebase SDK.它与您可能已经实现的任何现有Firebase Web SDK逻辑兼容,并且旨在作为Web SDK的替代品. 该库支持具有auth持久性和脱机功能的用例: import firebase from 'react-native-firebase'; const instance = firebase.initializeApp({ persistence: true }); // can also use `keepSynced` / `setPersistence` methods: // instance.database().ref('/someref').keepSynced(); // instance.database().setPersistence(true); export default instance; (免责声明:我是react-native-firebase的作者) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |