Pergunta

Eu aprendi recentemente sobre a capacidade do iPhone apps para receber quase instantânea notificações para aplicativos notificações para aplicativos .

Este é fornecido na forma de notificações push, um bespoke protocolo que mantém um sempre na conexão de dados para o iPhone e mensagens de pacotes binários para o aplicativo, que aparece alertas incrivelmente rapidamente, entre 0,5 - 5 segundos do aplicativo de servidor de envio para o tempo de resposta aplicativo de telefone. Este é enviado como dados - em vez de SMS - em muito, muito pequenos pacotes carregados como parte dos dados não planejar como mensagens recebidas.

Gostaria de saber se, usando o Android, não há nem uma instalação semelhante, ou se é possível implementar algo próximo a isso usando APIs do Android. Para esclarecer, eu defino semelhante como:

  • Não é uma mensagem SMS, mas alguma solução impulsionada dados
  • Como o tempo real como é possível
  • é escalável, ou seja, como a parte do servidor de um aplicativo móvel, eu poderia notificar milhares de casos de aplicativos em segundos

Eu aprecio o aplicativo poderia ser baseada puxar, HTTP estilo de pedido / resposta, mas o ideal é que eu não quero ser polling que fortemente apenas para verificar de notificação; além de que é como gotejamento drenagem do plano de dados.

Foi útil?

Solução

Firebase Cloud Messaging FCM FAQ é a nova versão do GCM. Ele herda infra-estrutura central da GCM para entregar mensagens de forma confiável no Android, iOS e Chrome. No entanto eles vão continuar a GCM apoio, porque muitos desenvolvedores estão usando GCM SDKs hoje para notificações do punho, e atualização de aplicativo cliente leva tempo.

A partir de 26 de junho de 2012 Google Cloud Messaging é o forma preferida de envio de mensagens para aplicativos executados em dispositivos.

Anteriormente (e agora obsoleto), o serviço foi chamado Nuvem Para Messaging Dispositivo .

Outras dicas

XMPP é uma boa solução. Eu usei-o para um empurrão habilitada, em tempo real, a aplicação Android. XMPP é poderosa, altamente extensível e fácil de integrar e usar.

Há um monte de servidores XMPP livres (embora por cortesia você não deve abusar deles) e existem servidores de código aberto que podem ser executados em uma de suas próprias caixas. OpenFire é uma excelente escolha.

A biblioteca que você quer não é Bater como mencionado acima, é aSmack . Mas nota, este é um ambiente de construção -. Você terá que construir a biblioteca

Este é um cálculo que eu fiz com o impacto a vida da bateria de uma solução XMPP:

O cliente Android deve manter uma conexão TCP persistente, por acordar periodicamente para enviar uma pulsação para o servidor XMPP.
Isto impõe claramente um custo em termos de uso de energia. Uma estimativa deste custo é fornecido abaixo:

  • Usando uma bateria de 1400mAh (como fornecido no Nexus One e HTC Desire)
  • Um dispositivo inativo, ligado a uma rede 3G, utiliza cerca de 5 mA
  • O wake-up, batimentos cardíacos, ciclo de sono ocorre a cada 5 minutos, leva três segundos a completa e usos 300mA
  • O custo de uso da bateria por hora é, portanto:
    • 36 segundos 300mA = 3mAh envio batimento cardíaco
    • 3600 segundos 5MA = 5mAh em marcha lenta
    • 4:95 + 3 = 7: 95mAh combinada
  • Uma bateria de 1400mAh dura aproximadamente 11,6 dias em marcha lenta e 7,3 dias quando a executar a aplicação, o que representa uma redução de aproximadamente 37% em bateria de vida.
  • No entanto, uma redução na vida útil da bateria de 37% representa o pior caso absoluto na prática, dado que os dispositivos raramente são completamente ocioso.

Eu recentemente comecei a jogar com MQTT http://mqtt.org para Android como uma maneira de fazer o que você está pedindo (ou seja, não SMS, mas os dados impulsionado, entrega quase imediata de mensagens, escalável, e não de votação, etc.)

Eu tenho um blog com informações básicas sobre este caso em que é útil http: // dalelane .co.uk / blog /? p = 938

(Nota: MQTT é uma tecnologia IBM, e devo salientar que eu trabalho para a IBM.)

Tenha um olhar para a plataforma Xtify . Parece que este é o que eles estão fazendo,

O Google está se desvalorizando C2DM, mas em seu lugar sua GCM introdução (Google Cloud Messaging) Eu não acho que a deles qualquer quota e sua livre! Ele requer Android 2.2 + embora! http://developer.android.com/guide/google/gcm/index.html

Se você pode depender de bibliotecas do Google estar lá para você mercado-alvo, então você pode querer voltar piggy no GTalk funcionalidade (registrar um recurso no nome de usuário existente - a interceptá-la as mensagens como eles vêm com um BroadcastReceiver).

Se não, e espero você não pode , então você está em agregação suas próprias versões de XMPP . Esta é uma dor, mas pode ser mais fácil se XMPP é empacotado separadamente como uma biblioteca independente.

Você também pode considerar PubSubHubub , mas não tenho idéia do uso da rede dele . Eu acredito que ele é construído em cima de XMPP.

Eu tenho olhado para isso e PubSubHubbub recomendado por jamesh não é uma opção. PubSubHubbub é destinado ao servidor para comunicação do servidor

"Estou atrás de um NAT. Posso assinar um Hub? O hub não pode conectar-se a mim."

/ Anonymous

Não, PSHB é um servidor de servidor para protocolo. Se você está atrás de NAT, você está não é realmente um servidor. Enquanto nós temos chutado idéias para PSHB opcional extensões para fazer pendurado recebe ( "long polling ") e / ou messagebox polling para tais clientes, não é no núcleo spec. A especificação é núcleo servidor-servidor só.

/ Brad Fitzpatrick, San Francisco, CA

Fonte: http://moderator.appspot.com/#15/ e = 43e1a & t = 426ac & f = b0c2d (não link direto possível)

Eu vim à conclusão de que o método mais simples é usar impulso Comet HTTP. Isto é tanto uma solução simples e bem compreendido, mas pode também ser re-utilizado para aplicações web.

Há um novo esforço de código aberto para desenvolver uma biblioteca Java para notificações push no Android, usando o servidor cometa Meteor como um backend. Você pode verificá-la em o Deacon Projeto Blog . Precisamos de desenvolvedores, então por favor espalhar a palavra!

Não consigo encontrar onde eu lê-lo em, mas acredito gmail utiliza uma conexão TCP aberta para fazer o push e-mail.

Como GTalk está desaparecido desde o SDK, que poderia ser uma boa idéia para fazer um sistema de mensagens push 'standard'. Dessa forma, apenas um serviço tem que funcionar, apenas um necessidades de conexão TCP extra para ser aberto. As candidaturas devem falar com este serviço usando Intents e deve primeiro solicitar permissão para enviar e receber notificação do serviço. O serviço deve, então, notificar o usuário de uma nova aplicação deseja enviar e receber mensagens. O usuário, então, conceder ou negar permissão, então ele permanece no controle. A aplicação será então registar uma ação + categoria para o serviço, para que o serviço sabe como entregar a mensagem enviada.

O relator uma boa idéia ou não?

Por que você não ir com a implementação XMPP. agora há tantos servidores públicos disponíveis, incluindo gtalk, Jabber, cidadela etc. Para Android existe um SDK também está disponível nomeado como SMACK. Isso nós não podemos dizer que uma notificação de envio, mas usando o XMPP você pode manter uma conexão aberta entre o cliente eo servidor que permitirá uma comunicação de duas vias. cliente meios Android e servidor ambos podem se comunicar uns com os outros. Actualmente, este irá atender a necessidade de Empurre android. Eu tenho implementado um código de exemplo e que realmente funciona muito bem

Eu desenvolvi recentemente http://pushdroid.org seu um único aplicativo que deve ser instalado no telefone como Google implementou-lo em 2.2 obras de 1,5 e está transmitindo via intenção.

O Google recentemente (18May2016) anunciou que Firebase é plataforma de agora é unificada para os desenvolvedores móveis, incluindo quase em tempo real impulso notifications.It também é multi-plataforma:

A empresa agora oferece a todos os usuários Firebase gratuito e ilimitado notificações com suporte para iOS, Android e na Web.

fonte

O problema com GCM é que há um monte de configuração envolvidos no processo:

  • Você tem que adicionar um monte de clichê para você Android app
  • Você precisa configurar um servidor externo para comunicar com o servidor GCM
  • Você terá que testes de escrita

Se você gosta de coisas simples (como eu) você deve tentar UrbanAirship . É a maneira (IMHO) mais fácil de usar GCM em seu aplicativo sem fazer um monte de configuração. Ela também lhe dá uma interface gráfica bastante para teste que suas mensagens GCM estão sendo entregues corretamente.

  • Você pode encontrar a documentação e guia de iniciação aqui
  • Você pode encontrar um exemplo de aplicativo aqui

Nota: Eu não estou Afiliado com UrbanAirship de qualquer maneira

Eles têm os seus ouvintes que tem de ser usado por você usando suas classes de biblioteca em seu código. Você não precisa se preocupar com a empurrar. Você tem que enviar a mensagem para o servidor servidor vai empurrar a mensagem para o dispositivo. Eles usam OAuth. Em relação protocolos, existem dois métodos que utilizam CCS e XMPP. CCS só usa XMPP como uma camada de transporte autenticado, assim você pode usar a maioria das bibliotecas XMPP para gerenciar a conexão. Para enviar notificações para o dispositivo você pode escrever código no aplicativo Android para enviar, bem como o seu código do servidor. a mensagem de envio será feito apenas pelo seu código. Resto vai ser cuidado pelo Google Servidor no caso GCM. Você pode verificar detalhes neste link

http://developer.android.com/google/gcm/server.html

Além disso, para as questões de segurança

O Google segurança de mensagens cloud https://groups.google. com / forum / #! tópico / android-GCM / M-EevBitbhQ

No caso da sua aplicação não está em execução, em seguida, também dispositivos podem receber notificação porque você tem que escrever código para ouvintes de transmissão. No fundo ele vai estar ouvindo servidor e sempre que qualquer pacote de mensagem estará lá ele receberá a mensagem como notificação. Android tem o serviço que você precisa para não se preocupar com isso. Você só tem que usar esses recursos usando a classe biblioteca que torna o seu trabalho mais fácil e deixá-los escrever, se a sua aplicação não está em execução, então, também receberá notificação. Obviamente, haveria algum ouvinte whick fazer o app recieve.Check "Receber a mensagem" neste ligação

http://developer.android.com/google/gcm/client.html

Ele vai acccept pedido dos usuários também. Para GCM ele vai fazer. Por favor, verifique "Enviar uma mensagem"

http://developer.android.com/google/gcm/client.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top