Google Cloud Messaging внутри Knox. Как получить сообщение?
У меня большая проблема с получением сообщения от GCM внутри Knox моим приложением. То же приложение за пределами Knox получает сообщения без каких-либо проблем. Это же приложение регистрируется в GCM как снаружи, так и внутри. Почему GCM не работает внутри Knox? Что нужно сделать, чтобы получить сообщение GCM внутри Knox?
Device: Samsung S5
Samsung Knox version: 2.3
Google Play Services: 8.4.89
1 ответ
ОК, я нашел решение сам. Проблема была с регистрацией в сервисе GCM.
Я использовал код для регистрации из руководства GCM ( https://developers.google.com/cloud-messaging/android/start):
public class RegistrationIntentService extends IntentService {
@Override
public void onHandleIntent(Intent intent) {
// ...
InstanceID instanceID = InstanceID.getInstance(this);
String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
// ...
}
}
На самом деле это работало хорошо. В Android и Knox токен был получен, как и ожидалось. Но о Ноксе не было никакого сообщения от GCM. После просмотра различных приложений я использовал другой код для регистрации:
public class RegistrationIntentService extends IntentService {
@Override
public void onHandleIntent(Intent intent) {
// ...
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
String token = gcm.register(getString(R.string.gcm_defaultSenderId));
// ...
}
}
... и волшебным образом это было. Надеюсь, это будет кому-нибудь полезно.