0

我试图创建的推送功能的基本架构是

1)我会得到电话号码并将其存储在我的数据库中

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

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

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

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

谢谢!

4

2 回答 2

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 中

你将在你的清单中需要这个:

<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 将等于您的包名称

于 2012-10-16T20:35:55.170 回答
0

您可以按照本教程.. 它使用新的 GooglecloudMessaging API。是的,您应该扩展IntentService ,因为现在不推荐使用其他的。

于 2013-12-10T11:01:43.840 回答