Dostaję usługę SERVICE NOT AVAILABLE podczas rejestracji GCM.Rejestracja GCM: SERWIS NIEDOSTĘPNY w sieci komórkowej
Dziwne zachowanie polega na tym, że kod działa poprawnie, gdy urządzenie jest podłączone do sieci Wi-Fi. Fails prawie zawsze (90% razy), gdy jest w sieci komórkowej.
Internet na komórkowej transmisji danych działa dobrze, a inne operacje serwera działają, choć są nieco wolniejsze w porównaniu do Wi-Fi.
Próbowałem dodać prostą pętlę (nie wykładniczą), aby kontynuować próbę po okresie snu, ale bez powodzenia.
Moment Przełączam Wifi na operację (rejestracja GCM) kończy się sukcesem.
Proszę o pomoc.
**** Aktualizuj Więcej informacji ** **: Przetestowałem GCM Demo na moim urządzeniu i ma on ten sam problem. Brak danych mobilnych, działa dobrze na Wi-Fi. Urządzenie, którego awarią jest Uwaga 3, docelową wersją jest 4.4.2. dziwo sam kod działa poprawnie na innym urządzeniu (wersja 2.3.6)
GCM Rejestracji
try {
String sDeviceID=null;
if (checkPlayServices()) {
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context);
sDeviceID = getRegistrationId(context);
if (sDeviceID==null) {
for(int i=0;i<60;i++){
try{
sDeviceID= gcm.register(SENDER_ID);
break;
}catch(IOException e){
Thread.sleep(2000);
continue;
}
}
// Persist the regID - no need to register again.
storeRegistrationId(context, sDeviceID);
}
sDeviceID = getRegistrationId(context);
if (sDeviceID==null) {
error=true;
throw new Exception("GCM Error");
}
Manifest XML
<!-- Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<!-- Receives the registration id. -->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.planetapp.schoolink" />
</intent-filter>
</receiver>
<service android:name="com.planetapp.schoolink.GCMIntentService" />
Broadcast Receiver
public class GCMBroadcastReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("++++++++++++ON RECEIVE");
String regId = intent.getExtras().getString("registration_id");
if(regId != null && !regId.equals("")) {
/* Do what ever you want with the regId eg. send it to your server */
System.out.println("++++++++++++ID RECEIVED++++++++++++"+regId);
}
}
}
korzystanie ten link http: //przepełnienie stosu.com/questions/17188982/how-to-fix-google-cloud-messaging-registration-error-service-not-available – Yogendra
Problem został rozwiązany. W moim telefonie komórkowym w "Usługach Google" ustawiono opcję "Ogranicz dane w tle". Z tego powodu "Usługi Google Framework" lub "Usługi Google Play" nie były dostępne po wyłączeniu sieci Wi-Fi. Kiedy usunąłem ograniczenie, zacząłem działać dobrze! – Mahesh
@Mahesh Mam Ograniczam dane w tle niezaznaczone, ale wciąż napotykam ten sam problem, co zgłoszony. Jeśli mam rację, mam na myśli ustawienia> Użycie danych> menu opcji> Ogranicz dane w tle. – Gem