Исключение GcmPubSub INVALID_PARAMETERSAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Исключение GcmPubSub INVALID_PARAMETERS

Сообщение Anonymous »

Я внедрил GCM в свое приложение. Но несколько выпусков назад он перестал получать сообщения от gcm. Когда я отправляю сообщение через http-сообщение, Google говорит «InvalidRegistration».
Расследование показывает, что проблема заключается в методе subscribeTopics(), который вызывает INVALID_PARAMETERS в последних версиях. Код:
RegistrationIntentService.java

Код: Выделить всё

private void subscribeTopics(String token) throws IOException {
for (String topic : TOPICS) {
GcmPubSub pubSub = GcmPubSub.getInstance(RegApp.getContext());
try {
Log.i("KK_Reg", "Token to pubsub " + token);
pubSub.subscribe(token, "/topics/" + topic, null);
Log.i("KK_Reg", "PubSub subscribed");
} catch (java.io.IOException ex) {
Log.e("KK_Reg", "Subscribe topics error");
Log.e("KK_Reg", ex.toString());
}
}
}
Ниже показана разница между рабочими и неудачными выпусками:

Код: Выделить всё

--- failed release/RegistrationIntentService.java
+++ working release/RegistrationIntentService.java
@@ -54,7 +54,8 @@
public class RegistrationIntentService extends IntentService {

private static final String TAG = "RegIntentService";
-    private static final String[] TOPICS = {"ru-konvent-reg-reg-all"};
+    private static final Object VTAG = new Object();
+    private static final String[] TOPICS = {"all"};

private static final String gcm_reg_url;

@@ -85,11 +86,11 @@
Log.i(TAG, "GCM Registration Token: " + token);
local_token = token;

-                RegApp.setGcmToken(local_token);
+                RegApp.setGcmToken(token);
RegApp.sendRegistrationToServer();

// Subscribe to topic channels
-                subscribeTopics(local_token);
+                subscribeTopics(token);

// You should store a boolean that indicates whether the generated token has been
// sent to your server. If the boolean is false, send the token to your server,
@@ -120,15 +121,8 @@
// [START subscribe_topics]
private void subscribeTopics(String token) throws IOException {
for (String topic : TOPICS) {
-            GcmPubSub pubSub = GcmPubSub.getInstance(RegApp.getContext());
-            try {
-                Log.i("KK_Reg", "Token to pubsub " + token);
-                pubSub.subscribe(token, "/topics/" + topic, null);
-                Log.i("KK_Reg", "PubSub subscribed");
-            } catch (java.io.IOException ex) {
-                Log.e("KK_Reg", "Subscribe topics error");
-                Log.e("KK_Reg", ex.toString());
-            }
+            GcmPubSub pubSub = GcmPubSub.getInstance(this);
+            pubSub.subscribe(token, "/topics/" + topic, null);
}
}
// [END subscribe_topics]
Определенно, я не могу себе представить изменения, которые приводят к сбою кода. Пожалуйста, помогите.

Подробнее здесь: https://stackoverflow.com/questions/330 ... -exception
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»