gpt4 book ai didi

java - 安卓 GCM InstanceId.getToken() -> java.io.IOException : TIMEOUT

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:26:31 24 4
gpt4 key购买 nike

我正在尝试在我的 Android 应用程序中实现推送通知,但我目前卡在了接收 token 的阶段。

我正在使用“InstanceID”的最新方法,并遵循了一些示例。我已经将权限和服务添加到我的 list 中(并为它们添加了代码)但是无论我尝试什么,我总是得到“java.io.IOException:TIMEOUT”错误。我尝试了不同的手机、wifi、Lte 和 3G,但似乎没有任何改变。

我从未遇到过“SERVICE_NOT_AVAILABLE”错误。只停留在这一个。

list

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

InstanceID 调用:

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

instanceID.getId() 正在运行。

W/InstanceID/Rpc: No response android.os.ConditionVariable@129d5713
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)

最佳答案

在代码中的相同位置搜索类似错误时,我终于弄清楚了我的问题。

New GCM API Register Unknown Source Error

在这种情况下,错误“MAIN_THREAD”确实更明显一些。

所以是因为InstanceId.getToken()不能在主线程中调用。

虽然它不适用于 new AsyncTask<Void, Void, Void>() Google Github 示例中建议的方法。

我不得不使用

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

关于java - 安卓 GCM InstanceId.getToken() -> java.io.IOException : TIMEOUT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33386593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com