Android 앱 제거를 감지 할 수 있습니까?
내 앱은 Google의 C2DM (푸시 알림)을 사용하여 친구의 새로운 활동에 대해 사용자에게 알립니다. 앱을 설치하면 C2DM 서버에 기기를 등록하고 사용자의 전화 번호를 저장합니다. 따라서 사용자가 내 앱을 사용하고 있다는 것을 알고 있으며 그 / 그녀에게 푸시 알림을 보낼 수 있습니다. 하지만 사용자가 내 앱을 제거하면 어떻게 되나요? 내 앱에서 찾을 수있는 방법이 있나요? 또는 유일한 방법은 C2DM을 보낼 때 서버에서 오류를 포착하고 연결할 수없는 경우 사용자를 비활성으로 표시하는 것입니다.
친구가 앱을 사용하고 더 이상 사용하지 않을 때 사용자에게 알리고 싶습니다.
이 시나리오에 가장 적합한 솔루션은 무엇입니까?
불행히도 ACTION_PACKAGE_REMOVED 인 텐트는 자신을 제외한 모든 수신자에게 전송됩니다. 이것은 여기에서 확인 됩니다 .
C2DM 계획에 대해 몇 가지 질문이 있습니다. 저는 그것에 대해 잘 모릅니다. 사용자가 오랜 시간 동안 기기를 꺼두면 사용하는 오류 조건이 트리거 되나요? C2DM은 실제로 "연결할 수없는"장치를 어떻게보고합니까? 그것은 푸시 알림을 보내려고 할 때만 발생하고 실패하는 조건입니까, 아니면 어떻게 든 장치에 도달했다고 판단했지만 제대로 처리하지 못한 경우입니까? 분명히 두 번째 시나리오에서 당신의 계획은 효과가있을 것이지만, 그렇지 않으면 "오 탐지"가 발생하는 것을 볼 수 있습니다.
참조 용 이전 SO 질문 : 제거 된 패키지에서 인 텐트 ACTION_PACKAGE_REMOVED를 수신하지 않는 Android
GCM 문서는 여기에서이 상황을 설명합니다.
"애플리케이션은 기기에서 제거 된 후 자동으로 등록 취소 될 수 있습니다. 그러나 Android는 제거 콜백을 제공하지 않기 때문에이 프로세스는 즉시 발생하지 않습니다."
기본적으로 GCM이 다음 푸시 알림을 보내려고 할 때 장치는 수신 애플리케이션이 제거되었음을 GCM에 알립니다.
친구가 더 이상 앱을 사용하지 않음을 친구에게 알리는 경우 GCM NotRegistered
은이 오류가 발생하면 알림 서버에 오류를 보냅니다 . 즉각적인 것은 아니지만 사용할 수 있습니까?
Google C2DM 서비스는 제거 된 애플리케이션을 감지 할 때 수동 모드에서 작동합니다.
애플리케이션을 제거한 후 (C2DM에서 등록 취소하지 않고 !!!) 첫 번째 푸시 알림은 응답에 오류를 반환하지 않습니다. 그러나 두 번째 푸시 알림은 응용 프로그램이 제거되었음을 알 수있는 "잘못된 등록"또는 "등록되지 않음"오류 코드를 반환합니다.
그 이유는 C2DM 서버가 즉시 응답 코드를 반환 한 다음 클라이언트를 푸시하려고하기 때문입니다. 클라이언트가 응용 프로그램이 제거되었다고 응답하면 C2DM 서버에서 삭제됩니다. 다음 푸시 시도는 즉시 오류 코드를 반환합니다.
예,하지만 꽤 해키입니다. 이 방법은 Android가 앱을 제거 할 때 가장 먼저 수행하는 작업이 데이터 파일을 삭제한다는 사실을 기반으로합니다. 따라서 파일 감시자를 사용하여 삭제를 감지 할 수 있습니다. 또한 이것을 네이티브 코드로 작성해야합니다. 자바로 코드를 작성하면 코드를 실행하기 전에 앱이 제거됩니다. 이 데모를 참조하십시오 : https://github.com/sevenler/Uninstall_Statics
본문에 "NotRegistered"메시지가있는 서버 응답 200의 한 가지 방법 만 알고 있습니다.
NotRegistered — registration_id가 더 이상 유효하지 않습니다. 예를 들어 사용자가 응용 프로그램을 제거했거나 알림을 해제했습니다. 발신자는이 기기로의 메시지 전송을 중지해야합니다.
나는 당신에게 말할 몇 가지 포인트가 있습니다,
- Android 커뮤니티는 더 이상 사용할 수 없으므로 C2DM 대신 GCM을 사용하도록 권장합니다.
- 안드로이드에서는 앱이 제거되고 있다는 알림을받을 수있는 방법이 없습니다.
- 제거 된 앱에 메시지 전송을 중지하려면 GCM에서 이것을 참조 할 수 있습니다.
서버에서 GCM으로 메시지를 보낼 때 응답 문자열이 표시됩니다. "NotRegistered"라는 오류가 발생하는 경우 응용 프로그램이 장치에서 제거되었거나 해당 응용 프로그램이 없기 때문에 서버 데이터베이스에서 등록 ID를 제거해야합니다. com.google.android.c2dm.intent.RECEIVE 인 텐트를 수신하도록 구성된 broadcast receiver. "
이 GCM 문서 살펴보기 : GCM 등록 취소
앱 등록을 취소해서는 안됩니다. 이것은 서버 측에서 처리됩니다.
참조 URL : https://stackoverflow.com/questions/6209730/is-it-possible-to-detect-android-app-uninstall
'your programing' 카테고리의 다른 글
scrypt의 .NET 구현 (0) | 2020.12.30 |
---|---|
JSP에서 요청시 속성에 액세스하는 방법은 무엇입니까? (0) | 2020.12.30 |
IIS 7.5에서 GZip 압축이 작동하지 않습니다. (0) | 2020.12.30 |
Mongo ObjectID에서 생성 된 날짜를 추출하는 방법 (0) | 2020.12.29 |
생성자 vals를 지속적으로 복제하지 않고 스칼라 케이스 클래스를 확장합니까? (0) | 2020.12.29 |