Мы получили уведомление об отклонении приложения из-за перенаправления намерения и для учета тех, которые мы применили некоторые проверки в нашем коде, но все же приложение было отклонено сегодня. Не могли бы вы прочитать ниже подробную информацию о требованиях к приложению, а также изменения, внесенные для учета ошибок / предупреждений.
Краткая информация о приложении: наше приложение использует комбинацию TWA (PWA Wrapper) и собственного кода Android, при этом аутентификация в основном выполняется в собственном коде, а затем при успешном входе в систему пользователь будет перенаправлен в PWA с использованием активности TWA Launcher. А чтобы вернуться к машинному коду из TWA, мы используем фильтры Intent. Мы рассмотрели варианты, указанные в письме в разделе Перенаправление намерения (здесь), но ни один из трех трех точно не подходит для нашего случая, то есть от веб-URL-адреса TWA Launcher до собственной активности Android в том же приложении. Хотя мы добавили несколько дополнительных проверок, как показано во фрагменте ниже с веб-страницы в собственный код (который вызывается Depplink:
if (intent.`package` == null || !intent.`package`.equals(packageName)) {
finish()
}else {
//Business logic
// Open new activity from here
}
Подробная информация ниже получена с портала консоли Google Play.
Подробная информация о предварительном отчете
Перенаправление намерения
Errorbrightness_1Security
Ваше приложение содержит уязвимость перенаправления намерения. Подробную информацию см. в этой статье Справочного центра Google. • androidx.activity.ComponentActivity.startActivityForResult.
Также в одном месте мы использовали startActivityForResult, который сейчас устарел, и мы заменили его новым API (например, registerForActivityResult). См. Фрагмент кода ниже:
// фрагмент кода
Старый код:
val intent = Intent(this, TwaImplicationActivity::class.java)
startActivityForResult(intent, AppConstants.RequestCode.TWA_IMPLICATION)
Новые изменения:
twaActivityStartForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
if(result.resultCode == Activity.RESULT_OK){
if(viewModel.showEnrolment.get()!!){
navigateToEnrolment()
} else {
navigateToLogin()
}
}
}
val intent = Intent(this, TwaImplicationActivity::class.java)
twaActivityStartForResult?.launch(intent)
Во всяком случае, я пропустил. Сообщите, пожалуйста, правильное место, где я пропустил проверку безопасности в нашем приложении?