마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

[안드로이드] gcm 질문좀 드리겠습니다

0 추천
public class MainActivity extends Activity {
       private String TAG = "** pushAndroidActivity **";
       private TextView mDisplay;
       @Override
       public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              GCMRegistrar.checkDevice(this);
              GCMRegistrar.checkManifest(this);
              setContentView(R.layout.main);
              mDisplay = (TextView) findViewById(R.id.textView1);
              final String regId = GCMRegistrar.getRegistrationId(this);
              Log.i(TAG, "registration id =====  "+regId);
              Log.d("asas","registration id =====  "+regId);
              if ("".equals(regId)) {
                     GCMRegistrar.register(this, SENDER_ID);
              } else {
                     Log.v(TAG, "Already registered");
                     Log.d("asas","Already registered");
              }
              mDisplay.setText(regId);
       }     
       @Override
       protected void onPause() {
              super.onPause();
              GCMRegistrar.unregister(this);
       }
       protected void onDestroy() {
              // TODO Auto-generated method stub
              super.onDestroy();
              GCMRegistrar.onDestroy(this);
       }
}

코드는 위와 같습니다.
1. 이렇게 했을경우 regid를 언제는 1초도 안걸려서 받아오고 언제는 5~10초 이상 걸릴때도 있습니다. 어떤 문제때문에 그렇게 되는지 모르겠습니다. < 이 부분은 해결이 아직 안됬습니다...

2. resetting backoff for 왜 발생하는지 이유를 모르겠습니다. 검색결과 manifest에 프로젝트 이름을 설정안했을때 발생한다고 들었는데, 저거 발생하더라도 register id가 얻어지는 것을 확인했습니다...
Log를 보면 다음과 같습니다
08-30 20:51:20.745: I/** pushAndroidActivity **(9215): registration id =====&nbsp;
08-30 20:51:20.745: D/asas(9215): registration id =====&nbsp;
08-30 20:51:20.745: V/GCMRegistrar(9215): Registering receiver
08-30 20:51:20.755: D/GCMRegistrar(9215): resetting backoff for com.example.gcm << resetting backoff for <패키지명>이 떴는데 manifest에서 패키지명을 통해 설정했습니다...
08-30 20:51:20.755: V/GCMRegistrar(9215): Registering app com.example.gcm of senders <프로젝트숫자>
08-30 20:51:20.896: I/ActivityManager(9215): Timeline: Activity_idle id: android.os.BinderProxy@4294c218 time:41567456
08-30 20:51:21.226: V/GCMBroadcastReceiver(9215): onReceive: com.google.android.c2dm.intent.REGISTRATION
08-30 20:51:21.226: V/GCMBroadcastReceiver(9215): GCM IntentService class: com.example.gcm.GCMIntentService
08-30 20:51:21.226: V/GCMBaseIntentService(9215): Acquiring wakelock
08-30 20:51:21.236: D/GCMBaseIntentService(9215): handleRegistration: registrationId = APA91bFNnVrqRFfX-M8j_ebp4lHxeq4y59cDfSr95pztmAwjeurMRLb1MLHwq3vD6r0csCG2SK0Nm5zwE08fKf7QDN1CD68d7RioltXv71k54iNyrZj_IXSbiffKLyRmQ0FBJLTA85e9BnL4QNqh_iZoP5AmdBqJLg
08-30 20:51:21.256: D/asas(9215): Device registered: regId = APA91bFNnVrqRFfX-M8j_ebp4lHxeq4y59cDfSr95pztmAwjeurMRLb1MLHwq3vD6r0csCG2SK0Nm5zwE08fKf7QDN1CD68d7RioltXv71k54iNyrZj_IXSbiffKLyRmQ0FBJLTA85e9h_iZoP5AmdBqJLg
08-30 20:51:21.256: D/asas(9215): Device registered: regId = APA91bFNnVrqRFfX-M8j_ebp4lHxeq4y59cDfSr95pztmAwjeurMRLb1MLHwq3vD6r0csCG2SK0Nm5zwE08fKf7QDN1CD68d7RioltXv71k54iNyrZj_IXSbiffKLyRmQ0FBJLTA85e9h_iZoP5AmdBqJLg
08-30 20:51:21.256: D/asas(9215): Device registered: regId = APA91bFNnVrqRFfX-M8j_ebp4lHxeq4y59cDfSr95pztmAwjeurMRLb1MLHwq3vD6r0csCG2SK0Nm5zwE08fKf7QDN1CD68d7RioltXv71k54iNyrZj_IXSbiffKLyRmQ0FBJLTA85e9h_iZoP5AmdBqJLg, error = null, unregistered = null
08-30 20:51:21.236: D/GCMRegistrar(9215): resetting backoff for com.example.gcm
08-30 20:51:21.246: V/GCMRegistrar(9215): Saving regId on app version 1
08-30 20:51:21.256: I/===GCMIntentService===(9215): Device registered: regId = APA91bFNnVrqRFfX-M8j_ebp4lHxeq4y59cDfSr95pztmAwjeurMRLb1MLHwq3vD6r0csCG2SK0Nm5zwE08fKf7QDN1CD68d7RioltXv71k54iNyrZj_IXSbiffKLyRmQ0FBJLTA85e9BnL4QNqh_iZoP5AmdBqJLg
08-30 20:51:21.256: D/asas(9215): Device registered: regId = APA91bFNnVrqRFfX-M8j_ebp4lHxeq4y59cDfSr95pztmAwjeurMRLb1MLHwq3vD6r0csCG2SK0Nm5zwE08fKf7QDN1CD68d7RioltXv71k54iNyrZj_IXSbiffKLyRmQ0FBJLTA85e9h_iZoP5AmdBqJLg
08-30 20:51:21.256: V/GCMBaseIntentService(9215): Releasing wakelock

            
manifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
             package="com.example.gcm"
             android:versionCode="1"
             android:versionName="1.0" >

             <uses-sdk
                          android:minSdkVersion="8"
                          android:targetSdkVersion="16" />
             <permission
                          android:name="com.example.gcm.permission.C2D_MESSAGE"
                          android:protectionLevel="signature" />
             <uses-permission android:name="com.example.gcm.permission.C2D_MESSAGE" />
             <uses-permission android:name="android.permission.GET_ACCOUNTS" />
             <uses-permission android:name="android.permission.WAKE_LOCK" />
             <uses-permission android:name="android.permission.INTERNET" />
             <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

             <application
                          android:icon="@drawable/ic_launcher"
                          android:label="@string/app_name" >
                          <activity
                                       android:name=".MainActivity"
                                       android:label="@string/app_name" >
                                       <intent-filter>
                                                    <action android:name="android.intent.action.MAIN" />
                                                    <category android:name="android.intent.category.LAUNCHER" />
                                       </intent-filter>
                          </activity>
                          <receiver
                                       android:name="com.google.android.gcm.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.example.gcm" />
                                       </intent-filter>
                          </receiver>
                          <service android:name=".GCMIntentService" />
             </application>
</manifest>
세이바라 (120 포인트) 님이 2014년 8월 31일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...