your programing

Android 앱 제거를 감지 할 수 있습니까?

lovepro 2020. 12. 30. 19:48
반응형

Android 앱 제거를 감지 할 수 있습니까?


내 앱은 Google의 C2DM (푸시 알림)을 사용하여 친구의 새로운 활동에 대해 사용자에게 알립니다. 앱을 설치하면 C2DM 서버에 기기를 등록하고 사용자의 전화 번호를 저장합니다. 따라서 사용자가 내 앱을 사용하고 있다는 것을 알고 있으며 그 / 그녀에게 푸시 알림을 보낼 수 있습니다. 하지만 사용자가 내 앱을 제거하면 어떻게 되나요? 내 앱에서 찾을 수있는 방법이 있나요? 또는 유일한 방법은 C2DM을 보낼 때 서버에서 오류를 포착하고 연결할 수없는 경우 사용자를 비활성으로 표시하는 것입니다.

친구가 앱을 사용하고 더 이상 사용하지 않을 때 사용자에게 알리고 싶습니다.

이 시나리오에 가장 적합한 솔루션은 무엇입니까?


불행히도 ACTION_PACKAGE_REMOVED 인 텐트는 자신을 제외한 모든 수신자에게 전송됩니다. 이것은 여기에서 확인 됩니다 .

C2DM 계획에 대해 몇 가지 질문이 있습니다. 저는 그것에 대해 잘 모릅니다. 사용자가 오랜 시간 동안 기기를 꺼두면 사용하는 오류 조건이 트리거 되나요? C2DM은 실제로 "연결할 수없는"장치를 어떻게보고합니까? 그것은 푸시 알림을 보내려고 할 때만 발생하고 실패하는 조건입니까, 아니면 어떻게 든 장치에 도달했다고 판단했지만 제대로 처리하지 못한 경우입니까? 분명히 두 번째 시나리오에서 당신의 계획은 효과가있을 것이지만, 그렇지 않으면 "오 탐지"가 발생하는 것을 볼 수 있습니다.

참조 용 이전 SO 질문 : 제거 된 패키지에서 인 텐트 ACTION_PACKAGE_REMOVED를 수신하지 않는 Android


GCM 문서는 여기에서이 상황을 설명합니다.

https://developers.google.com/cloud-messaging/registration#how-uninstalled-client-app-unregistration-works

"애플리케이션은 기기에서 제거 된 후 자동으로 등록 취소 될 수 있습니다. 그러나 Android는 제거 콜백을 제공하지 않기 때문에이 프로세스는 즉시 발생하지 않습니다."

기본적으로 GCM이 다음 푸시 알림을 보내려고 할 때 장치는 수신 애플리케이션이 제거되었음을 GCM에 알립니다.

친구가 더 이상 앱을 사용하지 않음을 친구에게 알리는 경우 GCM NotRegistered은이 오류가 발생하면 알림 서버에 오류를 보냅니다 . 즉각적인 것은 아니지만 사용할 수 있습니까?


Google C2DM 서비스는 제거 된 애플리케이션을 감지 할 때 수동 모드에서 작동합니다.

애플리케이션을 제거한 후 (C2DM에서 등록 취소하지 않고 !!!) 첫 번째 푸시 알림은 응답에 오류를 반환하지 않습니다. 그러나 두 번째 푸시 알림은 응용 프로그램이 제거되었음을 알 수있는 "잘못된 등록"또는 "등록되지 않음"오류 코드를 반환합니다.

그 이유는 C2DM 서버가 즉시 응답 코드를 반환 한 다음 클라이언트를 푸시하려고하기 때문입니다. 클라이언트가 응용 프로그램이 제거되었다고 응답하면 C2DM 서버에서 삭제됩니다. 다음 푸시 시도는 즉시 오류 코드를 반환합니다.


예,하지만 꽤 해키입니다. 이 방법은 Android가 앱을 제거 할 때 가장 먼저 수행하는 작업이 데이터 파일을 삭제한다는 사실을 기반으로합니다. 따라서 파일 감시자를 사용하여 삭제를 감지 할 수 있습니다. 또한 이것을 네이티브 코드로 작성해야합니다. 자바로 코드를 작성하면 코드를 실행하기 전에 앱이 제거됩니다. 이 데모를 참조하십시오 : https://github.com/sevenler/Uninstall_Statics


본문에 "NotRegistered"메시지가있는 서버 응답 200의 한 가지 방법 만 알고 있습니다.

NotRegistered — registration_id가 더 이상 유효하지 않습니다. 예를 들어 사용자가 응용 프로그램을 제거했거나 알림을 해제했습니다. 발신자는이 기기로의 메시지 전송을 중지해야합니다.


나는 당신에게 말할 몇 가지 포인트가 있습니다,

  1. Android 커뮤니티는 더 이상 사용할 수 없으므로 C2DM 대신 GCM을 사용하도록 권장합니다.
  2. 안드로이드에서는 앱이 제거되고 있다는 알림을받을 수있는 방법이 없습니다.
  3. 제거 된 앱에 메시지 전송을 중지하려면 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

반응형