30

Ich versuche GCM in meiner App zu verwenden (um Benutzer zu benachrichtigen, wenn sich unsere Stunden ändern, oder wenn wir irgendwelche Promos machen), aber ich bekomme den Fehler Cannot resolve symbol 'GoogleCloudMessaging' wenn ich versuche zu verwenden die Google Cloud Messaging-API.Das Symbol 'GoogleCloudMessaging' kann nicht aufgelöst werden. GCM

Ich verwende die neu veröffentlichte Android Studio IDE, um dies zu programmieren.

Hier ist mein GcmBroadcastReciever.java Code:

import android.R; 
import android.app.Activity; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.widget.Toast; 

public class GcmBroadcastReceiver extends BroadcastReceiver 
{ 
    static final String TAG = "GCMDemo"; 
    public static final int NOTIFICATION_ID = 1; 
    private NotificationManager mNotificationManager; 
    Context ctx; 
    GoogleCloudMessaging gcm; // I get the error here 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context); //error 
     ctx = context; 
     String messageType = gcm.getMessageType(intent); //cannot resolve method here 
     if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) { //error 
      sendNotification("Send error: " + intent.getExtras().toString()); 
     } else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED.equals(messageType)) { //error 
      sendNotification("Deleted messages on server: " + 
        intent.getExtras().toString()); 
     } else { 
      sendNotification("Received: " + intent.getExtras().toString()); 
     } 
     setResultCode(Activity.RESULT_OK); 
    } 

    // Put the GCM message into a notification and post it. 
    private void sendNotification(String msg) { 
     mNotificationManager = (NotificationManager) 
       ctx.getSystemService(Context.NOTIFICATION_SERVICE); 

     PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0, 
       new Intent(ctx, Activity.class), 0); 

     Toast.makeText(ctx, msg, Toast.LENGTH_SHORT).show(); 
    } 
} 
+1

Konnten Sie die Lösung finden? Ich stehe vor demselben Problem. – Geek

+0

Schauen Sie sich die Antwort an. Importieren war die Lösung, also folgen Sie einfach Erans Schritten – dillonr

Antwort

35

Die folgenden Abschnitte führen Sie durch den Prozess der Einrichtung eines GCM Implementierung auf. Bevor Sie beginnen, sollten Sie das Google Play SDK für Dienste einrichten. Sie benötigen dieses SDK, um die GoogleCloudMessaging-Methoden zu verwenden. Streng genommen ist das einzige, was Sie unbedingt benötigen diese API für Upstream (Gerät zu Wolke) Messaging, aber es bietet auch eine schlanke Registrierungs-API, die empfohlen wird.

Haben Sie set up the Google Play Services SDK?

Sie müssen:

  1. die Google-Dienste SDK
  2. Referenz des <android-sdk>/extras/google/google_play_services/libproject/google-play-services_lib/ Bibliotheksprojekt in Ihrem Android-Projekt Spiele installieren.

die Google für die Entwicklung Play-Dienste SDK zu installieren:

1. Launch the SDK Manager. 
    - From Eclipse (with ADT), select Window > Android SDK Manager. 
    - On Windows, double-click the SDK Manager.exe file at the root of the Android 
     SDK directory. 
    - On Mac or Linux, open a terminal and navigate to the tools/ directory in 
     the Android SDK, then execute android sdk. 
2. Install the Google Play services SDK. 
    Scroll to the bottom of the package list, expand Extras, select Google Play 
    services, and install it. 
    The Google Play services SDK is saved in your Android SDK environment at 
    <android-sdk>/extras/google/google_play_services/. 
3. Install a compatible version of the Google APIs platform. 
    If you want to test your app on the emulator, expand the directory for 
    Android 4.2.2 (API 17) or a higher version, select Google APIs, and 
    install it. Then create a new AVD with Google APIs as the platform target. 
    Note: Only Android 4.2.2 and higher versions of the Google APIs platform 
    include Google Play services. 
+4

Ich hatte es installiert, aber nicht als Abhängigkeit in mein Projekt importiert. importiert es behoben meine Probleme, Prost – dillonr

+0

Ich war mir nicht sicher, wie # 2 zu tun, aber dann las ich die Antwort von uniform und versuchte die "Synchronisierung Gradle" nach Schritt 1 hier. Diese Kombination hat für mich funktioniert. – eselk

+0

Yup einfach hinzufügen, es als Abhängigkeit und es wird funktionieren. –

10

Wenn Sie Android Studio verwenden:

1) heruntergeladen den SDK-Manager des Google SDK Play (mit):

SDK Manager

2) Vergessen Sie nicht "mit Gradle Dateien Synch-Projekt" Taste

Synch Project with Gradle Files

, die den Trick für mich auf dem klicken tat.

+0

Synchronisierung gelöst mein Problem, danke! – Sloy

6

Wenn Sie in Android Studio sind, stellen Sie sicher, dass in Ihrem build.gradle Sie haben:

dependencies { 
    compile 'com.google.android.gms:play-services:7.8.0' 
} 

und dann build laufen.

Das hat bei mir funktioniert.

2

Sie verwenden wahrscheinlich ein altes Lernprogramm, GCMRegistrar ist jedoch eine veraltete API-Klasse.

Verwenden Sie stattdessen die API GoogleCloudMessaging.

prüfen diese für eine vollständige Tutorial push notification using gcm

3

Versuchen Sie Ihr Projekt zu reinigen. Arbeitete für mich.

4

Stellen Sie sicher, dass Abhängigkeiten von build.gradle> Sync> Build - Clean Project hinzugefügt wurden.

Arbeitete für mich :)

+0

Danke, @rischan es funktioniert .. –