Перейти к содержанию

Кейс

Почему некоторые уведомления из вашего приложения не доходят ни до кого

Утренняя сводка, которая так и не пришла, и клиент, который вообще ничего не услышал. Две бреши в нашем собственном приложении, обе из-за сообщения, которому некуда было попасть, и что мы изменили.

Главное

  • Отправленное сообщение — не то же самое, что дошедшее; проверяйте, куда оно попало, а не только то, что оно ушло.
  • Apple и Google отклоняют уведомление больше 4 KB целиком, поэтому слишком большое сообщение никто тихо не обрежет за вас.
  • Каждому уведомлению нужен запасной путь для тех, кто не установил приложение и ни разу не писал.
  • Сбой, который повторяется в один день недели, указывает на то, что в этот день отличается.
  • Считайте размер уведомления в байтах, а не в буквах, если пишете на арабском или другом нелатинском письме.

Непроходящие уведомления из приложения — одна из самых незаметных проблем, потому что сообщение, которое никуда не попало, выглядит точно так же, как тихое утро. Никто не жалуется на сообщение, о котором он не знал. В один и тот же день мы нашли в своём приложении две такие бреши, и у обеих была одна форма: сообщение, которому некуда попасть.

Сообщение, которое исчезает, выглядит как тихий день

Уведомление, которое так и не пришло, не оставляет следа в том дне, для которого оно было предназначено. Для команды пропавшая утренняя сводка означает начало дня без обзора, на который кто-то рассчитывал. Для клиента — кое-что похуже: запрос ждёт его ответа, пока он думает, что ничего не происходит, и бизнес выглядит медлительным, хотя это не так. В обоих случаях система сделала то, о чём её просили. Она отправила.

Что нашли наши инженеры

Наше приложение каждое утро присылает команде короткую сводку на телефоны, и однажды утром она не пришла ни на один из них. Инженер посмотрел, чем сводка того дня отличалась. В ней был дополнительный недельный раздел, поэтому она была длиннее, чем в другие дни. Ответ службы уведомлений Apple на это сообщение сказал прямо: сообщение слишком большое.

Apple и Google принимают уведомление размером до 4 KB, считая в байтах, и всё, что больше, отклоняют целиком. Сообщение не обрезается, не сокращается, не доставляется частично: оно не доставляется. В остальные дни сводка была короче и помещалась, поэтому брешь появлялась только в один день недели.

Вторая брешь была тише. Клиенту, который никогда нам нигде не писал и не установил приложение, могли завести запрос, попросить подтверждение — и он не слышал ничего. Обновление появлялось в списке на веб-портале, который у него не было причин открывать. Если проследить запрос по правилам, которые решают, куда идёт сообщение, всё объясняется: по умолчанию сообщение идёт в тот канал, где клиент последний раз нам писал, а email заменяет push только для тех, у кого нет приложения. У клиента без приложения и без переписки нигде не было последнего канала, поэтому отправлять было некуда.

Почему это случается с такими бизнесами, как ваш

Одна причина в том, что уведомления отправляются целиком, какими бы длинными они ни оказались, а службы телефонов не спрашивают перед отказом. Push-уведомление длиннее лимита отклоняется целиком, и единственным следом может быть строка в ответе службы, которую никто не читает: уведомление не доставлено, ошибки никто не видит. Вторая причина в том, что правило выбора канала клиента обычно исходит из того, что есть последний канал, на который можно опереться, — это верно для всех, кто когда-либо писал, и неверно для нового клиента. А лимит размера push-уведомления считается в байтах, а не в буквах, поэтому арабский и другой нелатинский текст достигает его раньше, чем английский, и сообщение, которое на экране выглядит коротким, может вовсе не быть коротким.

Сбой, который повторяется в один день недели, стоит считать подсказкой, а не невезением. Что-то в этом дне отличается, и здесь это был дополнительный раздел.

Что мы изменили

Теперь каждое уведомление подгоняется под лимит до отправки, так что вопрос размера решается раньше, чем его увидит Apple или Google. Если сообщение слишком длинное, текст сокращается по слову и заканчивается многоточием; заголовок уступает, только если одного текста не хватает, чтобы освободить место. Размер считается в байтах так, как его считают обе службы, поэтому арабский и другой нелатинский текст измеряется правильно и никогда не обрезается посреди буквы. Экран блокировки всё равно показывает лишь несколько строк уведомления, а email и сообщение внутри приложения сохраняют каждое слово.

Для клиента, которому вообще нечего получать в виде уведомлений приложения, сообщение, предназначенное для чата, который так и не начали, теперь уходит по email. Так происходит, если у него нет этого чата, нет приложения на телефоне, он не отключил email для такого рода сообщений и ещё не получает это сообщение по email. Это закрывает случай, когда клиент так и не получил письмо с подтверждением, потому что его никто не адресовал ему.

Как обстоит дело сейчас

Оба изменения работают на нашей платформе, и они вошли в тот же день, когда нашли обе бреши. Более длинная недельная сводка снова доходит до телефонов: сокращённая на экране блокировки, полная в приложении и в email. Клиент, который ещё не писал нам и не установил приложение, теперь узнаёт по email, когда ему заводят запрос или его ждёт подтверждение. Это один путь, который существует там, где его не было, а не число, на которое мы можем указать.

Что вы можете проверить сами

  • Отправьте себе самое длинное уведомление, которое может создать ваше приложение, и посмотрите, придёт ли оно. Если короткое тестовое сообщение доходит, а длинное нет, смотреть нужно на размер.
  • Спросите того, кто занимается вашим приложением, что происходит с уведомлением, которое выходит за лимит: его сокращают или отбрасывают, никому не сказав?
  • Разберитесь, как клиент, который никогда не устанавливал приложение и ни разу не писал, узнает об обновлении. Если ответ — список на портале, значит, пути нет.
  • Выясните, остаётся ли где-нибудь запись о неудачном сообщении и читает ли её кто-нибудь.
  • Отметьте, повторяется ли сбой в определённый день или после определённого вида сообщений. Закономерность обычно называет причину.

Что делать дальше

Перечислите все способы, которыми ваше приложение может достучаться до человека, а затем перечислите, что происходит, когда обычного способа нет. Второй список часто короче, и именно в нём сообщения тихо пропадают. Позаботиться о том, чтобы каждому сообщению было куда попасть, — та работа, которую наши инженеры делают для клиентов и в своих собственных продуктах.

Частые вопросы

Почему уведомление из моего приложения не пришло, хотя оно было отправлено?

«Отправлено» означает лишь то, что сообщение покинуло вашу систему. Служба Apple для iPhone и служба Google для Android всё ещё могут его отклонить, и этот отказ часто не виден там, куда смотрит владелец бизнеса. Частые причины — сообщение больше лимита, которое отклоняется целиком, и получатель, у которого нет настроенного пути, чтобы его получить.

Какой длины может быть push-уведомление, прежде чем Apple или Google его отклонит?

Обе службы принимают уведомление размером до 4 KB, считая в байтах, и всё, что больше, отклоняют целиком, а не обрезают. 4 KB — меньше, чем кажется, когда вместе считаются заголовок, текст и любые дополнительные данные. Если вы пишете на арабском или другом нелатинском письме, помните, что те же слова занимают больше байтов, чем в английском.

Как достучаться до клиента, который не установил моё приложение?

Обычный путь — email, и его нужно решить для этого человека, а не предполагать по тому, когда он последний раз с нами связывался. Ещё нужно учитывать того, кто отключил email для такого рода сообщений или уже получает их так. Иначе вы отправляете в список на портале, который клиенту незачем открывать.

Появляется ли неудачное уведомление где-нибудь как ошибка?

Иногда в ответе службы уведомлений указана причина, как было в нашем случае, но на телефоне ничего не появляется, и никто не жалуется на сообщение, о котором не знал. Поэтому стоит проверять самое длинное сообщение, которое может создать ваше приложение, а не только короткие образцы. Тихий день и потерянное сообщение снаружи выглядят одинаково.

Арабский текст в уведомлении быстрее достигает лимита размера?

Да. Лимит считается в байтах, а не в буквах, и нелатинские символы обычно занимают больше байтов, чем латинские. Поэтому сообщение, которое свободно помещается на английском, на арабском может выйти за лимит. Всё, что проверяет размер, должно считать байты так же, как службы телефонов, иначе оно пропустит сообщения, которые потом отклонят.

От Tech Concierge

Хотите, чтобы этим занимались за вас?

Ваш собственный инженер делает и ведёт сайт, приложение, CRM и ИИ-ассистента, который отвечает вашим клиентам.

Первые 7 дней — бесплатно.

Читайте также

КейсМобильные приложения

Почему команда перестаёт доверять списку клиентов, ждущих ответа

Список ожидания в нашем командном приложении заполнялся красными строками для диалогов, которым ничего не требовалось. Мы добавили способ закрыть чат, не написав в него, и сделали так, чтобы ожидание начиналось заново со следующего сообщения клиента.

4 мин чтения

КейсМобильные приложения

Почему в приложении вашей команды приходится искать клиента, который ждёт

Наше собственное приложение для команды открывалось на графиках, а не на клиентах, которые ждут ответа. Мы перестроили первый экран вокруг того, кто ждёт и как долго; в переработанной версии до чата с клиентом одно-два нажатия вместо четырёх-пяти действий.

5 мин чтения

КейсМобильные приложения

Отказ App Store из-за согласия на ИИ: что пришлось изменить

Наше собственное приложение для iPhone отклонили из-за двух правил App Store о персональных данных. Вопрос о согласии был слишком общим: в нём не назывался поставщик ИИ, он охватывал одну функцию из трёх и появлялся позже, чем смотрел проверяющий.

5 мин чтения

Мы считаем посещения блога своей аналитикой, без Google, и никому не передаём, что вы читаете. Можно запомнить этот браузер с помощью cookie? Подробнее — в политике конфиденциальности.