SERVICE_NOT_AVAILABLE GCM android

时间:2013-09-23 15:30:04

标签: android eclipse google-cloud-messaging

到目前为止,我一直在开发一个没有问题的Android应用程序。上周一切正常,但今天我尝试注册到GCM服务器,我得到了Service_not_available。 我在网上搜索了可能是什么原因,因为它上周工作,仍然没有找到解决方案。我正在使用Android开发人员中的GCM Server示例。 这是我的AndroidManifest.xml

<permission
    android:name="com.testing.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />

<uses-permission android:name="com.testing.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
<uses-permission android:name="android.permission.VIBRATE" >
</uses-permission>
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application
    android:allowBackup="true"
    android:icon="@drawable/icono_aplicacion"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:screenOrientation="portrait"
        android:name="com.testing.MainActivity"
        android:label="@string/app_name"
        android:windowSoftInputMode="stateHidden" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:screenOrientation="portrait"
        android:name="com.testing.Inicio"
        android:windowSoftInputMode="stateHidden" >
    </activity>

    <receiver
        android:name="com.testing.GCMBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />

            <category android:name="com.testing" />
        </intent-filter>
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

            <category android:name="com.testing" />
        </intent-filter>
    </receiver>

    <service android:name="com.testing.GCMIntentService" />

,当我打电话时,应用程序会抛出异常。

 String regid = gcm.register(SENDER_ID);

任何想法如何解决这个问题?我已经尝试了4台没有运气的设备

2 个答案:

答案 0 :(得分:0)

SERVICE_NOT_AVAILABLE可能意味着您的设备无法读取响应或服务器中有500/503。您可以尝试进行指数退避并再次重试。您已经拥有"com.google.android.c2dm.intent.REGISTRATION",因此我假设您正在处理BroadCastReceiver中ID的刷新。同时检查您是否已从设备登录Google。您当然需要有效的Google帐户才能使用该服务。如果您更改了密码,只需检查是否已登录。还有一个类似的bug report尚未解决。跟踪它。

这是我的2美分问题。

答案 1 :(得分:0)

您是否有机会在调用gcm.register()之前设置断点?这将导致问题,因为设备时间将与gcm服务器不同步并导致调用失败。