MismatchSenderId를받는 FCM


82

푸시 알림을 보내기 위해 Google FCM을 사용하는 애플리케이션이 있습니다.

사용자 그룹에 푸시 알림을 보낼 때 MismatchSenderId일부 사용자에 대한 응답을받습니다 . 하지만 모든 사용자는 똑같은 애플리케이션을 사용합니다. 일부 사용자는 어떻게 성공 응답을 받고 다른 사용자는 MismatchSenderId를 얻을 수 있습니까?

나는 많이 조사했고 FCM에 필요한 모든 전제 조건을 추가했는지 확인했습니다.

어떤 제안?

편집하다:

샘플 응답 :

{"multicast_id":5340432438815499122,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}

편집 2 :

다음은 서버 측 전송 코드 (PHP)입니다.

$fields = array
(
  'to' => $token,
  'data' => $data
);

$headers = array
(
  'Authorization: key=AIza**************************',
  'Content-Type: application/json'
);

$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send' );
curl_setopt( $ch,CURLOPT_POST, true );
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, true );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode($fields) );
curl_exec( $ch );
curl_close( $ch );

최신 정보:

SDK 업데이트로 문제가 해결 된 것 같습니다. 현재 최신 버전을 사용하고 있습니다 com.google.firebase:firebase-messaging:9.6.1. 더 이상 "MismatchSenderId"가 표시되지 않습니다.


3
MismatchSenderId는 클라이언트가 보내는 데 사용하는 서버와 다른 서버에 등록하고 있음을 의미합니다. 모든 고객이 동일한 프로젝트에 등록하고 있습니까? 또한 질문에 MismatchSenderId 응답을 포함 할 수 있습니까?
Arthur Thompson

예, 동일한 프로젝트, 동일한 애플리케이션, 동일한 서버 키.
TareK Khoury

이 메시지를 보낸 방법의 코드를 보여줄 수 있습니까? 나는 문제의 원인을 알 수 있습니다 ..
ANZ

3
@TareKhoury, 감사합니다. 가장 먼저. 사용 허가 키가 있는지 확인하십시오 Server Key(서버 탭에서 중포 기지 콘솔에서 볼 수 있습니다) 및하지 API_KEY에서 google-service.json. 둘째, 목적지를 올바르게 설정했는지 확인하십시오. 예를 들어 to" : "/topics/yourtopic"모든 장치에 메시지를 보내려는 경우 (먼저 해당 주제를 구독해야 함). 또는 특정 기기로 전송을 시도한 다음 기기 토큰을 입력해야합니다 (Firebase 서비스에서 처음 시작할 때 수신 됨)cec5gH04....92IyHrB2K
AnZ

3
지난 2 년 동안 문제를 해결 한 사람이 있습니까?
Dylanthepiguy

답변:


35

Firebase는 서버 키를 새 버전으로 업그레이드했습니다. 이전 키 대신 새 키를 사용하십시오.

설정-> 프로젝트 설정-> 클라우드 메시징 탭으로 이동하십시오.

여기에 이미지 설명 입력


서버 키 또는 레거시 서버 키를 사용하는 경우 차이가 없습니다
R15

23

이 해결책을 찾았습니다.

  • 먼저 서버 키가 정확하거나 AIzaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX와 같은 올바른지 확인합니다.
  • 그런 다음 79XXXXXXXX와 같은 발신자 ID도 확인했습니다.
  • 주요 문제는 알림을 보내야하는 device_ID (UDID) 였습니다 . 실제로 FCM 에서 Android 측에서 얻은 DeviceId는 GCM 과 다릅니다 . FCM 에서 GCM 생성 DeviceId 를 사용할 수 없습니다 .

당신은 나를 많이 도왔습니다. 앱 개발자에게 코드에 발신자 ID를 포함하도록 요청해야했는데 FCM API KEY가 작동했습니다. 감사합니다.
Luis Milanese

3
백엔드 및 Android 앱을 FCM으로 업그레이드 할 때 백엔드에서 GCM 토큰에 이미 등록 된 방법을 사용자에게 푸시 알림을 보내려면 어떻게해야합니까? ?
Pinkesh Darji

FCM 시스템은 이전 GCM 토큰을 지원합니다. developers.google.com/cloud-messaging/faq
Paras Diwan

안녕하세요. senderId는 어디에 두나요? 사용하지 않고 있으며 며칠 전에 알림을 보낼 수있었습니다. 사전 메이트 감사
voghDev

FCM API 광고 (사용하여 백 엔드에서 하이 @voghDev fcm.googleapis.com/fcm/send ) 전송 센더를 같은 헤더와 응용 프로그램 측에서 센더는 (DEVICE_ID)이 UDID 만드는 데 사용됩니다
나우 칸

15

이것은 나를 위해 일했습니다.

  • 현재 Android 프로젝트가 연결된 FIREBASE 프로젝트를 확인하고 해당 프로젝트의 서버 키를 사용 합니다.

다른 firebase 프로젝트 (예 : Project 2)의 서버 키를 사용하고있었습니다. 나는 내 안드로이드 프로젝트 (Say Project 1)와 연결된 것과 동일한 서버 키를 사용했으며 작동했습니다. 내 경험상 하나의 전체 Android 프로젝트에 하나의 firebase 앱을 사용하면 문제가 해결되는 것 같았습니다.


나는 같은 상황에 직면했다. Android 앱에 연결된 이전 프로젝트입니다. 그리고 새 프로젝트의 서버 키가 작동하지 않습니다 (Return error MismatchSenderId). 이전 프로젝트에서 Android 앱을 제거한 후 새 프로젝트의 새 서버 키가 작동했습니다.
vk26

11

제 경우에는 한 프로젝트에서 google-services.json을 사용하고 다른 프로젝트에서 서버 키를 사용하는 등 프로젝트 자격 증명을 잘못 착각했습니다.


8

그냥 참고로. 테스트중인 Android 앱이 최신 / 가장 큰 google-services.json 파일로 빌드되었고 FCM 콘솔에서 앱으로 보낼 수 있다고 맹세 했지만이 오류가 발생했습니다 . a를 수행 한 후 앱을 다시 빌드했으며 Clean Project이제 등록한 FCM 토큰을 사용하여 앱에 보낼 수 있습니다. 따라서 너무 오랫동안 벽에 머리를 치기 전에 깨끗한 재건을 시도하십시오.


이것은 나를위한 해결책이었습니다!
Gomino

6

이 문제를 해결하기 위해 몇 시간을 보냈습니다. 다른 FCM 계정 설정 (google-services.json)을 사용하여 토큰이 생성되고 다른 FCM 계정을 사용하여 알림이 설정되는 것을 확인했습니다. 둘 다 동기화했을 때 매력처럼 작동했습니다.


이것은 나에게도 일어났습니다. 휴대폰 용으로 생성 된 토큰이 올바른 빌드 환경 (dev / alpha / prod)인지 100 % 확인하십시오
ehacinom

4

senderIdFCM 콘솔의 프로젝트 번호와 다른 것을 발견하여
google-services.json을 다시 다운로드했고 모든 것이 잘 작동합니다.


4

아래 그림과 같이 올바른 키를 입력하여 문제가 해결되었습니다.

이 그림과 같은 서버 키 복사여기에 이미지 설명 입력

그리고이 코드를이 사진처럼 포스트맨에 복사하세요 여기에 이미지 설명 입력

그리고 몸은 이 그림처럼 줄입니다

여기에 이미지 설명 입력 노트:

  • 헤더의 서버 키 앞에 key = 를 추가해야합니다.
  • 헤더 키를 올바르게 입력했는지 확인하십시오 (Authorization = "key = ..."및 ContentType = "application / json").
  • 올바른 주소 ( https://fcm.googleapis.com/fcm/send 및 Post 방법)로 요청을 보냈습니다.

3
  • 모든 자격 증명을 교차 확인했습니다.

  • 새 서버 키 추가 및 이전 키 삭제

  • google-services.json을 다시 다운로드했습니다.

문제가 해결되지 않았습니다.

그런 다음 프로젝트를 정리 한 다음 프로젝트를 다시 빌드하면됩니다.


당신은 나의 하루를 저장합니다 : D
Tuan Luong

2

앱 (AndroidManifest의 라이브러리, 수신기 등)에서 모든 Parse 코드를 제거했는지 확인하세요. 간헐적으로 푸시 알림이 작동하지 않는 것을 발견했습니다. 내 관찰에 따르면 새로 설치하면 작동하지만 Play 스토어의 앱 업데이트는 작동하지 않습니다.

Parse 내부의 무언가가 FCM과 충돌한다고 생각합니다 (Parse는 GCM을 사용하므로 GCM과 FCM을 동시에 사용하는 것과 관련이 있다고 생각합니다). 모든 Parse 수신기와 라이브러리를 뜯어 내 자마자 모든 것이 잘 작동했습니다.


2

실제로이 문제에는 여러 가지 이유가 있습니다. 내 것은 잘못된 토큰이 전달 되었기 때문입니다. 한 앱에서 생성 된 동일한 토큰을 전달하고 다른 앱에서 동일한 토큰을 사용했습니다. 토큰이 업데이트되면 나를 위해 작동합니다.


2

fcm에서 발신자 ID가 일치하지 않는 경우이 오류를 제거합니다.

{"multicast_id":7751536172966571167,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}

오류가 발생했습니다.

  1. 그래서 먼저 FCM에서 Application을 등록해야합니다. 예 : MyDemoApplication

  2. 그 후 FCM은 서버 키, 즉 AIzaSyB9krC8mLHzO_TtECb5qg7NDZPxeG03jHU발신자 ID, 즉 346252831806이러한 형식 을 생성합니다 .

  3. Android Studio에서 프로젝트는 이러한 FCM 생성 프로젝트, 즉 MyDemoApplication에 연결됩니다.

  4. 그리고 가장 중요한 단계는 장치 토큰 또는 등록 ID에 필요합니다. 이러한 토큰은 Android Studio에서 생성되어야합니다.

  5. 그 후 웹 API 프로젝트에서 보낸 사람 ID 및 API 키를 사용하면 확실히 알림을 받게됩니다.


1

manifest.json에서 gcm_sender_id 를 확인 하세요 . 일치하지 않는 경우-맞지만 새 발신자 ID에 대해 새 구독자를 만들어야합니다. 기존 구독자가 중단됩니다.


1

"MismatchSenderId"응답에 따르면 이는 FireBase와 로컬 "google-services.json"간의 불일치이므로 두 매니페스트가 일치하는지 확인해야합니다.

FireBase 콘솔에서 "YourProject> Project OverView> Cloud Messaging"으로 이동하면 Android 프로젝트의 "google-services.json"과 일치해야하는 "SenderID"가 표시됩니다.

가장 좋은 방법은 "일반"탭에서 최종 json 파일을 다운로드하여 프로젝트에 배치하는 것입니다.


1

푸시 알림을 보내는 동안 동일한 오류가 발생했습니다. 업데이트 된 google-services.json 파일을 가져 와서 교체합니다. 나를 위해 일했습니다.


0

나는 같은 문제가 있었고 다음과 같이 수정했습니다.

  1. Google fcm 콘솔로 이동
  2. 앱 선택
  3. 왼쪽 메뉴에서 설정 아이콘 (표준 휠)을 찾습니다.
  4. 그것을 클릭하고 프로젝트 설정을 클릭 한 후
  5. 이제 서버 키를 복사하여 PHP에 붙여 넣으십시오.

짜잔 ...


0

firebase 초기화 업데이트는 나를 위해 작동합니다 ..

<script src="https://www.gstatic.com/firebasejs/4.6.2/firebase.js"></script>
 <script>
  // Initialize Firebase
  // TODO: Replace with your project's customized code snippet
  var config = {
    apiKey: "<API_KEY>",
    authDomain: "<PROJECT_ID>.firebaseapp.com",
    databaseURL: "https://<DATABASE_NAME>.firebaseio.com",
    storageBucket: "<BUCKET>.appspot.com",
    messagingSenderId: "<SENDER_ID>",
  };
  firebase.initializeApp(config);
</script>

0

나에게 문제는 내가 phonegap-plugin-pushin cordova를 사용 하고 phonegap 앱으로 앱을 테스트한다는 것입니다.

문제는이 플러그인의 어떤 이유로 든 phonegap 앱이이를 가로 채서 보낸 사람 ID에 관계없이 더미 등록 키를 반환한다는 것입니다.

따라서 작동하도록하려면 (모든 키가 올바른 한) 에뮬레이터 또는 USB를 통한 Android 에뮬레이션을 사용하여 프로그램을 다른 방식으로 테스트하는 것입니다. 그리고 당신의 키가 일치합니다.

바라건대 이것은 누군가의 시간을 절약 할 수 있기를 바랍니다.


0

당신은 아마 내가하던 일을하고있을 것입니다. GCM 토큰은 더 이상 FCM과 동일하지 않습니다. FCM 대신 GCM 토큰 ID를 가져 오는지 확인하십시오. FirebaseInstanceIdService를 재정의하고 올바른 ID를 얻었는지 확인하십시오. 한때는 똑같다고 생각했지만 지금은 그렇지 않습니다. 나는 테스트를 기록하고 보았다. 그렇게 한 후에 다른 사람들이 안전하다고 말하는 것처럼 google-services.json을 업데이트하십시오.


0

나는 이것에 며칠을 낭비했다.

제 경우에는이 블로그 를 따라 Postman을 사용하고 mismatchsenderid 오류를 얻었습니다. 이전에는을 받고 messaging/mismatched-credential있었고 사람들은 클라이언트 앱이 여러 프로젝트를 사용했다고보고했습니다.

그러나 저에게는 일대일, 웹 앱 및 프로젝트가 있습니다. 하지만ng serve 기본 포트 4200을 통해 모든 앱을 호스팅합니다. 따라서 개발중인 프로젝트 / 앱 쌍에 관계없이 항상 클라이언트 웹 앱에서 동일한 토큰을 얻습니다. AngularFireMessaging.requestToken이 토큰은 항상 처음에 생성 된 토큰이었습니다. 개발중인 Firebase 앱 실행

이 문제를 해결하기 위해 다른 포트에서 다른 앱 / 프로젝트를 시작하고 각 프로젝트에 대해 적절한 토큰을 얻습니다.


0

참고 : FCM 토큰의 첫 번째 부분 (이전 :) 이 잘 렸고 오류는MismatchSenderId

내 스크립트를 수정했고 이제 모든 것이 잘 작동합니다.


0

제 경우에는 누군가 Apple 개발 포털에서 내 앱에 대한 APN SSL 인증서를 삭제했습니다.

  • 새 인증서 (식별자 / 내 AppId / 푸시 알림 / 편집)를 만들어야했습니다.
  • 그런 다음 콘솔에서 Firebase 프로젝트로 업로드했습니다. 프로젝트 설정 / 클라우드 메시징 / iOS 앱 구성 / APN 인증서.

이것은 문제를 해결했습니다.


0

제 경우에는 매우 간단했습니다. 데이터베이스에서 잘못된 registrationId를 가져 왔습니다. 올바른 이드를 뽑은 후 작동했습니다.


0

내 react-native-node.js 프로젝트에서 동일한 문제가 발생했습니다. Android에서 알림을 보내고 싶었습니다. 모든 것이 설정되고 잘 작동합니다 (즉, node.js에서 알림을 보내고 안드로이드 장치에서 알림을받을 수있었습니다).

며칠 후 다른 firebase 계정을 사용해야했기 때문에 프로젝트의 android / app 폴더 에서 google-services.json 파일을 변경하고 프로젝트를 다시 빌드했습니다. 하지만 다시 한 번 서버에서 알림을 보내려고 할 때 오류가 발생했습니다.

{.............
  errorInfo: {
    code: 'messaging/mismatched-credential',
    message: 'SenderId mismatch'
  },
  codePrefix: 'messaging'
}

해결책:

위치의 XML 파일 -app / build / generated / res / google-services / {build_type} /values/values.xml 이 새로운 google-services.json 에 따라 자동으로 업데이트되지 않았습니다 . 여전히 이전 google-services.json 파일 의 이전 값으로 구성되었습니다 . values.xml 파일을 수동으로 변경 해야했습니다.

이것이 app / build / generated / res / google-services / {build_type} /values/values.xml 파일의 모습입니다 ( google-services.json 에 따라 자동으로 업데이트되지 않으면 수동으로 변경해야 함 )-

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <! -- Present in all applications -->
    <string name="google_app_id" translatable="false">1:1035469437089:android:73a4fb8297b2cd4f</string>

    <! -- Present in applications with the appropriate services configured -->
    <string name="gcm_defaultSenderId" translatable="false">1035469437089</string>
    <string name="default_web_client_id" translatable="false">337894902146-e4uksm38sne0bqrj6uvkbo4oiu4hvigl.apps.googleusercontent.com</string>
    <string name="ga_trackingId" translatable="false">UA-65557217-3</string>
    <string name="firebase_database_url" translatable="false">https://example-url.firebaseio.com</string>
    <string name="google_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string>
    <string name="google_crash_reporting_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string>
    <string name="project_id" translatable="false">mydemoapp</string>

</resources> 

다음 링크를 참조 할 수 있습니다.

  1. https://firebase.google.com/docs/projects/multiprojects
  2. JSON 파일 처리 : https://developers.google.com/android/guides/google-services-plugin#processing_the_json_file .

0

"MismatchSenderId"상태가 된 이유를 파악하는 데 큰 어려움이있었습니다. 루트에 gms 종속성을 추가 build.gradle했지만 오류가 실제로 앱에 gms 플러그인을 적용하지 않았습니다.build.gradle .

앱에이 줄 build.gradle이없는 경우 알림이 작동하지 않는 이유 일 수 있습니다. apply plugin: 'com.google.gms.google-services'


0

GCM에서 기기 ID가 생성되면 새 서버 키를 사용하여 FCM을 통해 푸시 메시지를 보낼 수 없으며 이전 API 키를 사용해야합니다.


0

우편 배달부에서 fcm api "https://fcm.googleapis.com/fcm/send"를 사용하여 알림을 보내려고했습니다. 서버 키가 정상이고 토큰이 잘 붙여졌지만 여전히 "MismatchSenderId"오류가 발생했습니다.

그런 다음 Android 측의 gradle 파일에 다음 종속성을 도입했습니다.

implementation platform('com.google.firebase:firebase-bom:25.12.0') 

기기에서 알림을 받기 시작했습니다.


-3

나는 또한 같은 오류가 발생합니다. api_key를 복사하고 google_services.json으로 변경했습니다. 그 후 그것은 나를 위해 작동

"api_key": [
        {
          "current_key": "********************"
        }
      ],

이 시도


-6

firebase 콘솔 console.firebase.google.com/project/project-XXXXXXXXXXXXX/settings/cloudmessaging설정 섹션 에서 사용할 수있는 AIzaSyDiTEVq4Li1pj7IyraRlyRU9adc-49-KVY 와 같은 서버 키가 있습니다. .

코드와 함께 올바른 를 지정하고 다시 시도하십시오.


8
올바른 서버 키를 사용하고 있습니다. 그렇지 않은 경우 모든 요청에 ​​대해 "MismatchSenderId"가 표시되고 질문에서 언급 한 "일부"에 대해서는 표시되지 않습니다.
TareK Khoury
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.