Android推送通知 - 我的服务应该扩展GCMBaseIntentService还是IntentService

时间:2012-10-16 19:47:28

标签: android

我想要创建的推送功能的基本架构是

1)我会得到手机ID并将其存储在我的数据库中

2)只有当服务器上发生了某些事情时,我才会尝试创建推送消息

所以我不需要应用程序尝试调用服务器向其发送消息的部分。我想知道我应该在Service类中扩展什么以及我需要实现哪些方法。

此外,我是否能够获取设备ID并将该信息发送到我的服务器而不使用服务器?

我正在使用Google云消息传递。

谢谢!

2 个答案:

答案 0 :(得分:1)

好的,要获取手机的注册ID,您需要在活动中执行以下操作:

     import com.google.android.gcm.GCMRegistrar;
    private final static String SENDER_ID = "0001234567" // API Key, see comments;

    public class myActivity extends Activity {

        @Override
        public void onCreate(Bundle savedInstanceState) 
        {

            GCMRegistrar.checkDevice(this);
            GCMRegistrar.checkManifest(this);
            regId = GCMRegistrar.getRegistrationId(this);
 if (regId.equals("")) 
        {
             GCMRegistrar.register(this, SENDER_ID);
             Log.i(TAG,"registered a new ID");
        } 
        else 
        {
            Log.i(TAG,"Already Registered");
        }

您的google reg将包含在regId

你需要在你的Manifest中使用它:

<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="my.namespace" />
        </intent-filter>
    </receiver>

其中my.namespace将等于您的包名称

答案 1 :(得分:0)

您可以关注此tutorial ..它使用新的GooglecloudMessaging API。是的,你应该扩展 IntentService ,因为现在不推荐使用其他的。