0

到目前为止,我一直在开发一个没有问题的 android 应用程序。上周一切正常,但今天我尝试注册到 GCM 服务器,我得到了一个 Service_not_available。我已经在网上搜索了可能是什么原因,因为它上周有效,但仍然没有找到解决方案。我在 android 开发人员中使用来自 GCM 服务器的示例。这是我的 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 台设备,但都没有运气

4

2 回答 2

0

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

那是我的 2 美分给你的问题。

于 2013-09-23T15:47:49.790 回答
0

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

于 2013-09-24T23:31:50.980 回答