App Services에 연결 - Flutter SDK
App
클라이언트는 Atlas App Services 백엔드에 대한 인터페이스입니다. 사용자 인증 및 Device Sync와 같은 App Services 기능에 대한 액세스를 제공합니다.
시작하기 전에
앱 클라이언트에 액세스
버전 1.7.0에서 변경됨: 기본 격리에 App
을(를) 생성해야 합니다.
클라이언트 애플리케이션 전체에서 App Services 기능에 액세스하려면 App
인스턴스를 만듭니다. App
인스턴스는 메인 격리에서 한 번만 생성하는 것이 좋으며, 앱이 시작되는 즉시 생성하는 것이 좋습니다.
App Services UI 에서 App Services App의 ID 를 가져옵니다. 방법을 학습 보려면 앱 ID 찾기를 참조하세요.
AppConfiguration 생성 앱의 앱 ID 를 인수로 사용하여 객체 를 생성합니다.
앱 만들기
AppConfiguration
방금 생성한 로 변경합니다. Flutter v1 에서.7.0 이후에는 기본 격리에서 이 작업을 수행해야 하며, 그렇지 않으면 SDK에 오류가 발생합니다.
App
를 생성한 후에는 App.getById
를 사용하여 배경 격리에서 구성된 App
인스턴스 에 액세스 할 수 있습니다. 자세한 내용은 이 페이지의 ID 로 앱 다운로드 섹션을 참조하세요.
final appConfig = AppConfiguration(appId); final app = App(appConfig);
여러 앱 클라이언트 인스턴스를 만들어 여러 앱에 연결할 수 있습니다. 동일한 앱 ID 를 주식 하는 모든 앱 클라이언트 인스턴스는 동일한 기본 연결을 사용합니다.
중요
앱 초기화 후 앱 구성 변경하기
버전 1.8.0에서 변경됨: baseUrl
이(가) AppConfiguration
에 캐시되지 않았습니다.
앱 클라이언트 를 초기화하면 구성이 내부적으로 캐시됩니다. 동일한 프로세스 내에서 구성이 변경된 앱을 닫았다가 다시 열려고해도 아무런 효과가 없습니다. 클라이언트 는 캐시된 구성을 계속 사용합니다.
Flutter SDK 버전 이상에서는 1.8.0 baseUrl 이 더 이상 앱 구성에 캐시되지 않습니다. 즉, baseUrl
을 변경할 수 있으며 앱 클라이언트 는 업데이트된 구성을 사용합니다. 이전 SDK 버전에서는 캐시된 앱 구성의 baseUrl
변경 사항이 적용되지 않았습니다.
고급 구성
버전 1.6.0부터 지원이 중단되었습니다: App.localAppName
및 App.localAppVersion
은(는) 더 이상 사용되지 않습니다.
App
클라이언트 를 보다 세분화하여 제어하기 위해 AppConfiguration
에 선택적 인수를 추가할 수 있습니다. 연결에 대한 사용자 지정 시간 제한이나 로컬 메타데이터 암호화 를 위한 키와 같은 항목을 추가할 수 있습니다. 사용 가능한 구성 옵션에 학습 보려면 AppConfiguration 참조 문서.
final appConfig = AppConfiguration(appId, defaultRequestTimeout: const Duration(seconds: 120) // ... see reference docs for all available configuration options );
참고
Android 7 이상을 사용하여 연결
Realm Flutter SDK에 포함된 기본 HTTP 클라이언트는 Android 7 이전 버전에서 실행되는 앱에서는 작동하지 않습니다. 이 문제를 해결하려면 사용자 지정 HTTP 클라이언트를 AppConfiguration
에 추가해야 합니다. 자세한 내용은 Android 7 이상을 사용하여 App Services에 연결을 참조하세요.
ID로 앱 다운로드
버전 1.7.0에 새로 추가되었습니다.
기본 격리에서 인스턴스를 생성한 후에는 앱 ID를 App
App.getById() 메서드 에 전달하여 백그라운드 격리에서 구성된 인스턴스에 액세스할 수 있습니다. 메서드. 그런 다음 필요에 따라 이를 사용하여 App
및 사용자와 함께 작업할 수 있습니다.
// Create an App instance once on main isolate, // ideally as soon as the app starts final appConfig = AppConfiguration(appId); final app = App(appConfig); final receivePort = ReceivePort(); // Later, access the App instance on background isolate await Isolate.spawn((List<Object> args) async { final sendPort = args[0] as SendPort; final appId = args[1] as String; try { final backgroundApp = App.getById(appId); // ... Access App users final user = backgroundApp?.currentUser!; // Use the App and user as needed. sendPort.send('Background task completed'); } catch (e) { sendPort.send('Error: $e'); } }, [receivePort.sendPort, appId]);
특정 MongoDB 서버에 연결
기본적으로 Atlas Device SDK는 https://services.cloud.mongodb.com
의 글로벌 baseUrl
를 사용하여 Atlas에 연결합니다. 경우에 따라 다른 서버에 연결해야 할 수도 있습니다.
App Services App 이 로컬 배포서버 를 사용하며 해당 리전 의 로컬
baseUrl
에 직접 연결하려고 합니다.
자세한 내용은 로컬 배포 App Services 문서를 참조하세요.
AppConfiguration 에서를 지정할 수 있습니다.baseUrl
// Specify a baseUrl to connect to a server other than the default final appConfig = AppConfiguration(appId, baseUrl: Uri.parse('https://example.com')); var app = App(appConfig);
런타임 중 다른 MongoDB 서버에 연결
버전 1.8.0에 추가 되었습니다.
버전 2.2.0에서 변경됨: updateBaseUrl
은 null
값을 허용합니다.
경우에 따라 앱 이 실행 동안 baseUrl
을(를) 변경해야 할 수도 있습니다.
런타임 중에 를 변경하려면 실험용 baseUrl
앱.updateBaseUrl 을 호출합니다. 메서드. null
를 전달하여 baseUrl
을 기본값 으로 재설정할 수 있습니다.
// Specify a custom baseUrl to connect to. // In this case, a custom server instance running on the device. final appConfig = AppConfiguration(customServerAppId, baseUrl: Uri.parse('http://localhost:80')); var app = App(appConfig); // ... log in a user and use the app ... // Later, change the baseUrl to the default: // https://services.cloud.mongodb.com await app.updateBaseUrl(null);
이 API는 실험적이며 향후 릴리스에서 변경될 수 있습니다.
사용자로 로그인하고 동기화된 데이터베이스 를 연 후 baseUrl
를 변경하려면 앱 에서 클라이언트 재설정 을 수행해야 합니다. 자세한 내용은 클라이언트 재설정을 참조하세요.
코드에서 다음을 수행합니다.
app.updateBaseUrl
메서드를 사용하여baseUrl
업데이트사용자를 다시 로그인 하여 새
baseUrl
새 서버 에서 데이터를 가져오는 동기화된 데이터베이스 열기
사용자가 새 서버 를 인증하고 연결하려면 서버 와 클라이언트 가 모두 온라인 여야 합니다. 서버 가 온라인 가 아니거나 클라이언트 가 네트워크에 연결되어 있지 않으면 사용자는 데이터베이스 를 인증하고 열 수 없습니다.