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));

        // ...
    }
}

... и волшебным образом это было. Надеюсь, это будет кому-нибудь полезно.


Другие вопросы по тегам