Сигналы ошибок | Документация для разработчиков
Сигналы ошибок
Обновлено: 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 intent) but the device is running a version of Android older than v19.неправильный_хеш_подписиТолько эмулятор
Неверный хеш подписи
com.whatsapp.otp.OTP_REQUESTED intent) and our app receives an authentication template message that uses a one-tap autofill button, but the package name in the message does not produce the message’s signature hash.отсутствует_рукопожатие_или_расстройствоОтсутствует рукопожатие / Порядок действий
otp_request_expiredЗапрос OTP истек
code_expiration_minutes property, if present) have passed since you initiated the handshake. In this situation, we display the copy code button instead.whatsapp_message_notification_disabledТолько эмулятор
Уведомления о сообщениях отключены в настройках WhatsApp
com.whatsapp.otp.OTP_REQUESTED intent) but the user has disabled notifications in the WhatsApp app or WhatsApp Business app (within our app settings).whatsapp_notification_disabledТолько эмулятор
Уведомления WA отключены на уровне устройства
com.whatsapp.otp.OTP_REQUESTED intent) but the user has disabled app notifications for our apps (device level settings).Интеграция
Сигналы об ошибках передаются посредством широковещательного намерения, поэтому для прослушивания сигналов об ошибках интерфейс
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 для обработки отладочных сигналов.public class OtpErrorReceiver extends BroadcastReceiver { @Override public void onReceive ( Context context , Intent intent ) { WhatsAppOtpIncomingIntentHandler whatsAppOtpIncomingIntentHandler = new WhatsAppOtpIncomingIntentHandler (); whatsAppOtpIncomingIntentHandler . processOtpDebugSignals ( intent , // ваша функция для обработки сигнала ( debugSignal ) -> handleSignal ( debugSignal ), // ваша функция для обработки любой ошибки ( error , exception ) -> handleError ( error , exception )); } }Класс приемника — без SDK
public class OtpErrorReceiver extends BroadcastReceiver { public static final String OTP_ERROR_KEY = "error" ; public static final String OTP_ERROR_MESSAGE_KEY = "error_message" ; @Override public void onReceive ( Context context , Intent intent ) { String otpErrorKey = intent . getStringExtra ( OTP_ERROR_KEY ); String otpErrorMessage = intent . getStringExtra ( OTP_ERROR_MESSAGE_KEY ); // Обработка ошибок } }