Programing

GCM 서버 측에서 "MismatchSenderId"를 얻는 이유는 무엇입니까?

crosscheck 2020. 11. 2. 07:39
반응형

GCM 서버 측에서 "MismatchSenderId"를 얻는 이유는 무엇입니까?


내 Android 앱용 푸시 서비스를 만들려고하는데이 문제에 대한 Google GCM의 문서와 예제를 따릅니다.

Android 앱을 등록 / 등록 취소 할 수 있습니다. 내 서버 측에서 하나의 구독이 등록되어 있음을 알 수 있지만 서버에서 Android 앱으로 메시지를 보내려고 할 때 항상 다음 오류가 발생합니다.

장치 # 0에 메시지 보내기 오류 : MismatchSenderId

내 Android 앱의 경우 SENDER_ID = 200000000001을 사용합니다.

그리고 Google에서 말하는 것처럼 내 서버 측에서는 API_KEY = AIzxxxxxxxxxxxxxxxxXxxXxxXxxxXXXXXxxxxs를 사용합니다.

나는이 문서를 따랐다.

http://developer.android.com/guide/google/gcm/demo.html

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 콘솔에서 새로 생성하세요. 두 가지 경우에이 오류가 발생했습니다.

  1. 테스트 애플리케이션 (올바른 google-services.json파일 포함) 과 함께 테스트 Firebase 프로젝트를 사용했습니다 . 그런 다음 다른 응용 프로그램에 푸시 알림을 보내려고했는데이 오류 ( ' "error": "MismatchSenderId"')가 발생했습니다. 두 번째 응용 프로그램이 다른 Firebase 프로젝트에 바인딩되어 있음을 이해했습니다 google-services.json. 서버 키가 다르기 때문에 요청을 다시 작성해야합니다.

  2. 나는 변경 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

반응형