连接 Atlas App Services APP - React Native SDK
应用客户端是与 App Services 后端的接口。 它提供对身份验证、 Realm 函数和Atlas Device Sync 的访问。
开始之前
配置应用程序客户端
要设置 App 客户端,请将应用程序 ID 字符串传递给id
的AppProvider
属性。使用AppProvider
封装需要访问应用的任何组件。 在此示例中,我们将UserProvider包装在AppProvider
中以对用户进行身份验证。
import React from 'react'; import {AppProvider, UserProvider} from '@realm/react';
export const AppWithAuthHook = () => { return ( <View> <AppProvider id={APP_ID}> <UserProvider fallback={LogIn}> <MyApp /> </UserProvider> </AppProvider> </View> ); };
您可以创建多个应用客户端实例以连接多个应用。 股票相同 App ID的所有 App客户端实例使用相同的根本的连接。
重要
初始化应用后更改应用配置
在版本realm@12.6.0
中进行了更改:不缓存baseUrl
初始化 App 客户端时,会在内部缓存配置。 尝试在同一进程中“关闭”并重新打开配置已更改的应用无效。 客户端继续使用缓存的配置。
从React Native SDK版本12.6.0开始,不会缓存AppConfiguration
中的baseUrl
。 这意味着您可以更改baseUrl
,应用客户端将使用更新后的配置。 在早期 SDK 版本中,对缓存的应用配置中的baseUrl
进行更改无效。
检索应用程序客户端的实例
包装在AppProvider
中的所有组件都可以使用useApp()
钩子访问权限应用程序客户端。
import React from 'react'; import {useApp} from '@realm/react';
function MyApp() { const app = useApp(); // Proceed to app logic... }
检索应用程序提供商外部的应用程序
要从应用程序中的任何位置检索 App Client 实例,请从realm
包中实例化Realm.App()的新实例,然后传入App ID
。
import Realm from 'realm'; const app = Realm.App.getApp("<Your App ID>");
加密应用元数据
您可以对Atlas App Services在客户端设备上存储的元数据进行加密。 使用MetadataMode 枚举的值来确定加密行为。
要加密应用元数据,请执行以下操作:
从
Realm
导入MetadataMode
并导入其他依赖项:import React from 'react'; import {Text, View} from 'react-native'; import {MetadataMode} from 'realm'; import {AppProvider} from '@realm/react'; 创建包含
metadata
属性的应用配置对象。将
metadata.mode
设置为MetadataMode.Encryption
。将
metadata.encryptionKey
设置为要用于加密的密钥。将应用配置对象传递给
new Realm.App()
。
const EncryptMetadata = ({ encryptionKey, }: { encryptionKey: ArrayBuffer; }) => { const metadataConfig = { mode: MetadataMode.Encryption, encryptionKey: encryptionKey, }; return ( <AppProvider id={APP_ID} metadata={metadataConfig}> <RestOfApp /> </AppProvider> ); };
连接到特定MongoDB Server
默认情况下,Atlas Device SDK 使用https://services.cloud.mongodb.com
的全局baseURL
连接到 Atlas。 在某些情况下,您可能想要连接到不同的服务器:
您的 App Services App 使用本地部署,并且您希望直接连接到您所在区域的本地
baseURL
。
您可以指定baseURL
作为AppProvider的属性。 所有AppConfiguration键都可以作为属性传递给AppProvider
。
在运行时连接到不同的MongoDB Server
在版本 realm@12.8.0
中进行了更改。
在某些情况下,您可能希望在应用运行时更改baseURL
。
目前,此功能作为实验性模块实现,需要特定的Typescript配置。 所需的配置可能很难与 React Native 应用程序一起使用。 有关实施的更多信息,请参阅Node.js SDK 的文档。