Recentemente, aprendi sobre a capacidade dos aplicativos do iPhone de receber notificações quase instantâneas para notificações de aplicativos .
Isso é fornecido na forma de notificações por push, um protocolo sob medida que mantém uma conexão de dados sempre ativa no iPhone e envia pacotes binários para o aplicativo, que exibe alertas incrivelmente rapidamente, entre 0,5 e 5 segundos entre o servidor e o aplicativo. tempo de resposta. Isso é enviado como dados - em vez de SMS - em pacotes muito pequenos, cobrados como parte do plano de dados e não como mensagens recebidas.
Gostaria de saber se, usando o Android, existe um recurso semelhante ou se é possível implementar algo parecido com isso usando as APIs do Android. Para esclarecer, defino similar como:
- Não é uma mensagem SMS, mas alguma solução orientada a dados
- O mais real possível
- É escalável, ou seja, como parte do servidor de um aplicativo móvel, eu poderia notificar milhares de instâncias de aplicativos em segundos
Aprecio que o aplicativo possa ser baseado em pull, estilo de solicitação / resposta HTTP, mas, idealmente, não quero fazer pesquisas tão pesadas apenas para verificar a notificação; além do que é como pingar drenando o plano de dados.
fonte
Respostas:
O Firebase Cloud Messaging FCM é a nova versão do GCM. Ele herda a infraestrutura principal do GCM para entregar mensagens de forma confiável no Android, iOS e Chrome. No entanto, eles continuarão a oferecer suporte ao GCM, porque muitos desenvolvedores estão usando os SDKs do GCM hoje para lidar com notificações, e a atualização do aplicativo cliente leva tempo.
Em 26 de junho de 2012, o Google Cloud Messaging é a maneira preferida de enviar mensagens para aplicativos em execução em dispositivos.
Anteriormente (e agora descontinuado), o serviço era chamado de Cloud to Device Messaging .
fonte
XMPP é uma boa solução. Eu o usei para um aplicativo Android ativado por push, em tempo real. O XMPP é poderoso, altamente extensível e fácil de integrar e usar.
Existem muitos servidores XMPP gratuitos (embora, por cortesia, você não deva abusar deles) e existem servidores de código aberto que você pode executar em uma de suas próprias caixas. OpenFire é uma excelente escolha.
A biblioteca que você deseja não é o Smack, como mencionado acima, é o aSmack . Mas observe que este é um ambiente de construção - você terá que construir a biblioteca.
Este é um cálculo que fiz sobre o impacto na duração da bateria de uma solução XMPP:
fonte
Recentemente, comecei a jogar com o MQTT http://mqtt.org para Android como uma maneira de fazer o que você está solicitando (ou seja, não SMS, mas orientado por dados, entrega quase imediata de mensagens, escalável, sem polling etc.)
Tenho uma postagem no blog com informações básicas sobre isso, caso seja útil http://dalelane.co.uk/blog/?p=938
(Nota: MQTT é uma tecnologia IBM e devo salientar que trabalho para IBM.)
fonte
Dê uma olhada na plataforma Xtify . Parece que é isso que eles estão fazendo,
fonte
O Google está depreciando o C2DM, mas, em seu lugar, a introdução do GCM (Google Cloud Messaging), não acho que eles tenham nenhuma cota e é grátis! No entanto, requer o Android 2.2 ou superior! http://developer.android.com/guide/google/gcm/index.html
fonte
Se você pode confiar que as bibliotecas do Google estão lá para o seu mercado-alvo, convém refazer a funcionalidade do GTalk (registrando um recurso no nome de usuário existente - interceptando as mensagens quando elas chegam com um BroadcastReceiver).
Se não, e espero que você não possa , então você está agrupando suas próprias versões do XMPP . Isso é complicado, mas pode ser mais fácil se o XMPP for incluído separadamente como uma biblioteca independente.
Você também pode considerar o PubSubHubub , mas não faço ideia do uso da rede. Eu acredito que é construído no topo do XMPP.
fonte
Eu estive investigando isso e o PubSubHubBub recomendado por jamesh não é uma opção. O PubSubHubBub é destinado a comunicações servidor a servidor
Cheguei à conclusão de que o método mais simples é usar o push HTTP do cometa. Essa é uma solução simples e bem compreendida, mas também pode ser reutilizada para aplicativos da Web.
fonte
Há um novo esforço de código aberto para desenvolver uma biblioteca Java para notificações push no Android, usando o servidor meteoro Meteor como back-end. Você pode conferir no Deacon Project Blog . Precisamos de desenvolvedores, então, espalhe a palavra!
fonte
O Google anunciou recentemente (18 de maio de 2016) que o Firebase agora é sua plataforma unificada para desenvolvedores de dispositivos móveis, incluindo notificações push quase em tempo real.
fonte
fonte
Não consigo encontrar onde o leio, mas acredito que o gmail utiliza uma conexão TCP aberta para fazer o envio por email.
fonte
Como
GTalk
saiu do SDK, pode ser uma boa ideia criar um sistema de mensagens push 'padrão'. Dessa forma, apenas um serviço precisa ser executado, apenas uma conexão TCP extra precisa estar aberta. Os aplicativos devem conversar com este serviço usandoIntents
e devem primeiro solicitar permissão para enviar e receber notificações do serviço. O serviço deve notificar o usuário de que um novo aplicativo deseja enviar e receber mensagens. O usuário concederá ou negará permissão e permanecerá no controle. O aplicativo registrará uma ação + categoria no serviço, para que o serviço saiba como entregar a mensagem enviada.Seria uma boa ideia ou não?
fonte
Por que você não vai com a implementação do XMPP. No momento, existem tantos servidores públicos disponíveis, incluindo gtalk, jabber, cidadela etc. Para o Android, existe um SDK também disponível, chamado SMACK. Não podemos dizer uma notificação por push, mas usando o XMPP, você pode manter uma conexão aberta entre cliente e servidor, o que permitirá uma comunicação bidirecional. Significa que o cliente e o servidor Android podem se comunicar. No momento, isso atenderá à necessidade do Push no Android. Eu implementei um código de exemplo e ele realmente funciona muito bem
fonte
Eu desenvolvi recentemente http://pushdroid.org, é um aplicativo único que deve ser instalado no telefone, assim como o google o implementou no 2.2. Isso funciona a partir da 1.5 e está sendo transmitido via intenção.
fonte
O problema com o GCM é que há muita configuração envolvida no processo:
Se você gosta de coisas simples (como eu), tente o UrbanAirship . É (IMHO) a maneira mais fácil de usar o GCM no seu aplicativo sem fazer muita configuração. Também fornece uma GUI bonita para testar se as mensagens do GCM estão sendo entregues corretamente.
Nota: Eu não sou afiliado à UrbanAirship de forma alguma
fonte
https://github.com/Guti/Google-Cloud-Messaging--Titanium-/blob/master/src/com/google/android/gcm/GCMRegistrar.java
Sua solução realmente boa e funcional para push.
Por favor tente
fonte
Eles têm seus ouvintes, que devem ser usados por você usando as classes de bibliotecas no seu código. Você não precisa se preocupar em empurrar. Você deve enviar a mensagem ao servidor, o servidor enviará a mensagem ao dispositivo. Eles usam OAuth. Em relação aos protocolos, existem dois métodos usando o CCS e o XMPP. O CCS apenas usa o XMPP como uma camada de transporte autenticada, para que você possa usar a maioria das bibliotecas XMPP para gerenciar a conexão. Para enviar notificações para o dispositivo, você pode escrever o código no aplicativo Android para enviar, bem como o código do servidor. o envio da mensagem será feito apenas pelo seu código. O resto será tratado pelo Google Server no caso do GCM. Você pode verificar os detalhes neste link
http://developer.android.com/google/gcm/server.html
Além disso, por questões de segurança
segurança de mensagens da nuvem do Google https://groups.google.com/forum/#!topic/android-gcm/M-EevBitbhQ
Caso seu aplicativo não esteja em execução, os dispositivos também podem receber notificações, pois é necessário escrever um código para os ouvintes de transmissão. Em segundo plano, ele estará ouvindo o servidor e, sempre que houver algum pacote de mensagens, ele receberá a mensagem como notificação. Android tem serviço que você precisa para não se preocupar com isso. Você só precisa usar esses recursos usando a classe de biblioteca que facilita o seu trabalho e permitir que eles escrevam se o aplicativo não estiver em execução e também receberá notificações. Obviamente, haveria algum ouvinte que fizesse com que o aplicativo recebesse. Marque a seção "Receber a mensagem" neste link
http://developer.android.com/google/gcm/client.html
Ele também aceitará solicitações de usuários. Para o GCM, ele serve. Marque "Enviar uma mensagem"
http://developer.android.com/google/gcm/client.html
fonte