GCM 서버 측에서 "MismatchSenderId"를 얻는 이유는 무엇입니까?
내 Android 앱용 푸시 서비스를 만들려고하는데이 문제에 대한 Google GCM의 문서와 예제를 따릅니다.
Android 앱을 등록 / 등록 취소 할 수 있습니다. 내 서버 측에서 하나의 구독이 등록되어 있음을 알 수 있지만 서버에서 Android 앱으로 메시지를 보내려고 할 때 항상 다음 오류가 발생합니다.
장치 # 0에 메시지 보내기 오류 : MismatchSenderId
내 Android 앱의 경우 SENDER_ID = 200000000001을 사용합니다.
그리고 Google에서 말하는 것처럼 내 서버 측에서는 API_KEY = AIzxxxxxxxxxxxxxxxxXxxXxxXxxxXXXXXxxxxs를 사용합니다.
나는이 문서를 따랐다.
Google API 패널에서도 GCM을 활성화했지만 성가신 오류 메시지가 표시됩니다.
이 문제를 어떻게 해결할 수 있습니까?
서버가 GCM 서버에서 앱에 반환 한 새 등록 ID를 사용 했습니까? 이전 C2DM 서버에서 제공 한 등록 ID로 메시지를 보내려고하면이 문제가 발생했습니다.
또한 보낸 사람 ID와 API_KEY를 다시 확인하십시오. 일치해야합니다. 그렇지 않으면 MismatchSenderId 오류가 발생합니다. Google API 콘솔에서 프로젝트의 URL을 확인합니다.
https://code.google.com/apis/console/#project:xxxxxxxxxxx
xxxxxxxxx는 발신자 ID 인 프로젝트 ID입니다.
그리고 API 키가 '서버 앱용 키 (IP 잠금 포함)'에 속하는지 확인합니다.
숫자 ID를 사용하지 않으면 불일치가 발생합니다. 프로젝트 ID는 발신자 ID가 아닙니다 !! 이것을 알아내는 데 9 시간이 걸렸습니다. Google에서 만든 모든 혼란에 대해 다음 링크를 확인하여 숫자 ID를 얻으십시오.
https://console.cloud.google.com
대신에
https://console.developers.google.com
도움이 되었기를 바랍니다 !!
업데이트 :-상황이 다시 변경되었습니다. 이제 발신자 ID는 firebase입니다.
https://console.firebase.google.com으로 이동 하여 프로젝트를 선택합니다. 설정-> 클라우드 메시징에서 발신자 ID를 찾을 수 있습니다.
그리고 작동합니다!
터미널에서 아래 스크립트를 실행하십시오
curl -X POST \
-H "Authorization: key= write here api_key" \
-H "Content-Type: application/json" \
-d '{
"registration_ids": [
"write here reg_id generated by gcm"
],
"data": {
"message": "Manual push notification from Rajkumar"
},
"priority": "high"
}' \
https://android.googleapis.com/gcm/send
성공 또는 실패하면 메시지를 제공합니다.
최근에 같은 문제가 발생하여 프로젝트 ID에 따라 "gcm_sender_id"에 대해 다른 값을 시도했습니다. 그러나 "gcm_sender_id"값은 "프로젝트 번호"로 설정되어야합니다.
이 값은 메뉴> IAM 및 관리자> 설정에서 찾을 수 있습니다.
스크린 샷 참조 : GCM 프로젝트 번호
InstanceID.getInstance(getApplicationContext()).getToken(authorizedEntity,scope)
authorizedEntity는 서버의 프로젝트 번호입니다.
Android 앱은 12 자리 숫자 ID (일명 GCM 프로젝트 번호)를 수정해야합니다. 이 12 자리 숫자가 올바르지 않은 경우에도이 오류가 발생합니다.
이 12 자리 숫자는 Google Play Console의 특정 앱 '서비스 및 API'-> '연결된 발신자 ID'에서 찾을 수 있습니다.
이는 서버 키 와 발신자 ID 매개 변수 HTTP 요청이 서로 일치하지 않을 때 발생합니다 . 기본적으로 서버 ID와 서버 키는 모두 동일한 Firebase 프로젝트에 속해야합니다. 아래 이미지를 참조하세요. 지연된 Firebase 프로젝트에서 이러한 매개 변수를 혼합하면 MismatchSenderId 오류가 발생합니다.
Android 프로젝트의 폴더 google-services.json
에서 파일을 확인하십시오 app
. 확실하지 않은 경우 Firebase 콘솔에서 새로 생성하세요. 두 가지 경우에이 오류가 발생했습니다.
테스트 애플리케이션 (올바른
google-services.json
파일 포함) 과 함께 테스트 Firebase 프로젝트를 사용했습니다 . 그런 다음 다른 응용 프로그램에 푸시 알림을 보내려고했는데이 오류 ( ' "error": "MismatchSenderId"')가 발생했습니다. 두 번째 응용 프로그램이 다른 Firebase 프로젝트에 바인딩되어 있음을 이해했습니다google-services.json
. 서버 키가 다르기 때문에 요청을 다시 작성해야합니다.나는 변경
google-services.json
내가 대체 싶었 기 때문에, 응용 프로그램에서 테스트 와 중포 기지 프로젝트를 실제 . 올바른google-services.json
파일을 생성하고 요청을 변경했지만이 오류가 계속 발생했습니다 . 다음날 저절로 고쳐졌습니다. Firebase가 동기식으로 업데이트되지 않는 것 같습니다.
요청에 대한 서버 키를 얻으려면 https://console.firebase.google.com을 열고 적절한 프로젝트를 선택합니다.
그런 다음 요청에 붙여 넣으십시오.
대신 http://developers.google.com에서 생성 된 발신자 ID 및 API 키를 사용하세요 (먼저 Google 클라우드 메시징을 찾아 안내를 따르세요).
기본 Android에 사용하는 경우 AndroidMaifest.xml
파일을 확인하십시오 .
<meta-data
android:name="onesignal_google_project_number"
android:value="str:1234567890" />
<!-- its is correct. -->
대신
<meta-data
android:name="onesignal_google_project_number"
android:value="@string/google_project_number" />
도움이 되었기를 바랍니다 !!
참고 URL : https://stackoverflow.com/questions/11313342/why-do-i-get-mismatchsenderid-from-gcm-server-side
'Programing' 카테고리의 다른 글
장고는 매개 변수와 함께 redirect ()를 반환합니다. (0) | 2020.11.02 |
---|---|
함수 (* args)에 해시 전달 및 의미 (0) | 2020.11.02 |
--gtest_filter에서 여러 제외 필터를 지정하는 방법은 무엇입니까? (0) | 2020.11.02 |
C ++에서 파일의 MD5 해시를 얻는 방법은 무엇입니까? (0) | 2020.11.02 |
openCV에서 특정 픽셀 RGB 값에 액세스 (0) | 2020.11.02 |