GCM как единый транспорт для instant messenger'а на android, ios, стоит ли?
Добрый вечер всем тем, кто это сейчас читает
Есть задача создать мессенджер для ios / android.
Есть классический old school - вариант: самому держать коннект к своему XMPP-серверу когда приложение в foreground и полагаться на GCM/APNS когда приложение в background. На сервере же проверять - если пользователь подключен - отправить xmpp, если отключен - push.
Но как недавно выяснилось GCM поддерживает в том числе и iOS, и манит своей бесплатностью и безлимитностью.
У гугла написано, что GCM для доставки сообщений в iOS использует APNS, но не написано - все ли время или только когда приложение background(а в остальное время держит свой собственный коннект)? Также не понятно как обстоят дела с контролем доставки, ведь у APNS это невозможно?
Надеюсь APNS используется только чтобы "разбудить" собственные механизмы доставки GCM.
Также на GCM многие жаловались по поводу времени доставки, но сейчас таких вопросов все меньше, что обнадеживает.
Вобщем, если у кого-то есть инфа как работает GCM на iOS или реальный опыт прошу высказать свое мнение.
Стоит ли использовать его как единый и единственный транспорт для всех сообщений?
Ни GCM, ни APNS не гарантирует сиюминутной доставки сообщения, так что делать их основой чата/мессенджера не целесообразно. Т.е. в худшем случае между собеседниками сообщения будут приходить с задержкой на которую стоит накладывать задержки связанные с проблемами в сети.
Большинство мессенджеров устанавливают сокетное соединение во время общения пользователей. Как только необходимость в нем пропадает, то оно рвется(принудительно или само), и уведомления о новых сообщениях приходят через APNS/GCM.
ps xmpp не лучший выбор. Даже где-то статья на хабре была от разработчиков которые писали мессенджер.
Всё-таки google позиционирует gcm как полноценную систему доставки обмена сообщениями, а не только как push notifications. Как выяснилось, на ios когда приложение находится в foreground gcm создаёт отдельное соединение для обмена сообщениями, на android полагаю сделано не хуже
У нас как раз приложение-чат и уведомления о новых сообщениях приходят пушами. Чтобы обойти эту проблему пришлось колхозить сервис, который с интервалом в 5 минут шлет: