android - 효과 - 푸시알림이란




Android가 실시간 푸시 알림을 지원합니까? (11)

최근에 iPhone 앱 이 앱 알림 알림을 거의 즉시 수신하는 기능에 대해 배웠습니다.

이것은 푸시 알림의 형태로 제공되며, iPhone에 항상 데이터 연결을 유지하는 주문형 프로토콜이며, 서버 응용 프로그램에서 전화 응용 프로그램으로 보내기까지 0.5 초 ~ 5 초 사이의 경고를 신속하게 팝업하는 응용 프로그램에 이진 패킷을 보냅니다 응답 시간. 이는 데이터 계획의 일부로 수신 메시지가 아닌 매우 작은 패킷에 SMS가 아닌 데이터로 전송됩니다.

안드로이드를 사용하고 있다면 유사한 기능이 있는지 또는 안드로이드 API를 사용하여 이와 비슷한 것을 구현할 수 있는지 알고 싶습니다. 명확히하기 위해 다음과 같이 정의합니다.

  • SMS 메시지가 아니라 일부 데이터 기반 솔루션
  • 가능한 한 실시간으로
  • 확장 성이 있습니다. 즉, 모바일 앱의 서버 일부로 몇 초 안에 수천 개의 앱 인스턴스를 알릴 수있었습니다.

응용 프로그램이 끌어 오기 기반, HTTP 요청 / 응답 스타일을 수 있지만 고맙게도 그냥 무겁게 알림을 확인하기 위해 폴링 할 싶지 않아요; 게다가 그것은 데이터 플랜을 흘리는 드립과 같습니다.


Firebase Cloud Messaging FCM FAQ 는 GCM의 새 버전입니다. Android는 GCM의 핵심 인프라를 상속하여 Android, iOS 및 Chrome에서 안정적으로 메시지를 전달합니다. 그러나 많은 개발자가 오늘 GCM SDK를 사용하여 알림을 처리하고 클라이언트 앱 업그레이드에 시간이 걸리기 때문에 계속해서 GCM을 지원합니다.

2012 년 6 월 26 일부터 Google Cloud Messaging 은 기기에서 실행되는 애플리케이션에 메시지를 보내는 기본 방법입니다.

이전에는 (지금은 사용되지 않음)이 서비스는 Cloud To Device Messaging 이라고 불 렸습니다.


GCM의 문제점은 프로세스에 관련된 많은 구성이 있다는 것입니다.

  • Android 앱에 많은 상용구를 추가해야합니다.
  • GCM 서버와의 통신을 위해 외부 서버를 구성해야합니다.
  • 테스트를 작성해야합니다.

당신이 단순한 일 (나 같은)을 좋아한다면 UrbanAirship 을 시도해야합니다. 구성을 많이하지 않고 앱에서 GCM을 사용하는 가장 쉬운 방법입니다 (IMHO). 또한 GCM 메시지가 올바르게 전달되는지 테스트 할 수있는 예쁜 GUI를 제공합니다.

  • here 에서 문서와 시작 안내서를 찾을 수 있습니다.
  • here 에서 샘플 애플리케이션을 찾을 수 있습니다.

참고 : 나는 어떤 식 으로든 UrbanAirship과 소통하지 않는다.


Meteor 혜성 서버를 백엔드로 사용하여 Android에서 푸시 알림을위한 Java 라이브러리를 개발하려는 새로운 오픈 소스 노력이 있습니다. 당신은 집사 프로젝트 블로그 에서 그것을 확인할 수 있습니다. 개발자가 필요하므로 단어를 퍼뜨려주세요!


그들은 당신의 코드에서 라이브러리 클래스를 사용하여 당신이 사용해야하는 리스너를 가지고 있습니다. 밀기에 대해 걱정할 필요가 없습니다. 서버 서버에 메시지를 보내야만 메시지가 장치로 전송됩니다. 그들은 OAuth를 사용합니다. 프로토콜과 관련하여 CCS와 XMPP를 사용하는 두 가지 방법이 있습니다. CCS는 XMPP를 인증 된 전송 계층으로 사용하기 때문에 대부분의 XMPP 라이브러리를 사용하여 연결을 관리 할 수 ​​있습니다. 기기에 알림을 보내려면 서버 코드와 함께 Android 앱에 코드를 작성하여 보낼 수 있습니다. 메시지 전송은 코드에 의해서만 수행됩니다. GCM 사례에서는 Google 서버가주의를 기울일 것입니다. 이 링크에서 세부 정보를 확인할 수 있습니다.

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

또한 보안 문제

Google 클라우드 메시징 보안 https://groups.google.com/forum/#!topic/android-gcm/M-EevBitbhQ

앱이 실행되지 않는 경우 브로드 캐스트 수신기의 코드를 작성해야하기 때문에 기기에서 알림을받을 수 있습니다. 백그라운드에서는 서버를 청취하고 메시지 패킷이있을 때마다 메시지를 알림으로 수신합니다. Android는 귀찮은 서비스가 아닙니다. 라이브러리 클래스를 사용하여 이러한 리소스를 사용하면 작업이 더 쉬워지고 앱이 실행 중이 아니더라도 알림을받을 수 있도록 작성할 수 있습니다. 분명히, 수신 대기중인 일부 청취자가있을 것입니다.이 링크의 "메시지 수신"섹션을 확인하십시오.

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

그것은 또한 사용자로부터 요청을 받아 들일 것입니다. GCM의 경우 해당 작업이 수행됩니다. "메시지 보내기"를 확인하십시오.

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


나는 최근에 http://pushdroid.org를 개발했으며, Google에서 구현 한 1.5 응용 프로그램과 마찬가지로 전화에 설치해야하는 단일 응용 프로그램이 1.5에서 작동하고 의도를 통해 방송됩니다.


나는 최근에 MQTT http://mqtt.org 에서 당신이 요구하는 것을 수행하는 방법으로 게임을 시작했다. (예를 들어 SMS가 아니고 데이터 중심, 거의 즉각적인 메시지 전달, 확장 성, 폴링 없음 등)

유용한 정보가 있으면 http://dalelane.co.uk/blog/?p=938 에 대한 배경 정보가있는 블로그 게시물이 있습니다.

(참고 : MQTT는 IBM 기술이므로 IBM에서 일한다는 것을 지적해야합니다.)


목표 시장을 위해 Google 도서관에 의존한다면 GTalk 기능 (기존 사용자 이름에 리소스 등록 - 메시지가 BroadcastReceiver와 함께 들어올 때이를 가로 채기)을 피기를 원할 수 있습니다.

그렇지 않다면, 그리고 당신이 할 수 없다고 기대 한다면 , 당신은 XMPP 버전번들묶어 놓을 것입니다. 이것은 고통이지만 XMPP가 독립 실행 형 라이브러리로 별도로 번들로 제공되는 경우 더 쉽게 만들 수 있습니다.

PubSubHubub 도 고려해 볼 수 있지만 네트워크 사용에 대해서는 잘 모릅니다. 나는 그것이 XMPP의 꼭대기에 세워 졌다고 믿는다.


왜 XMPP 구현에 참여하지 않습니까? 현재는 gtalk, jabber, citadel 등 수많은 공개 서버가 있습니다. Android의 경우 SMACK이라는 이름의 SDK도 있습니다. 푸시 알림을 말할 수는 없지만 XMPP를 사용하면 클라이언트와 서버간에 연결을 유지하여 양방향 통신이 가능합니다. 안드로이드 클라이언트와 서버가 서로 통신 할 수있는 것을 의미합니다. 현재 이것은 android에서 Push의 필요성을 충족시킬 것입니다. 샘플 코드를 구현했으며 실제로 훌륭하게 작동합니다.


XMPP 는 좋은 해결책입니다. 나는 푸시 활성화, 실시간, 안드로이드 응용 프로그램에 사용했습니다. XMPP는 강력하고 확장 성이 뛰어나며 통합 및 사용하기 쉽습니다.

무료 XMPP 서버가 많습니다 (비록 남용하지 말아야 함). 그리고 자신의 상자 중 하나에서 실행할 수있는 오픈 소스 서버가 있습니다. OpenFire 는 탁월한 선택입니다.

위에서 언급 한대로 당신이 원하는 도서관은 Smack 이 아닙니다. 그것은 aSmack 입니다. 그러나 이것은 빌드 환경입니다. 라이브러리를 빌드해야합니다.

이것은 XMPP 솔루션의 배터리 수명 영향에 대한 계산입니다.

Android 클라이언트는 XMPP 서버에 하트 비트를 보내주기 위해 주기적으로 깨어나 TCP 연결을 유지해야합니다.
이것은 분명히 전력 사용 측면에서 비용을 부과합니다. 이 비용의 추정치는 다음과 같습니다.

  • 1400mAh 배터리 사용 (Nexus One 및 HTC Desire에서 제공)
  • 3G 네트워크에 연결된 유휴 장치는 약 5mA를 사용합니다.
  • 웨이크 업, 하트 비트, 수면주기는 5 분마다 발생하며 완료하는 데 3 초가 걸리고 300mA를 사용합니다
  • 따라서 시간당 배터리 사용료는 다음과 같습니다.
    • 36 초 300mA = 하트 비트를 보내는 3mAh
    • 3600 초 5mA = 유휴시 5mAh
    • 4 : 95 + 3 = 7 : 95mAh 결합
  • 1400mAh 배터리는 유휴 상태에서 약 11.6 일, 애플리케이션 실행시 7.3 일 동안 지속되며 배터리 수명이 약 37 % 감소합니다.
  • 그러나 배터리 수명이 37 % 단축되면 장치가 완전히 유휴 상태에있는 경우가 거의 없으므로 실제 최악의 경우를 나타냅니다.

Xtify 플랫폼을 살펴보십시오. 그들이 지금하고있는 일처럼 보입니다.


GTalk 는 SDK에서 제외 GTalk '표준'푸시 메시징 시스템을 만드는 것이 좋습니다. 그렇게하면 단 하나의 서비스 만 실행해야하며 추가로 하나의 TCP 연결 만 열려 있어야합니다. 응용 프로그램은 Intents 사용하여이 서비스와 대화해야하며 먼저 서비스에서 알림을주고받을 수있는 권한을 요청해야합니다. 그런 다음 서비스는 새 응용 프로그램이 메시지를 보내고 받기를 원한다는 것을 사용자에게 알려야합니다. 사용자는 권한을 부여하거나 거부하여 제어 할 수 있습니다. 응용 프로그램은 action + 카테고리를 서비스에 등록하므로 서비스는 푸시 된 메시지를 전달하는 방법을 알고 있습니다.

좋은 생각 이냐 아니냐.







push-notification