Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 1297 сообщений
Cообщения с меткой

уведомления - Самое интересное в блогах

Следующие 30  »
Фитиль_Дом2 (Автор -Alex_Prime)

Не приходят уведомления на почту? 5 сек!!!

Среда, 04 Мая 2016 г. 22:51 (ссылка)

После майских праздников наш горячо любимый, но обильно залитый красным вином персонал ЛиРу допустил очередной глюк - многим пользователям перестали приходить почтовые уведомления на e-mail о постах и комментах, на которые они подписаны.
Исправляется легко - переподпиской почты.

Зайдите в Старые настройки => Почтовые уведомления. Сверху у вас должна быть надпись красным шрифтом что-то типа "Ваш e-mail не подтверждён." Нажмите "Подтвердить". На почту придёт письмо со ссылкой, перейдёте по ней и всё ОК. 5 сек!!!

У меня после прохождения этой "процедуры" настройки выглядят так:


Безымянный (800x92, 35Kb)

Метки:   Комментарии (7)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Redis — что быстрее, UNIX-сокет или TCP? Что стабильнее?

Суббота, 26 Марта 2016 г. 20:45 (ссылка)

image



Мы в PushAll обрабатываем несколько тысяч запросов в секунду для получения статистики доставки и открытия уведомлений и для передачи контента оповещений. Обычная БД вроде MySQL не справляется с таким потоком запросов и не может так быстро отвечать.



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

Также для работы мы используем форки PHP и нам было интересно, а как поведет себя Redis, если мы будем делать несколько тысяч соединений в одновременно в нескольких потоках. Мы решили поделиться с сообществом нашими тестами.



Железо



Мы тестируем на одном из VPS PushAll:



CPU: Intel Xeon E5-1650v2 3.5 Ghz — 2 ядра.

RAM: 3 Gb DDR3 1866Mhz



Условия тестирования



Мы написали многопоточного бота PHP, который:




  • Делает форки в цикле — 100 форков без каких либо задержек

  • Каждый форк в своем цикле, 1000 раз создает соединение с Redis и производит инкремент

  • Родительский процесс ждет 3 секунды и берет значение, если не ждать — Redis вернет не полное значение инкеремента





Также мы протестировали вариант с 1000 форками и как будут отличаться результаты при использовании UNIX-сокета и TCP.



100 форков, 1000 соединений в каждом, TCP



# time php benchmark.php 
End:100000

real 0m6.021s
user 0m0.023s
sys 0m0.067s




100 форков, 1000 соединений в каждом, UNIX-сокет



# time php benchmark.php 
End:100000

real 0m8.666s
user 0m0.063s
sys 0m0.073s




TCP-сокет в среднем на 30% медленнее. (напомню, тут испытывается больше не производительность работы самого Redis, а то, как он обрабатывает соединения)



1000 форков, 1000 соединений в каждом, TCP+UNIX



Повышаем ставки



TCP:

# time php benchmark.php 
End:903505

real 1m7.659s
user 0m0.073s
sys 0m0.753s


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



Что самое интересное, при проведение того же самого теста, но для unix-сокета, мы получаем ошибки:

Fatal error: Uncaught RedisException: Redis server went away in ....


То есть, unix-сокет не смотря на то, что он быстрее, может обрабатывать несколько меньшее количество запросов. Либо как вариант — возможно, что из за того что он такой быстрый не справляется уже сам сервер Redis'а.



Мы проводили подобные тесты и для php-fpm — там также TCP-сокет давал меньше ошибок со связкой с NGINX чем UNIX-сокет. Разница в скорости была там незначительна.



PS. Хабр, а почему хаб MongoDB и MySQL есть, а Redis нет?






Какой метод вы используете, или использовали бы?




























Проголосовало 4 человека. Воздержалось 5 человек.




Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.





Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/280218/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Настройка шаблонов e-mail уведомлений в 3CX Phone System

Воскресенье, 21 Марта 2016 г. 01:17 (ссылка)

Введение



Наверняка вы знаете о том, что 3CX уведомляет пользователей и администраторов о различных событиях в системе с помощью широкого набора e-mail сообщений. В 14 версии системы появился отдельный раздел для настройки этих уведомлений. Теперь администратор системы может кастомизировать каждое сообщение в соответствии с требованиями организации в разделе Параметры – E-mail.



На вкладке E-mail и уведомления перечислены все события, которые могут быть интересны администратору 3CX. Тут же можно указать один или несколько e-mail адресов (через запятую), на которые будут отсылаться уведомления.



image



Сами сообщения предустановлены в системе на английском языке. Русскоязычным пользователям 3CX Phone System имеет смысл перевести хотя бы основные сообщения на русский язык. Однако возникает вопрос с определением переменных, используемых в этих уведомлениях. В этой статье мы поясним значения всех системных переменных, используемых в e-mail уведомлениях.



image



Переменные в шаблонах e-mail уведомлений





Anti Hacking IP blacklisted – IP адрес блокируется модулем проактивной защиты (антихакинга)



%%IPADDRESS%% IP адрес, который был заблокирован



%%TIME%% Время в секундах, на которое он был заблокирован



Call to blocked country – Вызов в запрещенную страну



%%CALLTO%% Вызов на номер



%%CALLFROM%% Вызов с номера



%%CALLPREFIX%% Префикс номера



Conference email – Пригласительное письмо в конференцию



%%CONFERENCENAME%% Название конференции



%%EXTERNALNUMBER%% Внешний номер конференции



%%CONFERENCEID%% PIN для ID конференции



%%CONFERENCEDESC%% Описание конференции



%%INTERNALNUMBER%% Внутренний номер конференции



%%STARTTIME%% Время начала конференции



DNS Failure – Ошибка работы DNS сервера / Сетевой сбой



%%PRODUCTION%% Имя сервера регистрации



%%DESTINATION%% Направление вызова



Emergency call – Набран номер экстренной службы



%%EMERGENCYNUMBER%% Номер экстренной службы



%%CALLFROM%% Вызов с номера



Ext. Agent Welcome – Пригласительное письмо внешнему оператору



%%MOBILENUMBER%% Мобильный номер внешнего оператора



Extension Login / Logout – Вход / выход в консоль управления 3CX



%%EXTNUMBER%% Добавочный номер пользователя



%%EXTFIRSTNAME%% Имя пользователя



%%EXTLASTNAME%% Фамилия пользователя



%%USERIP%% IP адрес пользователя



%%LICENSECONTACT%% Система зарегистрирована на имя



%%LICENSEEMAIL%% Система зарегистрирована на e-mail



Extension Welcome – Пригласительное письмо новому пользователю



%%EXTNUMBER%% Добавочный номер пользователя



%%EXTFIRSTNAME%% Имя пользователя



%%EXTLASTNAME%% Фамилия пользователя



%%EXTPIN%% PIN добавочного номера



%%VMNUMBER%% Номер голосовой почты



%%WEBRTCLINK%% WebRTC ссылка пользователя



%%IFWEBRTCENABLED_START%% Начало текстового блока, который вставляется, если для пользователя включена WebRTC ссылка



%%IFWEBRTCENABLED_END%% Конец текстового блока, который вставляется, если для пользователя включена WebRTC ссылка



Fax – Новое факс-сообщение



%%STARTTIME%% Дата и время начала приема факса



%%STOPTIME%% Дата и время завершения приема факса



%%IMGFILE%% Имя файла изображения факса (.tif)



%%PDFFILE%% Имя файла конвертированного факса (полный путь к pdf файлу)



%%PAGES%% Количество страниц в факсе



%%FAX_ID%% ID факса



%%CALLER_ID%% Номер звонящего



%%CALLEE_ID%% Номер получателя



IP blacklisted — IP адрес заблокирован



%%IPADDRESS%% IP адрес, который был заблокирован



%%TIME%% Время в секундах, на которое он был заблокирован



%%EXPIREDATE%% Заблокирован до даты



%%REASONBLACKLISTED%% Причина блокировки IP адреса



License limit reached – Достигнуто максимальное количество вызовов для данной лицензии



%%ACTIVECALLS%% Количество одновременных вызовов



New missed call – Новый пропущенный вызов



%%EXTNUMBER%% Добавочный номер пользователя, пропустившего вызов



%%EXTFIRSTNAME%% Имя пользователя



%%EXTLASTNAME%% Фамилия пользователя



%%PARTYCALLERID%% Caller ID звонящего



%%PARTYNAME%% Имя звонящего



%%START_TIME%% Время начала вызова



%%END_TIME%% Время завершения вызова



%%RING_TIME%% Время дозвона



image



Queue: call is lost – Очередь: потерянный вызов



%%QUEUENUMBER%% Номер очереди



%%QUEUENAME%% Имя очереди



%%CALLER%% Caller ID звонящего



Queue: callback is made – Очередь: сделан обратный вызов



%%TOCALLER%% Номер, на который запрошен обратный вызов



%%QUEUENUMBER%% Номер очереди



%%QUEUENAME%% Имя очереди



%%CALLER%% Caller ID звонящего



Queue: Failed callback – Очередь: неуспешный обратный вызов



%%TOCALLER%% Номер, на который запрошен обратный вызов



%%QUEUENUMBER%% Номер очереди



%%QUEUENAME%% Имя очереди



%%CALLER%% Caller ID звонящего



Queue: SLA is reached – Очередь: Превышено время предоставления сервиса (нарушение SLA)



%%CALLER%% Caller ID, для которого время ожидания было превышено



%%QUEUENUMBER%% Номер очереди



%%QUEUENAME%% Имя очереди



%%TOTALNUMBERCALLERS%% Общее количество абонентов в очереди в момент нарушения



%%CALLSINSERVICE%% Количество вызовов, которые обслуживались операторами в момент нарушения



%%CALLSWAITING%% Количество вызовов, которые ожидали в момент нарушения



%%WAITINGTIME%% Фактическое время ожидания абонента (которое оказалось больше SLA)



%%INTERNALCALLID%% Внутренний ID вызова



Recordings folder quota reached – Достигнута квота на размер папки с записями разговоров



%%CURRENTSIZE%% Текущий размер папки (в байтах/kb/Mb/Gb)



%%QUOTASIZE%% Размер квоты (в байтах/kb/Mb/Gb)



%%CURRENTSIZE_PERCENT%% Текущее использование квоты в процентах



%%QUOTA_PERCENT%% Использование квоты в процентах, после которое высылается e-mail уведомление



%%FOLDER%% Путь к папке записей разговоров



Registration status – Изменился статус регистрации добавочного номера



%%EXTENSIONNUMBER%% Добавочный номер



%%STATUS%% Новый статус добавочного номера



%%SIPREGISTRATION%% Параметры SIP регистрации



Reports template – Шаблон отчета о вызовах



%%REPORT_NAME%% Название отчета (например, Журнал вызовов, Статистика добавочных номеров и т.п.)



%%FREQUENCY%% Частота генерации отчета (ежедневно, еженедельно)



%%REPORT_URL%% Ссылка на файл отчета



%%REPORT_LIMIT_REACHED_START%% Начало текстового блока, который вставляется, если достигнут предельный размер отчета



%%REPORT_LIMIT_REACHED_END%% Конец текстового блока, который вставляется, если достигнут предельный размер отчета



Restore Complete – Восстановление системы завершено



%%RESTORE_STATUS%% Статус восстановления (успешно, неуспешно)



%%IF_ERROR_SHOW%% Начало текстового блока, который вставляется, если возникла ошибка



%%IF_ERROR_END%% Конец текстового блока, который вставляется, если возникла ошибка



%%SHORT_ERROR_DESCRIPTION%% Краткое описание возникшей проблемы



%%DATETIME_START%% Дата и время начала восстановления



%%DATETIME_FINISH%% Дата и время завершения восстановления



%%BACKUP_FILE%% Файл резервной копии, который восстанавливался



%%MANAGEMENTCONSOLE_LINK%% Ссылка на вход в интерфейс управления 3CX



STUN Resolution fails – Ошибка STUN сервера



%%STUNSERVER%% STUN сервер



%%PORT%% Номер порта сервера



%%REASON%% Причина сбоя



Trunk Error – Транк / Оператор ответил на запрос кодом ошибки



%%CALLTO%% Вызов на номер



%%CALLFROM%% Вызов с номера



%%REPLY%% Ошибка в ответе



Trunk failover – Аварийное переключение транка



%%DEVICE%% Устройство, через которое должен был пройти вызов



%%CALL%% Номер, на который делался вызов



Trunk status – Изменился статус VoIP транка



%%TRUNKNUMBER%% Номер транка



%%STATUS%% Новый статус транка



image



VoiceMail – Уведомление голосовой почты



%%CALLER%% Caller ID звонящего



%%CALLERNAME%% Имя звонящего



%%EXTNUMBER%% Добавочный номер пользователя, который получил голосовую почту



%%EXTFIRSTNAME%% Имя пользователя



%%EXTLASTNAME%% Фамилия пользователя



%%DURATION%% Длительность сообщения в формате чч: мм: сс



%%FILENAME%% Имя аудиофайла в папке голосового ящика пользователя



%%DATETIME%% Получено в (дата и время в коротком системном формате)



%%DATE%% Получено в (дата в коротком системном формате)



%%DATETIME:[...]%% Получено в (дата и время в пользовательском формате). Подробное описание возможных форматов содержится в документации к .NET.



image



Voicemail folder quota reached — Достигнута квота на размер папки с записями голосовой почты



%%CURRENTSIZE%% Текущий размер папки (в байтах/kb/Mb/Gb)



%%QUOTASIZE%% Размер квоты (в байтах/kb/Mb/Gb)



%%CURRENTSIZE_PERCENT%% Текущее использование квоты в процентах



%%QUOTA_PERCENT%% Использование квоты в процентах, после которого высылается e-mail уведомление



%%FOLDER%% Путь к папке файлов голосовой почты



Заключение



Мы постарались собрать все известные системные переменные, встречающиеся в e-mail шаблонах 3CX. Надеемся, что представленная информация поможет вам не только создать уведомления, понятные пользователям, но и использовать их в различных автоматизированных процессах. Например, информация из e-mail о пропущенном вызове может создавать задачу-напоминание для пользователя в CRM системе и т.п.



Дополнительная информация







Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/279721/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Оплатим рекламу вашего канала push-уведомлений на сумму до 10 тысяч рублей

Вторник, 15 Марта 2016 г. 20:13 (ссылка)

image



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

То есть вы можете создать канал push-уведомлений и дополнительно раскрутить его и свой собственный проект.



Многие не понимают как работают уведомления. Лучший способ показать работу «на деле». То есть суть в том, что среди ваших пользователей обязательно найдутся те, кто захочет сделать себе тоже самое. Это куда лучше чем рекламировать лендинг из кучи непонятных слов и заставлять человека во все это вникнуть. Пусть увидит своими глазами и потрогает сам на деле.



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



Также расскажу, как мы справляемся с нагрузками.







Поддержка стартапов



Многим каналам сложно раскрутиться, есть много мелких проектов и стартапов. Мы можем поделиться своими средствами с другими, раскручивая канал в PushAll. При этом вы получаете аудиторию и на канал и к себе в проект/сайт. Вся аудитория подписанная на ваш канал будет получать уведомления от вас.



Наиболее интересно предложение будет стартапам. Мы даем больший приоритет тем проектам, которые проводят глубокую интеграцию уведомлений (индивидуальные уведомления пользователям сервиса о каких-либо событиях)



Также мы недавно сделали систему категорий. Для категории «Веб-сервисы» количество необходимых подписчиков снижено до 2х. То есть вы можете сделать интеграцию уведомлений и сразу же попасть в каталог в специальный раздел.



Условия участия




  • Скорее всего вы не сможете потратить на рекламу все 10000 рублей. Они будут распределены среди тех, кто предложит лучшие значения конверсии. Но если ваше решение будет лучше других — вполне возможно вы получите большую часть. Также возможно участие несколько месяцев подряд, если есть эффект.

  • Мы не даём вам прямой доступ к управлению рекламной площадкой. То есть вы укажите что рекламировать и как, мы с вами дополнительно проработаем лучший вариант.

  • Все данные о конверсиях будут опубликованы для общего доступа, скорее всего в виде статьи.





Требования к каналу




  • Канал должен быть рабочим. То есть он должен содержать уведомления, иметь какую то механику работы. Наиболее высокий приоритет имеют каналы с глубокой интеграцией уведомлений и/или платным тарифом.

  • Информация о вашем канале должна находиться на вашем основном ресурсе, в виде виджета, статьи, поста в соц сети и т.д. Ваша аудитория должна уже воспользоваться уведомлениями.

  • Ваш канал должен иметь некоторое число подписчиков, если вы не можете набрать сами даже 10-20 подписчиков, скорее всего реклама вашего канала будет малоэффективна.





Ожидаемый эффект



Нам интересно итоговое преобразование 10 000 рублей, хотя бы в 1000 пользователей. Это вполне реальные цифры, кейс с LostFilm привлек нам приблизительно 600 человек за 1500 рублей. Даже если цифры ниже — предложите ваше решение.



Также имеет значение качество аудитории. Если ваш канал технический и привлечет много специалистов — то конверсия в 300-500 человек тоже вполне неплохая.



Как подать заявку?



Например в посте в ВК- vk.com/pushall?w=wall-113609213_136/all также можно написать лично мне там же. На почту — company@pushall.ru

Также можно написать мне на хабре в ЛС.



Учтите, что мы можем найти подходящее решение в любой момент и если оно будет оптимально, то скорее всего будем продолжать рекламные компании частично с теми же проектами несколько месяцев подряд. Мы будем распределять в среднем 10 тысяч рублей каждый месяц на наиболее интересные и эффективные каналы.



Как мы справляемся с нагрузками



Чтобы не обижать хабр пустой статьёй опишу немного наших последних оптимизаций и наблюдений.



Мы имеем достаточно большое количество запросов на сервер в секунду из за чего mysql не справляется и число PHP-FPM процессов растет, когда 1000 запросов держатся 0.5-1 секунду из за нагрузки. Поэтому мы начали использовать mysqli_async + fastcgi_finish_request();



То есть, когда клиент присылает нам данные о статистике, или открывает ссылку — мы отдаем ему ok или редирект.

Дальше мы отпускаем nginx:

fastcgi_finish_request();


После чего записываем статистику через UPDATE —
$mysqli->query($query, MYSQLI_ASYNC);


На этом скрипт заканчивается. Как итог — PHP скрипт не ждет 0.5-1 секунду обработки mysql и не держит процесс PHP-FPM, а обрабатывается за 20 мс и освобождает процесс.

Также мы кэшируем ссылки для редиректов через redis. Со временем мы будем как можно больше данных переносить на redis для достижения лучшей отзывчивости.



Мы сделали бенчмарк отправки, выглядит он примерно так:

Устройств: 2008

Пользователей всего/отфильтровано: 1839/1196

Статус (устройства/пользователи):

Ожидают - 1542/927

Приняты - 400/429

Открыты - 4/3 (4)

Удалены - 80/79

Телеграм - 141



Подробный лог:

Начало: 15.03.2016 20:03:20.587522



GCM start: 20:03:20.948594

GCM end: 20:03:23.883841(2.9352469444275)

Число GCM:1662 (566 пушей в секунду)



Telegram start: 20:03:25.774675

Telegram end: 20:03:37.546961(11.772286176682)

Число telegram:141 (12 пушей в секунду)





Мы используем keep-alive при работе с GCM и Telegram API, однако телеграму это помогает не сильно лучше. К сожалению достичь больших скоростей в отправке через telegram не выйдет — мы общались с поддержкой, они сказали что отправлять безопасно можно только в один поток. Ждем batch-режим.

В GCM результаты будут видны ближе к десяти тысячам уведомлений. Так как на первую отправку тратится время на SSL-handshake — остальные отправки проходят значительно быстрее. Скорее всего с возрастанием числа оповещений мы будем делать пул воркеров, которые будут держать соединения для отправки.



Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/279359/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Необычное свойство Push-уведомлений — время жизни

Вторник, 01 Марта 2016 г. 23:51 (ссылка)





События проходят и теряют свою актуальность. Письмо, которое вы отправили человеку, сообщающее о новой акции не имеет смысла после конца акции. Как поступить? Пуш-уведомления умеют «умирать», когда в них больше нет необходимости.



TTL — (Time To Live) время жизни. Это важный термин в сети Интернет. Чаще всего он применяется к пакетам данных и означает количество «хопов», которые пакет будет «жить»



В рамках push-уведомлений TTL задает время жизни уведомления в секундах. Более того, если задать его равным 0 (в PushAll -1), то либо уведомление придет немеделенно, либо никогда. По сути, этот параметр задает сколько секунд уведомление будет ждать клиента, пока он присоединиться к пуш-серверу.





Что такое PushAll?



Нам часто в последнее время говорят: «Сначала обьясни, что за сервис такой, а потом уже статью пиши.»



PushAll это платформа мгновенных оповещений. Если смотреть со стороны обычного пользователя — это «твиттер», где оповещения прилетают сразу на экран вашего устройства, будь то смартфон, планшет или компьютер. Мы во многом пошли дальше и охватили еще телеграм и email. То есть PushAll это такая штука, которая позволяет пользователю контролировать подписки на уведомления от нескольких сотен сайтов одновременно распределяя сообщения на свои устройства.



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



Если брать идеологическую сторону вопроса: PushAll следует идее того, что пользователям не нужны приложения — им нужен контент. То есть в идеальном мире основателя PushAll, пользователь покупает новый смартфон, ставит одно единственное приложение и ему приходят необходимые ему оповещения. Все что нужно пользователю — доступно через браузер. Унифицированное приложение создает «мост» для приёма и работы с оповещениями.



Например в текущей реализации, я (лично автор статьи) вообще практически перестал запускать приложения. Более того — весь контент приходит мне в виде уведомлений. Я просыпаюсь и с самого утра мне сыпятся тематические статьи по моим тегам с кучи ресурсов, при этом все отфильтровано — я получаю лишь выжимку из 2-3 статей суммарно. а не все десятки утренних статей со всех ресурсов. Если я занят. я могу просто стирать не сильно важные уведомления, а когда есть свободное время — открываю их через историю. Это действительно чем то похоже на твиттер — только идея не забить все информационное пространство мусором, а наоборот — отфильтровать с множества ресурсов необходимую информацию.

Перейдем к самой статье — TTL, чем он полезен и как его можно использовать.



Преимущества работы c TTL в Push-уведомлениях



Наши пользователи часто жаловались, что им приходит много уведомлений, если они давно не заходили в сеть. При этом эти уведомления могут быть «просрочены» на несколько дней, а сами уведомления могут исходить например от канала стриммера. Используя TTL, мы можем для уведомлений о стримах поставить время жизни на 2-3 часа, то есть примерно 10000 секунд. Тогда те, кто зашли в сеть (включили компьютер, открыли браузер, или присоединились к wi-fi) после этого срока не получат это уведомление.

Данный приём действительно экономит и время и средства. Доставляются только те уведомления, которые до сих пор актуальны. Это могут быть и выше описанные уведомления о стримах, и уведомления о акциях. Вы даже можете ставить TTL обычным новостным постам, дело в том, что новости могут терять актуальность со временем, либо скорее всего через 2-3 дня я их уже где либо слышал. Также есть история уведомлений, которая позволит увидеть все было в хронологическом порядке.



Что если пользователь пропустит что либо важное?







Пользователь всегда сможет увидеть уведомление в истории, а также, например дополнение для Google Chrome имеет раздел «пропущенные», если вы нигде не видели уведомление (ни на одном устройстве) тогда оно будет в этом разделе. Этот же раздел, позже, будет в приложении под Android и в веб-интерфейсе истории.



Как использовать TTL (время жизни) для моих уведомлений?







Вы можете задать TTL по-умолчанию в разделе настроек вашего канала, либо при ручной рассылке задать определенный TTL для отправляемого уведомления. Через API вы можете передать параметр ttl. Осторожнее с использованием TTL = -1, да, по сути это значит что оно будет доставлено либо сейчас, либо никогда, но если клиенты в данный момент потеряли соединение — для них уведомление не дойдет. Хотя, скорее всего данный вариант удобен для проведения онлайн конкурсов.



Где работает TTL?



Он полностью работает для платформы Android и Chrome дополнения. В течении недели он будет добавлен в SocketPush и WebPush. Также если у вас на Email стоит большая задержка (например сутки) то для уведомлений также будет учитываться TTL, то есть на почту вы тоже не будете получать «просроченные» уведомления. К сожалению, с телеграмом сделать ничего не получится — PushAll просто передает в него сообщение и все, с этого момента оно считается доставленным.






Использовали бы вы TTL для своих уведомлений?




























Проголосовало 2 человека. Воздержался 1 человек.




Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.





Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/278323/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
ermolenko_ludmila

Если к вам не приходят уведомления на новые посты

Суббота, 20 Февраля 2016 г. 06:32 (ссылка)

Это цитата сообщения меня_зовут_Любаша_К Оригинальное сообщение

Если к вам не приходят уведомления на новые посты

Счетчик посещений Counter.CO.KZ - бесплатный счетчик на любой вкус!


Здравствуйте...

В последнее время ко мне стали приходить сообщения, что уведомления на новые посты перестали поступать к тем или иным пользователям. Вот одно из таких сообщений.




урок провела
Любаша К

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Chrome дополнение PushAll возвращает функционал центра оповещений и дополняет его

Пятница, 15 Января 2016 г. 14:49 (ссылка)


Многие наверное видели область уведомлений в Chrome? Мы ранее писали, что Chrome её убрал.





При этом все сервисы использующие push-уведомления получили ряд проблем.


  • Если вы используете Web Push, то у вас есть возможность закрепить оповещение на экране. И пользователь может либо закрыть оповещение, либо нажать на него. То есть если он занят, то он скорее всего закроет, даже если бы он хотел прочесть материал

  • Если вы используете дополнение для Chrome, тогда Rich Notification исчезает через несколько секунд в небытие.





Мы сделали раздел пропущенных оповещений, в котором собираются те оповещения, которые исчезли, и те которые не были доставлены (например если у вас были заблокированы порты)







Ссылка на обновленное расширение



Читать дальше →

http://habrahabr.ru/post/275181/

Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Push-уведомления в Firefox 44 и выше

Понедельник, 21 Декабря 2015 г. 05:46 (ссылка)


image

Теперь в личном кабинете добавилось еще одно название браузера.



Релиз Firefox 44 намечен на 26 января, но мы уже подготовились и реализовали его поддержку, т.к. он теперь находится в beta-ветке. Мы опишем, как выглядят оповещения в Firefox и чем они отличаются от оповещений в других браузерах.



Кстати, выглядит приходящее оповещение в Linux вот так.



image



Замечу, что с предыдущей версии изменился внешний вид оповещения, теперь заголовок выше картинки. Странное решение. Выглядит как то не особо красиво. Но ничего не поделаешь.



Читать дальше →

http://habrahabr.ru/post/273567/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

[Из песочницы] Опыт отправки Apple Push Notification чере SNS сервис от Amazon и немного полезного кода

Понедельник, 02 Ноября 2015 г. 12:38 (ссылка)

Теплым летним вечером, в процессе разработки очередного преложения для iOS, у меня совпало два фактора — возникла необходимость реализации Apple Push Notification (APN) и желание попробовать что-то совсем новое для меня. Идти проторенной дорогой через один из множества сервисов, предлагающих отправку APN не хотелось.



Для изобретения велосипеда был вабран Amazon Simple Notification Service (Amazon SNS). Amazon SNS — это сервис, который позволяет вам отправлять сообщения-нотификации, посредством разнообразных механизмов (APN, GCM, e-mail, SMS и т.д.).



О том, как это работает и более подробную информацию можно прочитать в документации Amazon. Я расскажу совсем немного, чтобы определиться с дальнейшей терменологией. У SNS есть два типа клиентов — публикаторы (publishers) и подписчики (subscribers). Публикаторы с подписчиками асинхрнно обмениваются сообщениями (messages), которые доставляются подписчикам, посредствам разнообразных механизмов. Для отправки груповых сообщений подписчики могут быть сгруппированы по темам (topics). Тогда все подписчики, подписанные на тему, получат сообщение в эту тему отправленное.



Картинка из документации Amazon:

image



Поскольку тема данной статьи — работа с сервисом SNS из iOS, подробно на бекенде останавливаться не будем. Скажу несколько предложений.

В рамках изобретения велосипеда бекенд был написан с использованием следующих технологий:




  • Java 1.8;

  • Spring Boot 1.2.4;

  • Maven 3.3;

  • AWS SDK for Java 1.10.1.



Я являюсь програмистом на Objective C/Swift, поэтому все это добро, включая Java, я в этом проекте использовал можно сказать впервые. Проект PushSnsSender выложил на GitHub. Во-первых, может кому-нибудь пригодится; а во-вторых, был бы очень рад push-реквестам.



Данный код поднимает веб-сервис, который на ваш POST-запрос вида:




{"topic": "arn:aws:sns:YOUR-TOPIC", "message": "Hooray!", "badge": 0, "sound": "bingbong.aiff", "isDebug": false }




Отправит APN “Hooray!” на SNS-тему “YOUR-TOPIC”.



Как бы то ни было, не ради бекенда я затевал эту статью. Все дело в том, что механизм подписки на топик из iOS приложения несправедливо обойден вниманием в документации Amazon, а именно на нем я хочу остановиться. Возможно кому-то это съэкономит драгоценные часы времени.



Перед тем как приступить к программированию, в консоли AWS нужно выполнить следующие действия:




  • активация сервиса AWS SNS;

  • активация сервиса AWS Cognito;

  • создание Platform Application в сервисе SNS и привязка ключей Apple для работы с APN;

  • создание новой темы для сервиса SNS;

  • создание Identity Pool и привязанной к нему роли для сервиса Cognito.



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



Окно создания Platform Application:

image



Окно создания новой темы:

image



Окно создания нового Identity Pool:

image



Немного задержимся на сервисе Cognito. Что это и зачем он нужен?



Как вы понимаете, с вашим уютным AWS не должено быть разрешено работать кому попало. За строгую авторизацию в AWS отвечает сервис Identity and Access Management, который каждому пользователю выдает ключи авторизации. Ключи авторизации, состоящие из Access Key Id и Secret Access Key — очень интимная штука, попавшая в неправильные руки может причинить вашему аккаунту AWS и вашему кошельку много-много бед. Поэтому никогда и не прикаких обстоятельствах не садитись в машину к незнакомым дядям не отдавайте ключи AWS.



Вместе с этим ваше iOS приложение на телефонах пользователей должно как-то авторизовываться в AWS, чтобы подписаться на тему. Тут на помощь нам приходит сервис AWS Cognito — одной из функций которого является аутентификация пользователей и назначение им определенной роли. Работать с сервисом достаточно просто. После создания нового Identity Pool, сервис сам сгенерит вам код, который надо использовать в вашем iOS приложении.



Окно нового Identity Pool и сгенерированного кода:

image



Вводные операции закончены и наконец можно перейти к любимой части — написанию кода.

Для работы с сервисами Amazon из нашего iOS приложения нам потребуется AWS SDK for iOS, а точнее три компонента оттуда: AWSCore; AWSSNS и AWSCognito. Для установки воспользуемся любимым менеджером пакетов, например для CocoaPods это будет выглядить так:


pod 'AWSCore', '~> 2.2'
pod 'AWSSNS', '~> 2.2'
pod 'AWSCognito', '~> 2.2'




Настало время самого интересного — ответа на вопрос: “Как из нашего iOS приложения подписаться на тему SNS?” Документация Amazon предложит нам решение в виде регистрации отдельного устройство и отправки сообщения на него, что для массовой рассылки абсолютно не подходит. Поэтому после авторизации с помощью кода, сгенеренного сервисом Cognito, мы просто вызовим API сервиса SNS и подпишемся на тему вручную.

Код вызова приведен ниже:



- (void)subscribeToPushTopicWithDeviceToken:(NSData *)deviceToken 
{

AWSSNS *sns = [AWSSNS defaultSNS];

AWSSNSCreatePlatformEndpointInput *endpointRequest = [AWSSNSCreatePlatformEndpointInput new];

//get some device's IDs
NSString *userDeviceName = [[UIDevice currentDevice] name];
NSString *userDevicePlatform = [[UIDevice currentDevice] model];

//get SNS settings
self.myPlatformApplicationArn = @"arn:aws:sns:us-east-1:XXXXXXXXXXXXX:app/APNS/XXXXXXXXXXXXX";
self.myTopicArn = @"arn:aws:sns:us-east-1:XXXXXXXXXXXXX:XXXXXXXXXXXXX";

endpointRequest.platformApplicationArn = self.myPlatformApplicationArn;
endpointRequest.token = [self deviceTokenAsString:deviceToken];
endpointRequest.customUserData = [NSString stringWithFormat:@"%@ - %@", userDevicePlatform, userDeviceName];

[[[sns createPlatformEndpoint:endpointRequest] continueWithSuccessBlock:^id(AWSTask *task) {

AWSSNSCreateEndpointResponse *response = task.result;

AWSSNSSubscribeInput *subscribeRequest = [AWSSNSSubscribeInput new];

subscribeRequest.endpoint = response.endpointArn;
subscribeRequest.protocols = @"application";
subscribeRequest.topicArn = self.myTopicArn;

return [sns subscribe:subscribeRequest];

}] continueWithBlock:^id(AWSTask *task) {

if (task.cancelled) {
NSLog(@"AWS SNS Task cancelled!");
}

else if (task.error) {
NSLog(@"%s file: %s line: %d - AWS SNS Error occurred: [%@]", __FUNCTION__, __FILE__, __LINE__, task.error);
}

else {
NSLog(@"AWS SNS Task Success.");
}

return nil;

}];

}


Вот и все. После успешного запуска приложения в консоли AWS вы увидите одно авторизованное устройство в Identity Pool сервиса Cognito и ваше устройство в качестве подписчика на тему:



Экран с отоброжением устройства, подписанного на тему:

image



Обратите внимание на различие ключей Apple для работы с APN в среде разработки и продуктивной среде.



Файлы Objective C:



BGMAwsSnsProvider.h

BGMAwsSnsProvider.m



Спасибо за внимание. Надеюсь, данная статья съэкономила вам хоть сколько-нибудь времени и подтолкнула обратить внимание на такой замечательный сервис как Amazon SNS.

Original source: habrahabr.ru (comments, light).

http://habrahabr.ru/post/269963/

Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Уведомления на разных платформах, какие они бывают? Бонус на смарт-часах Moto 360

Пятница, 23 Октября 2015 г. 22:50 (ссылка)





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



Мы расскажем о том, как выглядят различные типы уведомлений на Chrome, Android, Safari, Firefox, iOS. Какие мы используем, какие можно использовать и не много о том, как оно работает.







Методы отправки оповещений




  • Long-pull, fast-pool, периодические обновления и т.д. Вас просто держат за дурака. Это не пуши, это пул (т.е. наоборот) через определенные периоды времени и приход уведомления, когда что то меняется. Такое работает на многих сайтах, к примеру Веб-версия вконтакте вообще держит только long-pull — длинные запросы

  • Web-socket. Это уже пуш технология, которая позволяет держать соединение и обмениваться по нему в обе стороны данными. При этом уже сервер может вам прислать что то новенькое — а вы на это реагируете. Веб-сокеты на данный момент могут работать либо в активной вкладке браузера, либо в дополнении.

  • Push API. Это новая технология, которая работает либо в паре с Service Worker (фоновый процесс сайта), либо как сафари — лишь прикидывается Push API, а на деле свой велосипед. При использовании этого протокола, используется встроенный в браузер push-сервис, к примеру GCM в Chrome (Google Cloud Messaging) он позволяет странице создать воркера и получить REGID для отправки push-уведомлений. Этот метод работает и на сайте и через дополнение.



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



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



Ниже мы опишем, какие бывают уведомления на разных платформах.



Какие они бывают в Chrome на компьютере



Немного визуальных отличий.







1 сделано через стандартный Notification API, второй сделан через обертку для Service Worker. Эти оповещения не исчезают — но для них не применяется сглаживание изображения на многих платформах. (вы можете заметить по качеству картинок)



3й сделан через Rich Notification. Эти оповещения приходят через расширения, в них может быть дополнительная информация, кнопки, изображение под уведомлением. Возможностей больше — но они автоматически скрываются.







Также при использовании расширения (Rich Notification) — оно может растягивать изображение на весь блок — веб-пуши такое не делают.



А еще в дополнении можно сделать так:







Это особенно важно, т.к. скоро не будет «колокольчика» в хроме.



Оповещения на Android







1. Оповещение пришло через Telegram



Преимущества




  • не нужно ставить лишних приложений

  • не зависит от браузера

  • встроенная история оповещений и управление устройством (пауза/старт)



Недостатки




  • Нет иконки канала/уведомления

  • Нужно больше действий, чтобы открыть ссылку оповещения

  • Если приходит несколько уведомлений, то придется искать из в диалоге

  • Диалог бота мешает общаться с людьми

  • Нет выделенных заголовка и текста

  • Невозможно отследить точное прочтение или стирание



Вот как выглядит на смарт-часах (Moto 360)







2. Оповещения через Push API (тоже самое что и на компьютерном Chrome)



Преимущества




  • Не нужно ставить лишних приложений

  • Есть иконка, пусть и плохого качества

  • Можно отслеживать статистику приёма, стирания, открытия.

  • При клике открывается сразу ссылка, в отличии от телеграма



Недостатки




  • Размытая иконка на смартчасах (некрасиво)

  • Уведомления приходит от имени хрома и есть иконка хрома вместо иконки системы

  • Лишние кнопки вроде настройки сайта и т.д. хотя это единственное где можно отписаться от такого вида оповещений, на компьютерной версии этого нет

  • Когда Service-worker спит, а потом начинает «скачивать пуши» это приводит к появлению сообщения «Сайт обновлен в фоновом режиме» Также это может произойти если есть система отслеживания

  • Нельзя кэшировать изображения — повышается расход трафика

  • Необходимо использовать хром как основной браузер

  • Нельзя настроить вибрацию или звук для оповещений, оно вибрирует всегда!

  • Пользователи не знают как их выключить, сначала все хорошо, но когда приходит по 10-20 оповещений каждый день… начинается паника. Просто почитайте комментарии в самом конце этой статьи.









3. Оповещения через полноценное приложение



Преимущества




  • Четкая картинка

  • Самая быстрая доставка из представленных выше методов, уведомления приходят даже при самом слабом сигнале!

  • Можно настроить звук, вибрацию, мигание светодиода

  • Полноценная поддержка смартчасов — четкие изображение на них

  • Возможность работы со сторонними браузерами

  • Поддержка кэширования изображений, что сильно экономит трафик

  • Больше возможностей последующей кастомизации



Недостатки




  • Необходимо ставить и обновлять приложение, хотя оно и весит 1 мегабайт.











Оповещения на iOS



В общем то тот же телеграм, мало чем отличается от решения на андроид.







И нативное приложение (бета-версия, новая версия в разработке):







Из недостатков оповещений на iOS




  • Нельзя добавить иконку

  • Нельзя отследить приём оповещения

  • Можно присылать только Alert'ы т.е. по сути просто строчку текста и адрес для перехода

  • После клика можно отследить клик, т.к. уже идет обработка через код приложения

  • Сильно ограничен размер оповещения

  • Пользователь не может видеть больше 10 пришедших оповещений, то есть нужно делать костыль внутри приложения для реализации показа истории.

  • Конечно же, на iOS больше никак нельзя принимать оповещения. Push API iOS не поддерживает.





Оповещения в Safari



Мы пока что протестировали только стандартный Notification API на веб-сокетах.



Выглядит это так:







Однако нативные уведомления через APNS, похоже будут иметь еще иконку сайта, а так мало чем будут отличаться.



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



Оповещения Firefox









В Firefox нет своего Push API сервиса (пока что) поэтому мы будем использовать свой, основанный на сокетах. Однако в FF есть море проблем связанных с оповещениями



Преимущества




  • Уведомления выглядят чисто, нет никаких «Сайт обновлен», нет адреса сайта

  • Уже хорошо, что они существуют :)



Недостатки




  • Уведомления исчезают через 4 секунды в небытие! И это нельзя изменить

  • Преимущество есть и недостаток — неясно откуда приходит уведомление, непонятно как его отключить.





Самое главное в оповещениях — не надоедайте. Перед подпиской объясните как отписаться. не нужно кидать в лицо запрос на включение оповещений. А то будет как тут спустя пару недель — люди не могли отписаться, просто не знали как.



SocketPush



Работает неплохо судя по тестам. Почему то проголосовало негативно больше людей, чем вообще тестировало (не надо так!)



Но мы будем переделывать немного алгоритм, потом удалим все добавленные SocketPush устройства. Включение будет работать уже тогда, когда активно устройство (в состоянии включено) то есть можно будет в том же сафари или FF открывать вкладку и получать пуши через 2-3 дня.



И да, оказывается EDGE даже не поддерживается Notification API.



Original source: habrahabr.ru (comments, light).

http://habrahabr.ru/post/269439/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<уведомления - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda