TeamViewer ソフトウェア開発キット(SDK)を使えば、Assist AR の機能をフルに活用し、自社のモバイルアプリにAR遠隔支援機能を埋め込んで、顧客に最高のAR遠隔支援体験を提供することができます。
SDKを使用することで、お客様の端末に安全かつGDPRに準拠した接続を行うことができます。
この記事は、TeamViewer Assist AR 、すべてのユーザーに適用されます。
TeamViewer のアカウントをお持ちでない方は、以下の手順でアカウントを作成してください。
3)「アプリを作成」ボタンをクリックします。
4) Mobile SDK Tokenを有効にし、名前・(オプションで)短い説明を追加します。
5)Androidを有効にします。
6)「Create(作成)」をクリックします。
作成したアプリを開くと、トークンが表示されます。
このトークンをクリップボードにコピーして、安全な場所に貼り付けてください。
🚨重要:このトークンを誰にも教えないでください。
SDKは、Assist AR Professionalライセンスをお持ちのお客様を対象に、TeamViewer サポートチームより配布しています。
TeamViewer モバイルSDKを統合する
1) Android用TeamViewer モバイルSDKには以下のファイルが含まれます:
2) アプリディレクトリの下に libs フォルダを作成し、そこに *.aar ファイルをコピーします。
📌注意: 本 SDK は次のアーキテクチャをサポートしています:armeabi-v7a, arm64-v8a, x86, x86_64
3) ViewBinding を有効にし、次の依存関係をアプリの build.gradle に追加します。
android { buildFeatures { viewBinding true } } dependencies { implementation files('libs/TeamViewerSdk.aar') implementation files('libs/AssistARSessionUI.aar') //(Add only if you plan to use AssistAR(AssistAR) Session // Add dependencies of AssistARSessionUI.aar(Add only if you plan to use AssistAR Session): runtimeOnly "androidx.camera:camera-camera2:1.0.2" runtimeOnly "androidx.camera:camera-lifecycle:1.0.2" runtimeOnly "androidx.constraintlayout:constraintlayout:2.0.4" runtimeOnly "androidx.fragment:fragment-ktx:1.3.6" runtimeOnly "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" runtimeOnly "androidx.work:work-runtime-ktx:2.5.0" runtimeOnly "com.google.android.material:material:1.4.0" runtimeOnly "de.javagl:obj:0.3.0" runtimeOnly "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.31" runtimeOnly "com.google.android.gms:play-services-mlkit-text-recognition:17.0.0" runtimeOnly "com.squareup.picasso:picasso:2.8" }
最新の依存関係リストを入手するには、TeamViewer から受け取る SDK パッケージの一部である AssistARSessionUI-docs/index.html を確認してください。
4)TeamViewerSdkオブジェクトを構成します。
teamViewerSdk = TeamViewerSdk.Builder(context) .withToken(SDK_TOKEN) .withAuthenticationCallback(sdkAuthenticationCallback) .withSessionCallback(sdkSessionCallback) .withErrorCallback(sdkErrorCallback) .withOnlineStateCallback(onlineStateCallback) .withMicInitiallyMuted(true) .build() }
上記の例では、SDK_TOKENを使用してteamViewerSdkオブジェクトの作成を示しています(「APIキーセクションの生成」のステップ7で作成した SDK_TOKENを 使用します)。
これらの構成方法の詳細については、ScreenSharingSdk-docs/com/teamviewer/sdk/screensharing/TeamViewerSdk.Builder.html を参照してください。 ドキュメントは、TeamViewer から受け取る SDK パッケージの一部となります。
5) セッションコードに接続します。
共有SDKは、セッションコードへの接続を確立するための方法を提供します。このセッションコードには、2つのタイプがあります。
6) TeamViewer クライアント (必要なセッションに基づいて Remote Support または AssistAR のタイプを選択) または TeamViewer REST API 経由でセッション コードを作成します。
teamViewerSdk.connectToSessionCode(sessionCode)
セッション コードがオンラインになると、TeamViewer クライアント 側から接続を開始することができます。
セッションコードの状態はOnlineStateCallback
(ScreenSharingSdk-docs/com/teamviewer/sdk/screensharing/TeamViewerSdk.Builder.html#withOnlineStateCallback
(com.teamviewer.sdk.screensharing.OnlineStateCallback) )
を使用して確認することができます。
OnlineStateCallbackは、SDKのオンライン/オフライン/接続状態の通知を受け取るのに役立ちます。
private val onlineStateCallback = OnlineStateCallback { onlineState -> val isSdkOnline = OnlineStateCallback.OnlineState.OFFLINE val isSdkOffline = OnlineStateCallback.OnlineState.ONLINE val isSessionCodeConnected = OnlineStateCallback.OnlineState.CONNECTED }
ErrorCallbackは、セッションコードが無効、期限切れ、または終了した場合に、SDKによって送信されるエラー コードを処理するのに役立ちます。
(ScreenSharingSdk-docs/com/teamviewer/sdk/screensharing/TeamViewerSdk.Builder.html#withErrorCallback
(com.teamviewer.sdk.screensharing.ErrorCallback))
private val sdkErrorCallback = ErrorCallback { errorCode -> val invalid = errorCode == ErrorCallback.ErrorCode.SESSION_CODE_INVALID val expired = errorCode == ErrorCallback.ErrorCode.SESSION_CODE_EXPIRED val closed = errorCode == ErrorCallback.ErrorCode.SESSION_CODE_CLOSED }
SDK は、着信した接続イベントに反応するためのコールバック・メソッドを提供します。
AuthenticationCallbackは、着信接続を処理するのに役立ちます。
AuthenticationDataパラメーターには、サポーターの名前と、着信接続を許可または拒否するためのコールバック関数が含まれています。
private val sdkAuthenticationCallback = object : AuthenticationCallback { override fun onAuthentication(data: AuthenticationData?) { //set true to accept call, set false to reject call data?.callback?.onAuthenticationResult(true) Logging.info(TAG, "TeamViewer connected to ${data?.partnerName}") } override fun onAuthenticationCanceled() { // Is called when TeamViewer Authentication was cancelled from TeamViewer client/expert side } }
着信接続が受け入れられると、対応する TeamViewer接続が確立されます。
TeamViewer 側で接続が開始されると、SessionCallback を介してこの接続の試行について SDK に通知されます。
I) AssistARSession (AssistARSession)。
AssistARセッションの場合は、必ず以下の設定を確認してください。
private val sdkSessionCallback = object : SessionCallback { override fun onSessionStarted(session: TeamViewerSession?) { if (session is AssistARSession) { AssistARSessionUI.currentSession = session val intent = AssistARSessionUI.createIntentForAssistARSessionActivity(context, "StorageFolderName") intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK context.startActivity(intent) } if (session is ScreenSharingSession) { //Request microphone permission if you intend to use VOIP with ScreenShare Session } } override fun onSessionEnded() { Logging.info(TAG, "TeamViewer Session ended") AssistARSessionUI.currentSession = null } }
ここでcreateIntentForAssistARSessionActivityメソッドにstorageFolderNameを渡すのは必須です。これは、共有ドキュメントがダウンロード フォルダーに保存されるフォルダーの名前であるためです。詳細は AssistARSessionUI-docs/-pilot-session-u-i/com.teamviewer.sdk.assistarsessionui/-assist-a-r-session-u-i/create-intent-for-assist-a-r-session-activity.html をご確認ください。
II) ScreenSharingSession:
VOIP を使用する場合、ScreenSharingSession は OnSessionStarted() でマイクの許可を要求する必要があります。
Logging:
Builder メソッドwithLogger(Logger callback)は、TeamViewer Sdk からのすべてのログ出力が委譲される Logger コールバックを設定します。
このコールバックおよび Sdk ビルダーで利用可能なその他の追加のコールバックの詳細を確認するには、ScreenSharingSdk-docs/com/teamviewer/sdk/screensharing/TeamViewerSdk.Builder.html を参照してください。