2016-04-02 28 views
2

Android用チャットアプリケーションを開発しています。しかし、GCMに登録しようとしているときに、私は次のエラーが発生します:Android - GCMエラー 'SERVICE_NOT_AVAILABLE'(Android 6.0.1)

InstanceID instanceID = InstanceID.getInstance(context);` 
regToken = instanceID.getToken(getString(R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); 

がMANIFEST:

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

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. 

私は、トークン、次のコードを使用して、GCMを取得していますBuild.Gradle(アプリケーションモジュール)

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "21.1.2" 
    useLibrary 'org.apache.http.legacy' 
    defaultConfig { 
     applicationId 'purepush.group101.talktoday' 
     minSdkVersion 14 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    productFlavors { 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.2.1' 
    compile 'com.android.support:design:23.2.1' 
    compile 'org.apache.httpcomponents:httpmime:4.5.2' 
    compile 'org.apache.httpcomponents:httpclient:4.5.2' 
    compile 'com.squareup.picasso:picasso:2.5.2' 
    compile 'com.google.android.gms:play-services:8.4.0' 
} 

このエラーは、6.0.1(Build:MMB29Q)を実行しているNexus 5でのみ発生します。同僚のSamsung Note 4(5.1.1)でこのアプリケーションをテストしたところ、GCMにデバイスを正常に登録できました。私はこの上の任意のヘルプは

おかげでいただければ幸いだけ私のネクサス5

をGCMを使用して、当社のアプリケーションの複数と、このエラーを取得しています!

+0

このリンクから詳細を得ることができますか? GCMサーバーを登録するにはGCMに電子メール認証が必要です。 – Kathi

+0

Nexus 5です.Googleアカウントにログインしています。 –

+0

誰かが私に何をすべきか教えてもらえますか? –

答えて

1

Google Playストアが正常に動作していないことが判明しました。私はアプリを表示して新しいアプリをインストールすることができましたが、 "Apps &ゲーム"を入力すると、Check your connection and try againというエラーが表示されました。だから、私はエラーを探して別の修正を試みるのに4〜5日を費やしているので、同様の問題を抱えている人のためにこのソリューションを投稿しています。

注:これはrootユーザーのためのものです。

ステップ:

  1. があなたのファイルマネージャを開きます。私はES File Explorerを使用しました。
  2. 後藤「/」またはお使いの携帯電話のルート
  3. フォルダetc内部etc
  4. が呼び出されます、あなたは2 IPを参照してくださいよ、hostsファイル内のファイル名hosts
  5. が表示されますアドレス。 2番目はあなたの場所に応じて異なります
  6. 2番目のIPアドレスの先頭に#を追加します。#はその行をコメントに変更します

編集する前にhostsファイルのバックアップを作成することをおすすめします。 「Ronny927」へ

クレジット:私はいくつかの日前に同じような状況に直面しているhttp://forum.xda-developers.com/showthread.php?t=2273994

1

あなたの「Nexus 5の」時計を確認してください、それが正確である、とのようなものに

buildToolsVersion "21.1.2" 

を変更しようとする必要がありますbuildToolsVersion "23.0.2" =>私は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); 
} 
私のGCMを登録するには、このメソッドを使用しています

お試しください。

+0

時計は完璧です。 buildToolsVersionの変更があれば返信します –

+0

今は '23.0.3'ですがまだ動作しません –

+0

私はマシュマロデバイスで使っている方法で私の答えを更新しました。試してみましょう。私は知っている。 –

1

、それが私たちのインターネット接続の問題であるGCMの問題ではありません。より理解するためのポイント

  1. あなたが電話下記参照無線LANに接続されているが、無線LANからのインターネットはありません、あなたは、いくつかのより多くの事を試してみてください、それは完璧に動作しているか、ブラウザでGoogleにしようと、プレイ・サービスをチェックするようにあなたのデバイスとより多くの。

  2. 携帯電話のデータパックが終了した可能性があります。つまり、インターネットに接続していることを意味しますが、データは取得できません。サーバーへの接続を確認せずにこのエラーを識別することはできません。

あなたは、あなたのネクサス6にGmailアカウントにログインしました

How to fix Google Cloud Messaging Registration error: SERVICE_NOT_AVAILABLE?

関連する問題