Skip to main content
페어리 UI를 앱내에서 한번이라도 이용하는 경우, 해당 프로젝트의 법적동의 사항이 페어리를 통해 관리됩니다.이 가이드가 아니라, 페어리 UI 이용하여 시작하기 > STEP 2) 직접 동의받아 서비스 시작하기를 확인해주세요

사전 준비

Getting Started > Setup 을 먼저 완료하세요.

권한 요청하기

  • Moment SDK를 시작하기 위해서는 사용자에게 사용정보 접근 허용 권한을 요청해야 합니다. 아래 예시 코드를 통해 권한을 요청할 수 있습니다. (참고: 샘플앱내 예시 링크)
val appUsagePermissionLauncher =
  registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
      if (MomentSDK.isAppUsagePermissionGranted(requireContext()) {
	      // 권한 획득 성공
      } else {
	      // 권한 획득 실패
      }
  }
  
val intent = Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.data = Uri.fromParts("package", packageName, null)
appUsagePermissionLauncher.launch(intent)

시작하기

STEP 1) 서비스 시작

  • userId 설정 후 MomentSDK.start(config, callback)을 호출하면 인식 서비스를 시작할 수 있습니다. (스타터 코드 예시)
// NOTE: userId를 설정하지 않으면 launchUI 실패
momentSdk.setUserId("test-user-id", object : MomentSDK.ResultCallback {
		override fun onSuccess() {
				momentSdk.start(
						momentSdkConfig,
						object : MomentSDK.ResultCallback {
								override fun onSuccess() {}

								override fun onFailure(exception: MomentException) {}
            }
        )
    }
    
    override fun onFailure(exception: MomentException) {}
}

STEP 2) 서비스가 강제 종료되는 경우를 위해, 서비스 재시작 로직 추가

만약 사용자가 앱을 강제종료하게 되면 서비스는 어떻게 될까요? 앱과 함께 서비스도 같이 종료되게 됩니다. 이러한 경우, 사용자가 앱을 켰을 때 서비스 상태를 원래대로 복구할 수 있게, 앱 launch 시점에 아래와 같이 init를 호출해줘야 합니다. (1.3.0 version 보다 낮은 SDK에서는 restartIfNeeded를 호출해야 합니다.)
해당 call을 하였을 때 사용자 관점에서의 차이는 없고, 서비스를 계속적으로 동작하게 하기 위함입니다.
class MyApplication : Application() {
  override fun onCreate() {
      val moment = MomentSDK.getInstance(context)

      // NOTE: userId를 설정하지 않으면 init 실패
      moment.setUserId("user-id", object : MomentSDK.ResultCallback {
          override fun onSuccess() {
              moment.init(
                  config,
                  object : MomentSDK.RestartResultCallback {
                      override fun onSuccess(resultCode: MomentSDK.RestartResultCode) {
                          if (resultCode == MomentSDK.RestartResultCode.SERVICE_RESTARTED) {
                              // restart에 성공했습니다.
                          }
                      }

                      override fun onFailure(exception: MomentException) {
                          // restart에 실패했습니다.
                      }
                  }
              )
          }

          override fun onFailure(exception: MomentException) {}
      })
  }
}
  • restartIfNeeded(config, callback) (v.1.3.0 미만)
class MyApplication : Application() {
	override fun onCreate() {
		MomentSDK.getInstance(context).restartIfNeeded(
			config,
			object : MomentSDK.RestartResultCallback {
				override fun onSuccess(resultCode: MomentSDK.RestartResultCode) {
			    if (resultCode == MomentSDK.RestartResultCode.SERVICE_RESTARTED) {
				    // restart에 성공했습니다.
          }
        }

        override fun onFailure(exception: MomentException) {
				   // restart에 실패했습니다.
        }
    }
}