Ben*_*nni 9 java android google-cloud-messaging
我正在尝试在我的Android应用程序中实现推送通知,但我目前卡在接收令牌的点.
我正在使用"InstanceID"的最新方法并遵循一些示例.我已经将权限和服务添加到我的Manifest(并添加了它们的代码),但无论我尝试什么,我总是得到"java.io.IOException:TIMEOUT"错误.我尝试过不同的手机,wifi,Lte和3G,但似乎什么都没改变.
我从来没有说过"SERVICE_NOT_AVAILABLE"的错误.只停留在这一个.
表现
<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>
Run Code Online (Sandbox Code Playgroud)
InstanceID调用:
try
{
token = instanceID.getToken(
senderId,
GoogleCloudMessaging.INSTANCE_ID_SCOPE,
null);
}
catch (IOException e)
{
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
Ben*_*nni 15
当我在代码中的相同位置搜索类似错误时,我终于找到了问题所在.
在这种情况下,错误"MAIN_THREAD"确实更加明显.
所以这是因为无法在主线程中调用InstanceId.getToken().
虽然它不适new AsyncTask<Void, Void, Void>()用于Google Github示例中建议的方法.
我不得不使用
new Thread(new Runnable() {
public void run() {
//code
}
}).start();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7737 次 |
| 最近记录: |