You should be authenticated and a valid token should be present in order to perform installation.
// Initialization
// Install application via uri string and listen to updates using callback
val file = File("${context.filesDir}", "fortnite.apk")
val uriString = file.toUri().toString()
IgniteServiceSdk.instance().install(uriString, buildSingleInstallationCallback())
// ...
private fun buildSingleInstallationCallback() = object : IResponseCallback<InstallationResponse, Error, InstallationProgress> {
override fun onScheduled(taskInfo: TaskInfo) {
Log.i(TAG, "Install application onScheduled(): taskId=${taskInfo.taskId}")
// Store task id when scheduled to track it later if needed
currentInstallTask = taskInfo.taskId
}
override fun onStart(taskInfo: TaskInfo) {
Log.i(TAG, "Install application onStart(): taskId=${taskInfo.taskId}")
// E.g. show indefinite progress as application installation task started
showProgress()
}
override fun onProgress(progress: InstallationProgress) = with(progress) {
Log.d(TAG, "Install application onProgress(): taskId=${taskId}, appId=${applicationId}, progress=${value}, action=$action")
// E.g. show progress as application started donwload and installation
showProgress()
// 0 stands for download progress
// 1 stands for install progress
when (action) {
0 -> updateDownloadProgress(value)
1 -> updateInstallProgress(value)
}
}
override fun onSuccess(result: InstallationResponse) {
Log.d(TAG, "Install application onSuccess(): taskId=${result.taskId}, appId=${result.applicationId}, package=${result.packageName}")
// E.g. hide progress as application is installed succesfully
hideProgress()
}
override fun onError(error: Error) {
Log.e(TAG, "Install application onError(): ${error.message}")
hideProgress()
}
private fun showProgress() = progressBar?.visibility = View.VISIBLE
private fun hideProgress() = progressBar?.visibility = View.GONE
}
// ...