Сигналы ошибок | Документация для разработчиков
Сигналы ошибок
Обновлено: 6 февраля 2026 г
Предстоящее устаревание: начиная с 15 апреля 2026 года,
PendingIntentдля шаблонов аутентификации будет признан устаревшим. Если вы в настоящее время используете PendingIntent для инициирования установления соединения или проверки подлинности приложения, OTP Android SDK предпочтительным способом перехода является использованиеВ Android SDK OTP представлен упрощенный рабочий процесс для реализации шаблонов аутентификации в одно касание и без касаний. Ниже вы можете узнать, как его использовать.
В этом документе описываются сигналы ошибок, характерные только для Android, которые могут помочь в отладке шаблонов аутентификации с автозаполнением в одно касание и шаблонов аутентификации без касания.
Если ваше сообщение не пройдет проверку на соответствие требованиям, кнопка автозаполнения в одно касание будет заменена кнопкой копирования кода. Кроме того, могут существовать настройки устройства или клиента WhatsApp, которые блокируют уведомления о сообщениях. Для облегчения отладки наши приложения отображают некоторую информацию об ошибках через
com.whatsapp.OTP_ERROR . В таких ситуациях вы получите ключ ошибки и сообщение вместо одноразового пароля или кода подтверждения пользователя.Обратите внимание, что некоторые из этих сообщений об ошибках появятся только в том случае, если вы запускаете WhatsApp в эмуляторе Android.
неоднозначный_пункт_доставкиТолько эмулятор
Неясный адрес доставки
Для пакетов, указанных в этом шаблоне, имеется несколько активных запросов OTP, и мы не смогли определить, какому пакету следует доставить код.
шаблона,
supported_apps инициировали процедуру установления соединения (отправили com.whatsapp.otp.OTP_REQUESTED ) в течение последних 10 минут.несовместимая_версия_операционной системыНесовместимая версия Android
com.whatsapp.otp.OTP_REQUESTED намерение), но на устройстве установлена версия Android старше v19.неправильный_хеш_подписиТолько эмулятор
Неверный хеш подписи
com.whatsapp.otp.OTP_REQUESTED (намерение) и наше приложение получает сообщение с шаблоном аутентификации, использующее кнопку автозаполнения в одно касание, но имя пакета в сообщении не генерирует хэш подписи сообщения.отсутствует_рукопожатие_или_расстройствоОтсутствует рукопожатие / Порядок действий
otp_request_expiredЗапрос OTP истек
code_expiration_minutes Если с момента начала рукопожатия прошло какое-либо время (если таковое имеется), вместо этого отображается кнопка «Копировать код».whatsapp_message_notification_disabledТолько эмулятор
Уведомления о сообщениях отключены в настройках WhatsApp
com.whatsapp.otp.OTP_REQUESTED намерение), но пользователь отключил уведомления в приложении WhatsApp или WhatsApp Business (в настройках нашего приложения).whatsapp_notification_disabledТолько эмулятор
Уведомления WA отключены на уровне устройства
com.whatsapp.otp.OTP_REQUESTED намерение), но пользователь отключил уведомления для наших приложений (настройки на уровне устройства).Интеграция
Сигналы об ошибках передаются посредством широковещательного намерения, поэтому
BroadcastReceiverинтерфейс для прослушивания сигналов об ошибкахВ файле manifest.xml
<receiver android:name=".app.otp.OtpErrorReceiver" android:enabled="true" android:exported="true" > <intent-filter> <action android:name="com.whatsapp.otp.OTP_ERROR"/> </intent-filter> </receiver>
Класс приемника — с использованием SDK (предпочтительно)
Реализуйте
метод onReceive и используйте WhatsAppOtpIncomingIntentHandler для обработки отладочных сигналов.publicclassOtpErrorReceiverextendsBroadcastReceiver{@Overridepublicvoid onReceive(Context context,Intent intent){WhatsAppOtpIncomingIntentHandler whatsAppOtpIncomingIntentHandler =newWhatsAppOtpIncomingIntentHandler();
whatsAppOtpIncomingIntentHandler.processOtpDebugSignals(
intent,// ваша функция для обработки сигнала(debugSignal)-> handleSignal(debugSignal),// ваша функция для обработки любой ошибки(error, exception)-> handleError(error, exception));}}Класс приемника — без SDK
publicclassOtpErrorReceiverextendsBroadcastReceiver{publicstaticfinalString OTP_ERROR_KEY ="error";publicstaticfinalString OTP_ERROR_MESSAGE_KEY ="error_message";@Overridepublicvoid onReceive(Context context,Intent intent){String otpErrorKey = intent.getStringExtra(OTP_ERROR_KEY);String otpErrorMessage = intent.getStringExtra(OTP_ERROR_MESSAGE_KEY);// Обработка ошибок}}