디바이스 그룹 기능을 사용하는 어플리케이션을 개발하겠습니다. 내가 이해할 수 있듯이 나는 먼저 서버에 메소드 onTokenRefresh
의 안드로이드 클라이언트에 도착한 현재 등록 토큰을 보내야하고 HTTP 요청을 통해이 등록 토큰을 적절한 장치 그룹에 추가합니다 (존재하지 않으면 생성). 그러나 Android 앱 사용자는 앱의 데이터를 여러 번 지울 수 있으므로 등록 토큰 누출 가능성이 있음을 알았습니다. 그것을 막는 방법? 20 명 한도를 초과하면 어떻게됩니까? 그리고 어떤 그룹이 이미 존재하는지 여부를 확인할 수 있습니까?Firebase 클라우드 메시징 디바이스 그룹 누출
답변
내가 볼, 그러나, 응용 프로그램의 데이터 여러 번 닦아 예를 들어 안드로이드 응용 프로그램 사용자 수 있으므로, 등록 토큰을 누출의 가능성. 그것을 막는 방법?을 방지 하여이 앱 관리자에서 앱 데이터 지우기를 사용하지 의미하는 경우
,이 post를 참조해야합니다. accepted answer에는 불가능하다고 나와 있습니다.
그러나 Jakar's answer 대신 데이터 지우기의, 대신 표시됩니다 스페이스 관리 해결 방법을 제공합니다. 아직 시도하지 않았으므로 확신 할 수 없습니다. upvotes 자체에 대한 이야기지만.
그러나 지금까지 응용 프로그램의 데이터는 사용자가 삭제/닦아 경우, 당신은 FirebaseInstanceId 문서에 언급 된 내용으로 참조해야합니다 : 제외
인스턴스 ID가 안정적 일 때 :
- 앱 새로운 장치에 복원
앱 인스턴스 ID를 삭제
사용자 /가
사용자가 응용 프로그램 데이터
새로운Instance ID
가 생성되는 위의 경우를 지우고 응용 프로그램을 다시 설치 제거 응용 프로그램은 이전에
onTokenRefresh()
를 구현 생성 된 토큰 인증을 다시해야합니다.
20 명의 제한을 초과하면 어떻게됩니까 ? ... 당신은 최대보다 더 많은 장치 그룹에 장치를 추가 관련된 경우 문제는 여기에있다 .. 그러나
확실하지
은 분명히에 명시된 찾을 수 없습니다 당신이 그룹에 추가에게 에 섹션을 참조하는 경우 FCM: Device Group Messaging 문서는하지만, 그것은 상태 :성공적인 작업이
notification_key
반환합니다.만약 당신이 이미 이 끝나가는 장치 그룹에 다른 장치를 추가하려고하면
그래서 그에서, 내가 생각하는 작업이 는을 실패합니다.
20 세 이상이라고 생각하면 Topics을 사용하는 것이 좋습니다.하지만 사용 사례가 무엇인지는 알 수 없으므로 전화를드립니다.
그리고 그것은 어떤 그룹이 이미 존재 여부를 확인하는 것이 가능하다? 이를 위해
, 당신은 notification_key
및 notification_key_name
의 사용을해야합니다. docs 당 같이
그리고 문에 강조 : 장치 그룹의
notification_key_name
주어진 그룹에 고유 한 이름 또는 식별자 (예를 들어, 그것은 사용자 이름 일 수있다)이다.notification_key_name
및notification_key
은 등록 토큰 그룹에 고유합니다. 동일한 발신자 ID에 대해 여러 개의 클라이언트 앱이있는 경우notification_key_name
은 은 고유 한입니다. 이렇게하면 메시지는 의도 한 대상 응용 프로그램에만 전달됩니다.
기본 관리 - 그룹 생성 및 삭제, 추가하거나 제거 장치 - 일반적으로 응용 프로그램 서버를 통해 수행됩니다.
키와 이름은 서버에 있어야하며 이미 존재하는지 확인할 수 있습니다.
"방지"란 등록 ID 누출을 막는 것을 의미합니다. 앱 데이터 삭제는 신속하게 누설하는 방법의 한 예일뿐입니다. 새 토큰이 할당되고 이전 토큰이 삭제되지 않으면 누출이 발생합니다. – Matis
알겠습니다. - * 새 토큰이 할당되고 이전 토큰이 제거되지 않으면 누수가 발생합니다. * - 단순히 서버 측에서 처리되지 않습니까? Canonical Ids를 사용하고 있습니까? 다른 시나리오는 클라이언트 응용 프로그램 자체에서 처리해야합니까? –
정식 ID는 해결책 일 수 있지만 FCM 문서 (GCM에만 해당)에는 명확하게 언급되지 않았습니다. https://firebase.google.com/docs/cloud-messaging/server#response에 대한 언급이 있지만 이러한 표준 ID가 반환되는 이유 또는시기는 설명하지 않습니다. 하지만 장치 그룹을 사용하고 싶기 때문에 그룹에 추가 할 때만 개별 장치의 등록 ID를 조작합니다. 마지막 질문을 명확히하고 싶습니다. 내 앱 서버에 그룹을 저장해야하지만 FCM 서버와 동기화되지 않는 경우가 있습니다. 따라서 그룹에 FCM 서버가 있는지 확인하고 싶습니다. 'notification_key_name '이 존재합니다. – Matis
현재 일부 성공을 거두고 있지만 아직 완전히 테스트 또는 조정되지 않았습니다.
앱은 firebase를 백엔드로 사용하고 푸시 알림을 구현하기 위해 FCM을 추가하고 있습니다.
사용자가 다른 장치 또는 여러 장치에있을 수있는 경우 처리 할 그룹이 필요합니다.
제가
profiles
-profile_id
-FCM
-notification_key:value
-registration_ids
-device_1_uuid:token_for_device_1
-device_2_uuid:token_for_device_2
즉 프로파일과 각 장치에 대한 값 notification_key 돌아와 registration_id (토큰)를 저장하면 FCM 아래 데이터가 없음을 사용자가 제 징후 노드 즉 더 notification_key하지없고 registration_ids
사용자가 로그인 할 때마다 프로필 ID에 연결됩니다. 더 notification_key (모든 장치 즉, 처음으로) 나는 notification_key_name로 PROFILE_ID를 사용하여 그룹을 생성하고 돌아 오는 notification_key 저장이없는 경우
은 내가 FCM 토큰 다음
를 얻을.
새 기기에 notification_key (새 기기에 로그인 또는 첫 번째 로그인으로 돌아 가기)가있는 경우 현재 기기에 대한 registration_id가 있는지 확인하고 그렇지 않은 경우 (새 기기에 첫 번째 로그인) device_uuid : registration_ids에 대한 토큰 쌍.
(리턴 사인온) FCM 그룹에서 저장된 토큰을 제거하고 저장된 registration_ids의 이전 토큰을 방금 얻은 토큰으로 바꿉니다.
이제 해당 사용자 (프로필)가 자신의 profile_id로 전송하여 사용하는 모든 장치에 메시지를 보낼 수 있습니다. 이전 사용자를 삭제하기 때문에 토큰을 누출해서는 안됩니다.
그러나 그룹을 정리할 때마다 그룹과 토큰을 읽을 수있는 API가없는 것 같아서 알 수있는 방법이 없습니다.
또한 초기 코드가 도청되어 notification_key를 캡처하지 못해 이제는 내 그룹 중 하나에 추가, 제거 또는 아무 작업도 수행 할 수 없습니다. 나는 내가 불타는 구름을 계속 피난처 구름 속에 놓아 두어야한다는 생각이 싫다.
FCM이 더 많은 API 액세스를 제공하여 장소를 깔끔하게 유지할 수 있어야한다고 생각합니다.
나는 거의 같은 접근 방식을 따르고 있는데, 나는 질문이있다. FCM은 연결된 장치가없는 경우 자동으로 장치 그룹을 삭제합니다. 이 사건을 어떻게 처리합니까? 내 이해에 따라 토큰이 더 이상 유효하지 않은 경우 해당 토큰이 자동으로 FCM의 그룹에서 제거됩니다. –
장치에서 바뀌었기 때문에 그룹에서 토큰을 제거 할 때 마지막/유일한 토큰 인 경우 FCM 그룹이 삭제되고 새 토큰을 등록하려고하면 오류가 발생합니다. 해당 텍스트 메시지, 즉 "notification_key not found"로 오류를 트랩하고 이전에 사용한 것과 동일한 notification_key를 가진 새 그룹을 다시 만들고 토큰을 추가하도록 create_group 함수를 호출합니다. 조금 해킹 된 느낌이지만 비슷한 방식으로 새 장치에 대한 추가 토큰을 등록하는 조건으로 "notification_key already exists"오류 텍스트를 사용합니다. – blythburgh
네, 지금이 방법을 다루는 방법입니다. 그러나 좀 더 나은 접근 방법이 있는지 궁금 해서요. –
- 1. Firebase Notification - Firebase 클라우드 메시징
- 2. Firebase 클라우드 메시징 HIPAA 준수입니까?
- 3. Grails Firebase 클라우드 메시징 플러그인
- 4. Firebase 멀티 캐스트 클라우드 메시징
- 5. Firebase 알림 및 클라우드 메시징
- 6. Firebase 클라우드 메시징 중복 알림
- 7. Firebase 클라우드 메시징 다른 키
- 8. Firebase 클라우드 메시징 AppDelegate 오류
- 9. Firebase 클라우드 메시징 신속한 실행
- 10. Xcode 8 및 Firebase 클라우드 메시징
- 11. Firebase 클라우드 메시징 주제에 여러 토큰 구독
- 12. Firebase 클라우드 메시징 서버 키가 없음
- 13. Firebase 클라우드 메시징 인스턴스 ID 검색 실패
- 14. Firebase 및 푸시 알림/클라우드 메시징
- 15. Firebase 클라우드 메시징 소리/진동 없음
- 16. Firebase 클라우드 메시징 주제 메시지의 InvalidRegistration
- 17. Firebase 메시징 키의 차이점
- 18. 클라우드 메시징 또는 REST API?
- 19. Firebase 클라우드 메시징 인증 토큰 대 등록 토큰
- 20. subscribe를 통한 Firebase 클라우드 메시징 문제 // 주제 해제 토론
- 21. C# 서버를 사용하여 여러 사용자에게 firebase 클라우드 메시징
- 22. Firebase 클라우드 메시징 및 C# 서버 사이드 코드
- 23. Firebase 클라우드 메시징 서비스 키가 올바르게 작동하지 않습니다.
- 24. iOS Firebase 클라우드 메시징 앱 닫기시 데이터 가져 오기
- 25. Android Firebase 클라우드 메시징 : 푸시 메시지가 손실 되나요?
- 26. Firebase (Google) 클라우드 메시징 (FCM, 이전 GCM) - 메시지 상태 확인
- 27. Android Firebase 클라우드 메시징 (FCM) : subscribeToTopic이 자동 재 시도를 수행합니까?
- 28. Firebase 클라우드 메시징 "동시 연결"에 대한 설명?
- 29. Google 클라우드 메시징 보안
- 30. Google 클라우드 메시징 제한
크로스 게시물 : https://groups.google.com/d/msg/firebase-talk/B8wG6CMC8lA/X6KvwaydAwAJ –
개월 4 후에는 진전이 있습니까? 장치 그룹에서 만료 된 토큰을 어떻게 처리해야하는지 알고 싶습니다. 당신은 어떻게 든 디바이스를 유일하게 식별해야합니다 ... – Galya
@Galya 디바이스 그룹을 사용하지 않기로 결정 했으므로, 간단히 디바이스 ID를 가진 주제를 사용합니다. – Matis