2015-10-28 19 views
9

benim android app push bildirimleri uygulamaya çalışıyorum ama henüz jetonu alma noktasında sıkışıp kaldım.Android GCM InstanceId.getToken() -> java.io.IOException: ZAMAN AŞIMI

En son "InstanceID" yöntemini kullanıyorum ve bazı örnekleri takip ediyorum. Manifest'ime izinleri ve hizmetleri ekledim (ve bunlar için de kodu ekledim) ama ne yaparsam yapayım, her zaman "java.io.IOException: TIMEOUT" hatasını alıyorum. Farklı telefonlar, wifi, Lte ve 3G denedim ama hiçbir şey değişecek gibi görünmüyor.

"SERVICE_NOT_AVAILABLE" diyerek hatayı hiç yapmadım. Sadece bunlara takıldım.

Manifest

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
<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" /> 
     <category android:name="de.company.appname" /> 
    </intent-filter> 
</receiver> 
<service 
    android:name="de.company.gcm.ModuleGCMListenerService" 
    android:exported="false" > 
    <intent-filter> 
    <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
    </intent-filter> 
</service> 
<service 
    android:name="de.company.gcm.ModuleInstanceIDListenerService" 
    android:exported="false"> 
    <intent-filter> 
    <action android:name="com.google.android.gms.iid.InstanceID"/> 
    </intent-filter> 
</service> 

ınstanceıd çağrı:

try 
{ 
    token = instanceID.getToken(
      senderId, 
      GoogleCloudMessaging.INSTANCE_ID_SCOPE, 
      null); 
} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
} 

instanceID.getId() çalışıyor.

W/InstanceID/Rpc: No response android.os.Condi[email protected] 
W/System.err: java.io.IOException: TIMEOUT 
W/System.err: at com.google.android.gms.iid.zzc.zzb(Unknown Source) 
W/System.err: at com.google.android.gms.iid.zzc.zza(Unknown Source) 
W/System.err: at com.google.android.gms.iid.InstanceID.zzc(Unknown Source) 
W/System.err: at com.google.android.gms.iid.InstanceID.getToken(Unknown Source) 
+2

alın göz kullanmak zorunda kaldı InstanceID.getToken() 'https://github.com/google/gcm/blob/399e88c1ef5bb95395b6392f9061e45b2fb5d49a/samples/android/gcm-demo/src/main/java/com/google/android/gcm/demo ([buradan] olduğu /logic/InstanceIdHelper.java). – bjiang

+0

Teşekkürler, tüm google örneklerini ve diğer birkaç sayfayı zaten geçtim. Hiçbiri bana yanlış ne yapıyorum diye bir ipucu vermedi. – Benni

+0

Sadece repo'yu klonladınız ve IDE'nizde kodunuz olmadan denediniz mi? Bunu bir deneyin – bjiang

cevap

15

Sonunda, kodda aynı konumda benzer hatalar ararken sorunumu çözdüm. Bu durumda hata "MAIN_THREAD" olarak

New GCM API Register Unknown Source Error

gerçekten biraz daha açıktır. InstanceId.getToken() Ana Konu denilen olamaz çünkü

Yani oldu. Google Github Örnekler önerildiği gibi new AsyncTask<Void, Void, Void>() yöntemle işe yaramadı rağmen

.

ben [burada] Bu Repo (https://github.com/google/gcm/tree/master/samples/android) ve `ilişkin kaynağında

new Thread(new Runnable() { 
    public void run() { 
     //code 
    } 
}).start(); 
+1

Çalıştı. Teşekkürler –

+0

AsyncTask doInBackground yönteminde çalışması gerekir ... – Rohan

+0

Farketmez İşlem Ana Başlığın dışında olması gerekiyor, Async veya yeni Thread olabilir – Sniper

İlgili konular