我正在开发Android的聊天应用程序。但是在尝试向GCM注册时,我收到以下错误:
<?php
// file another_file.php
require('./your/path/to/Database.class.php');
$db = new Database();
$connection = $db->getConnection();
?>
我使用以下代码获取GCM令牌:
04-02 16:59:29.793 29773-30031/purepush.group101.talktoday W/InstanceID/Rpc: Found 10010
04-02 16:59:29.920 29773-30031/purepush.group101.talktoday W/System.err: java.io.IOException: SERVICE_NOT_AVAILABLE
04-02 16:59:29.922 29773-30031/purepush.group101.talktoday W/System.err: at com.google.android.gms.iid.zzc.zzb(Unknown Source)
04-02 16:59:29.922 29773-30031/purepush.group101.talktoday W/System.err: at com.google.android.gms.iid.zzc.zza(Unknown Source)
04-02 16:59:29.922 29773-30031/purepush.group101.talktoday W/System.err: at com.google.android.gms.iid.InstanceID.zzc(Unknown Source)
04-02 16:59:29.922 29773-30031/purepush.group101.talktoday W/System.err: at com.google.android.gms.iid.InstanceID.getToken(Unknown Source)
04-02 16:59:29.922 29773-30031/purepush.group101.talktoday W/System.err: at purepush.group101.talktoday.LoginActivity$GetGCMTokenTask.doInBackground(LoginActivity.java:240)
04-02 16:59:29.923 29773-30031/purepush.group101.talktoday W/System.err: at purepush.group101.talktoday.LoginActivity$GetGCMTokenTask.doInBackground(LoginActivity.java:211)
04-02 16:59:29.923 29773-30031/purepush.group101.talktoday W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:295)
04-02 16:59:29.923 29773-30031/purepush.group101.talktoday W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
04-02 16:59:29.923 29773-30031/purepush.group101.talktoday W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
04-02 16:59:29.923 29773-30031/purepush.group101.talktoday W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
04-02 16:59:29.923 29773-30031/purepush.group101.talktoday W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
04-02 16:59:29.923 29773-30031/purepush.group101.talktoday W/System.err: at java.lang.Thread.run(Thread.java:818)
04-02 16:59:29.958 29773-29773/purepush.group101.talktoday E/GcmReceiver: Failed to resolve target intent service, skipping classname enforcement
04-02 16:59:29.958 29773-29773/purepush.group101.talktoday E/GcmReceiver: Error while delivering the message: ServiceIntent not found.
清单:
InstanceID instanceID = InstanceID.getInstance(context);`
regToken = instanceID.getToken(getString(R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
Build.Gradle(应用模块)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="purepush.group101.talktoday">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<permission
android:name="purepush.group101.talktoday.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="purepush.group101.talktoday.permission.C2D_MESSAGE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity" />
<activity android:name=".ChatActivity" />
<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" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="purepush.group101.talktoday" />
</intent-filter>
</receiver>
<service
android:name=".utils.GCMMessageListener"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
</application>
</manifest>
现在有趣的是,这个错误只发生在运行6.0.1的Nexus 5上(Build:MMB29Q)。我在同事的运行5.1.1的Samsung Note 4上测试了这个应用程序,我能够用GCM成功注册他的设备。我使用GCM仅使用我的Nexus 5获得了多个应用程序的错误。
对此有任何帮助将不胜感激
谢谢!
答案 0 :(得分:1)
请检查您的&#34; Nexus 5&#34;时钟,它应该是准确的,并尝试改变
buildToolsVersion "21.1.2"
类似于:buildToolsVersion "23.0.2"
=&gt;我使用此版本,GCM与Android 6配合良好
<强>更新强>
我使用此方法注册我的GCM
public void getRegId() {
new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... params) {
try {
if (gcm == null) {
gcm = GoogleCloudMessaging.getInstance(getApplicationContext());
}
regid = gcm.register(R.string.gcm_defaultSenderId);
msg = "Device registered, registration ID=" + regid;
} catch (IOException ex) {
msg = "Error :" + ex.getMessage();
System.out.println("Error---" + ex.getMessage());
}
return msg;
}
@Override
protected void onPostExecute(String msg) {
System.out.println("Registerid---" + regid);
}
}.execute(null, null, null);
}
请尝试并告诉我。
答案 1 :(得分:1)
嗯,事实证明我的Google Play商店并没有正常运作。我可以查看应用并安装新应用,但是当我输入&#34;我的应用&amp;游戏&#34;,它给了我Check your connection and try again
错误。因此,我正在为可能遇到类似问题的任何人发布此解决方案,因为我花了4-5天寻找错误并尝试不同的修复。
注意:这仅适用于root用户。
<强>步骤:强>
etc
etc
内,您会看到文件名hosts
hosts
文件中,您会看到2个IP地址。第二个将根据您的位置而有所不同#
。 #
会将该行更改为评论我建议在编辑之前备份hosts文件。
致于&#34; Ronny927&#34;:http://forum.xda-developers.com/showthread.php?t=2273994
答案 2 :(得分:1)
我几天前遇到过同样的情况,这不是GCM的问题,而是我们的互联网连接问题。请参阅以下要点以获得更多理解
你的手机已连接到wifi,但没有wifi的互联网,尝试谷歌浏览器,如果它工作正常,那么你应该尝试更多的东西,如检查你的设备中的播放服务等等。
您手机的数据包可能已经结束,这意味着您已连接到互联网,但您无法从中获取任何类型的数据。如果不检查与服务器的连接,则无法识别此错误。
您可以从此链接获取更多详细信息
How to fix Google Cloud Messaging Registration error: SERVICE_NOT_AVAILABLE?