2013-03-26 3 views
8

나는 신비한 문제에 잠시 머물러 있습니다. 내 안드로이드 앱에서 GCM을 구현했지만 INVALID_SENDER 오류가 발생합니다.GCM 잘못된 발신자 오류

  • 내 SENDER_ID는 (는) Google 프로젝트 URL의 ID입니다.
  • 안드로이드 푸시 알림은

에 대한 이상한 것은 내가 이미 알림을 보낼 수있는 등록 ID를 가지고있다 있습니다. 그래서 내 콘솔은 다음과 같습니다 다음에서 onCreate 내부

03-26 09:39:20.233: I/<test>(19761): Already registered: APA91bG6- O3OnZt50EAjYvJ5KETv3qAlPOn2SfOPXez7SLAmaAOkHTN6EMDJb91gFIWkftZkJiub6UoEk4O- WQP7kk2oZGQjZ1VCZZS0WddQtjFaCfYfZfb7SEw3IS1sd4caJcdZE4LA1F0hxzc7Ss1UiYHXX-XXXX 
03-26 09:48:23.522: I/<test>(19925): GCMIntentService 
03-26 09:39:20.670: I/<test>(19761): on Error INVALID_SENDER 

:

GCMRegistrar.checkDevice(this); 
GCMRegistrar.checkManifest(this); 
final String regId = GCMRegistrar.getRegistrationId(this); 
if (regId.equals("")) { 
    Log.i("<test>", "registering"); 
     GCMRegistrar.register(this, "2194354949XX"); 
} else { 
    Log.i("<test>", "Already registered: " + regId); 
} 

브로드 캐스트 리시버 :

public class GCMBroadcastReceiver extends com.google.android.gcm.GCMBroadcastReceiver{ 
    @Override 
    protected String getGCMIntentServiceClassName(Context context){ 
     return "be.XXX.XXX.system.GCMIntentService"; 
    } 
} 

GCMIntentService :

,451,515,
public class GCMIntentService extends GCMBaseIntentService { 
    @Override 
    protected void onError(Context arg0, String errorId) { 
     Log.i("<test>","on Error " + errorId); 
    } 

    @Override 
    protected void onMessage(Context arg0, Intent intent) { 
     Log.i("<test>","onMessage " + intent.getExtras().toString()); 
    } 

    @Override 
    protected void onRegistered(Context arg0, String regId) { 
     Log.i("<test>","Registration id: " + regId); 
    } 

    @Override 
    protected void onUnregistered(Context arg0, String regId) { 
     Log.i("<test>","onUnregistered " + regId); 
    } 

    public GCMIntentService() { 
     super("2194354949XX"); 
     Log.i("<test>","GCMIntentService "); 
    } 
} 

매니페스트 :

<permission 
    android:name="com.XX.XX.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 
<uses-permission android:name="com.smstiming.hezemans.permission.C2D_MESSAGE" /> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.VIBRATE" /> 



<receiver android:name="be.XX.XX.system.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" > 
     <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
      <category android:name="com.smstiming.hezemans" /> 
     </intent-filter> 
    </receiver> 

<service android:name="be.XX.XX.system.GCMIntentService" /> 
+1

'03-26 11 : 23 : 38.704 : V/GCMRegistrar (1389) : 발신자의 your.packagename.com 등록 XXXXXX'은 (는) Google에 보내는 실제 발신자입니다. – madlymad

+0

당신은 올바른 방향으로 저를 도왔습니다. 이제 해결되었습니다. 이전 C2DM 버전을 끄는 걸 잊었습니다. -_- .. – Zillan

답변

0

는 C2DM 서비스를 해제하는 잊어 버렸습니다. 바보 같은 ..

+1

이것은 질문에 대한 답변을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. – fedorqui

+0

나는 저자 다. :-) – Zillan

+4

C2DM 서비스를 끄는 것을 잊어서 무엇을 의미하는지 명확히 할 수 있습니까? 그것을 끄기 위해 당신은 무엇을해야만 했습니까? –

0

어쩌면 귀하의 senderID 사실이 아닙니다. GCMIntentService 클래스의 생성자를 만들고 super(<SenderId>)을 호출해야합니다.

10

마지막으로이 문제가 발생했습니다. 실수로 '프로젝트 번호'대신 '프로젝트 ID'를 사용하려고 했습니까? Google 개발자 콘솔은 개요 페이지에서 둘 모두를 제공하므로 올바른 정보를 사용하고 있는지 확인하십시오.