Android推送通知-我的服务应该扩展GCMBaseIntentService还是IntentService
我试图创建的推送功能的基本架构是 1) 我会获取手机id并将其存储在我的数据库中 2) 只有当服务器上出现问题时,我才会尝试创建推送消息 因此,我不需要应用程序尝试调用服务器向其发送消息的部分。我想知道我应该在服务类中扩展什么,需要在服务类中实现什么方法 另外,我是否能够在不使用服务器的情况下获取设备id并将该信息发送到我的服务器 我正在使用谷歌云消息Android推送通知-我的服务应该扩展GCMBaseIntentService还是IntentService,android,Android,我试图创建的推送功能的基本架构是 1) 我会获取手机id并将其存储在我的数据库中 2) 只有当服务器上出现问题时,我才会尝试创建推送消息 因此,我不需要应用程序尝试调用服务器向其发送消息的部分。我想知道我应该在服务类中扩展什么,需要在服务类中实现什么方法 另外,我是否能够在不使用服务器的情况下获取设备id并将该信息发送到我的服务器 我正在使用谷歌云消息 谢谢 好的,要获取手机的注册ID,您需要在活动中执行以下操作: import com.google.android.gcm.GCMRe
谢谢 好的,要获取手机的注册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注册将包含在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将等于您的包名,您可以按照此操作。。它使用新的GoogleCloudMessagingAPI。是的,您应该扩展IntentService,因为其他服务现在已经不推荐了。您的问题很不清楚。让我们一次完成这一点。你说的手机id是什么意思?@Kevin Bradshaw我指的是我要向其发送推送通知的手机的唯一id。它是发出推送通知所需的id。这有助于让事情变得更清楚吗?:)谢谢,但是在第一次打开应用程序时,if/else会转到if块还是else块?我只是想弄清楚何时发送远程呼叫。编辑了代码以显示如何处理首次注册。按照此处的说明获取您的发件人ID