类应用
- java.lang.Object
-
- io.realm.mongodb.App
-
public class App extends Object
应用程序是与MongoDB Realm 应用程序交互的主要客户端入口点。该应用程序可用于:
- 通过身份验证提供者(
ApiKeyAuth
、EmailPasswordAuthImpl
)注册使用并执行各种与用户相关的操作 - 使用 Synchronized Realm 在本地设备和远程 Realm 应用之间同步数据
- 调用 Realm App 函数
Functions
- 从 MongoDB 数据库访问远程数据
MongoClient
要创建与远程Realm 应用链接的应用,请初始化 Realm 并配置应用,如下所示:
class MyApplication extends Application { App APP; // The App instance should be a global singleton \@Override public void onCreate() { super.onCreate(); Realm.init(this); AppConfiguration appConfiguration = new AppConfiguration.Builder(BuildConfig.MONGODB_REALM_APP_ID) .appName(BuildConfig.VERSION_NAME) .appVersion(Integer.toString(BuildConfig.VERSION_CODE)) .build(); APP = new App(appConfiguration); } }
配置应用后,您可以开始管理用户、配置同步 Realm、调用远程 Realm 函数以及通过 Mongo 集合访问远程数据。 以下示例显示了不能从主线程使用的同步 API。 对于等效的异步对应项。 有关示例项目,请参阅 https://github.com/realm/realm-java/tree/v10/examples/mongoDbRealmExample。
要注册新用户和/或使用现有用户登录,请执行以下操作:
// 注册新用户 APP.getEmailPassword().registerUser(用户名, password); // 使用现有用户登录 User user = APP.login(Credentials.emailPassword(用户名, 密码))
对于授权用户,您可以通过使用
SyncConfiguration
打开 Realm,在本地设备和远程 Realm 应用之间同步数据,如下所示:SyncConfiguration syncConfiguration = new SyncConfiguration.Builder(user, "<partition value>") .build(); Realm 实例 = Realm.getInstance(syncConfiguration); SyncSession session = APP.getSync().getSession(syncConfiguration); instance.executeTransaction(realm -> { realm.insert(...); }); session.uploadAllLocalChanges(); instance.close();
您可以调用远程 Realm 函数,如下所示:
Functions functions = user.getFunctions(); Integer sum = functions.callFunction("sum", Arrays.asList(1, 2, 3, 4), Integer.class);
并从远程 Realm 应用访问collection,如下所示:
MongoClient client = user.getMongoClient(SERVICE_NAME) MongoDatabase database = client.getDatabase(DATABASE_NAME) MongoCollection<DocumentT> collection = database.getCollection(COLLECTION_NAME); Long count = collection.count().get()
- 通过身份验证提供者(
-
-
嵌套类摘要
嵌套类 修饰符和类型 类 说明 static interface
App.Callback<T>
对App
可用的异步方法的回调。static class
App.Result<T>
结果类,表示从此应用程序向 MongoDB Realm 发出异步请求的结果。
-
字段摘要
字段 修饰符和类型 字段 说明 static ThreadPoolExecutor
NETWORK_POOL_EXECUTOR
针对 MongoDB Realm 执行网络请求时使用的线程池。
-
构造函数摘要
构造函数 Constructor 说明 App(AppConfiguration config)
构造函数,用于根据给定的AppConfiguration创建应用程序。App(String appId)
-
方法摘要
所有方法 实例方法 具体方法 修饰符和类型 方法 说明 void
addAuthenticationListener(AuthenticationListener listener)
设置全局身份验证侦听器,该侦听器将收到有关登录和注销等用户事件的通知。Map<String,User>
allUsers()
返回所有为User.State.LOGGED_IN
或User.State.LOGGED_OUT
的已知用户。User
currentUser()
返回当前已登录且仍然有效的用户。boolean
equals(Object o)
如果两个应用都引用相同的AppConfiguration.getAppId()
,则它们被视为相等,并将共享其底层状态。AppConfiguration
getConfiguration()
返回此应用的配置对象。EmailPasswordAuth
getEmailPassword()
返回一个包装器,用于与使用Credentials.Provider.EMAIL_PASSWORD
提供商创建或登录的用户相关的功能进行交互。Functions
getFunctions(User user)
返回用于调用 Realm 应用的 Realm 函数的函数管理器。Functions
getFunctions(User user, CodecRegistry codecRegistry)
返回一个函数管理器,用于使用自定义编解码器注册表调用 Realm 应用的 Realm 函数,以对参数和结果进行编码和解码。Sync
getSync()
返回管理正在进行的Realm Sync会话的Sync实例,这些会话在本地和与此应用关联的远程Realm 应用之间同步数据。int
hashCode()
User
login(Credentials credentials)
以使用与身份验证提供者关联的给定档案的用户身份登录。RealmAsyncTask
loginAsync(Credentials credentials, App.Callback<User> callback)
以使用与身份验证提供者关联的给定档案的用户身份登录。void
removeAuthenticationListener(AuthenticationListener listener)
删除提供的全局身份验证侦听器。User
removeUser(User user)
从此设备中删除用户档案。User
switchUser(User user)
切换当前用户。
-
-
-
字段详细信息
-
NETWORK_POOL_EXECUTOR
public static ThreadPoolExecutor NETWORK_POOL_EXECUTOR
针对 MongoDB Realm 执行网络请求时使用的线程池。此池仅出于测试目的而公开,在队列非空时替换它将导致未定义的行为。
-
-
构造函数详细信息
-
应用
公共应用(字符串appId)
-
应用
公共应用( AppConfiguration配置)
构造函数,用于根据给定的AppConfiguration创建应用程序。- 参数:
config
- 用于此应用实例的配置。- 另请参阅:
AppConfiguration.Builder
-
-
方法详细信息
-
currentUser
@Nullable public User currentUser()
返回当前已登录且仍然有效的用户。当用户注销或用户的刷新令牌过期或被撤销时,该用户将失效。
如果有两个或更多用户登录,则此方法将返回最后一个有效用户。
- 返回:
- 当前
User
已登录且仍然有效。null
如果没有用户登录或用户已过期)。
-
switchUser
公共用户switchUser(用户user)
切换当前用户。当前用户是
currentUser()
返回的用户。- 参数:
user
- 新的当前用户。- 抛出异常:
IllegalArgumentException
- 如果用户不是User.State.LOGGED_IN
。
-
removeUser
public User removeUser( User user) 抛出AppException
从此设备中删除用户档案。 如果用户当前已登录,他们将在此过程中注销。 这只是本地更改,不会影响服务器上的用户状态。- 参数:
user
- 删除- 返回:
- 已删除的用户。
- 抛出异常:
AppException
- 如果从用户界面线程调用,或者用户已登录但无法注销。
-
login
公共用户登录(凭证凭证)抛出AppException
以使用与身份验证提供者关联的给定档案的用户身份登录。登录的用户成为当前用户。 其他应用功能代表当前用户。
如果已经存在一个当前用户,则该用户仍处于登录状态,并且可以在
allUsers()
返回的列表中找到。还可以使用
switchUser(User)
在将哪个用户视为当前用户之间进行切换。- 参数:
credentials
- 代表登录类型的凭证。- 返回:
- 代表登录用户的
User
。 - 抛出异常:
AppException
- 如果用户无法登录。
-
loginAsync
public RealmAsyncTask loginAsync(Credentials credentials, App.Callback<User> callback)
以使用与身份验证提供者关联的给定档案的用户身份登录。登录的用户成为当前用户。 其他应用功能代表当前用户。
如果已经存在一个当前用户,则该用户仍处于登录状态,并且可以在
allUsers()
返回的列表中找到。还可以使用
switchUser(User)
在将哪个用户视为当前用户之间进行切换。- 参数:
credentials
- 代表登录类型的凭证。callback
- 登录完成或失败时的回调。 回调将始终发生在调用此方法的同一线程上。- 抛出异常:
IllegalStateException
- 如果未在 Looper 线程上调用。
-
getEmailPassword
public EmailPasswordAuth getEmailPassword()
返回一个包装器,用于与使用Credentials.Provider.EMAIL_PASSWORD
提供商创建或登录的用户相关的功能进行交互。- 返回:
- 用于与
Credentials.Provider.EMAIL_PASSWORD
身份提供商交互的包装器。
-
addAuthenticationListener
public void addAuthenticationListener(AuthenticationListener listener)
设置全局身份验证侦听器,该侦听器将收到有关登录和注销等用户事件的通知。对身份验证侦听器的回调将在用户界面线程上进行。
- 参数:
listener
— 要注册的侦听器。- 抛出异常:
IllegalArgumentException
- 如果listener
为null
。
-
removeAuthenticationListener
public void removeAuthenticationListener(AuthenticationListener listener)
删除提供的全局身份验证侦听器。- 参数:
listener
- 要删除的侦听器。
-
getSync
公共同步getSync()
返回管理正在进行的Realm Sync会话的Sync实例,这些会话在本地和与此应用关联的远程Realm 应用之间同步数据。- 返回:
- 与此App关联的Sync实例。
-
getFunctions
公共函数getFunctions(用户user)
返回用于调用 Realm 应用的 Realm 函数的函数管理器。这将使用应用程序的默认编解码器注册表对参数和结果进行编码和解码。
-
getFunctions
公共函数getFunctions( User user, CodecRegistry codecRegistry)
返回一个函数管理器,用于使用自定义编解码器注册表调用 Realm 应用的 Realm 函数,以对参数和结果进行编码和解码。- 另请参阅:
Functions
-
getConfiguration
public AppConfiguration getConfiguration()
返回此应用的配置对象。- 返回:
- 此应用程序的配置。
-
等于
公共布尔等于( 对象 o)
如果两个应用都引用相同的AppConfiguration.getAppId()
,则它们被视为相等,并将共享其底层状态。
-
-