Я реализую push-уведомления, но при вызове getToken я получаю исключение TIMEOUT.GCM getToken() отправляет java.io.IOException: TIMEOUT
Я установил приложение для GCM here, а SENDER_ID - именно тот, который был предоставлен. Кроме того, ключ сервера API был сохранен на внутренней стороне.
Есть ли ограниченное количество запросов getToken? Сначала у меня не было никаких проблем при тестировании push-уведомлений.
new AsyncTask<Void, Void, Void>(){
@Override
protected Void doInBackground(Void... params) {
try {
InstanceID instance = InstanceID.getInstance(mContext);
String registrationId = instance.getToken(Constants.GCM_SENDER_ID,
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
SharedPreferences sp = mContext.getSharedPreferences(Constants.TOKEN_DATA, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putString(Constants.REGISTRATION_ID, registrationId);
editor.commit();
NotificationsRegister.getInstance(mContext).register(registrationId);
} catch(IOException e) {
e.printStackTrace();
}
return null;
}
}.execute();
Android Manifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myexample" >
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET"/>
<permission android:name="com.myexample.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.myexample.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
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="com.myexample" />
</intent-filter>
</receiver>
<service
android:name=".helper.TutoriaGcmListenerService"
android:exported="false" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<service
android:name=".helper.TutoriaInstanceIDListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID"/>
</intent-filter>
</service>
...
Зависимости добавлен в build.gradle Модуля:
- применять плагин: 'com.google.gms.google-услуги'
- компиляции ' com.google.android.gms: play-services-gcm: 7.5. + '
Зависимости добавлен в build.gradle проекта:
- 'com.google.gms путь к классам: Google-услуги: 1.3.0-beta1'
делать вам не нужно разрешение INTERNET в манифесте? – muratgu
У меня было это с самого начала, но я забыл добавить его, когда редактировал манифест. Я обновил манифест – blavi
Может быть проблема с вашей сетью (брандмауэр, может быть?), Но это поможет увидеть всю трассировку стека. – Koh