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 =====
08-30 20:51:20.745: D/asas(9215): registration id =====
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>