30

Próbuję uzyskać GCM pracę w mojej aplikacji (powiadamiać użytkowników, gdy zmieniają się nasze godziny, lub kiedy są jakieś promocje), ale nadal otrzymuję błąd Cannot resolve symbol 'GoogleCloudMessaging' podczas próby użycia Google Cloud Messaging API.Nie można rozpoznać symbolu "GoogleCloudMessaging" GCM

Używam nowo wydanego IDE urządzenia Android do kodowania tego.

Oto mój kod GcmBroadcastReciever.java:

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

Czy możesz znaleźć rozwiązanie? Mam do czynienia z tym samym problemem. – Geek

+0

Spójrz na odpowiedź. Importowanie było rozwiązaniem, więc postępuj zgodnie z krokami Erana. – dillonr

Odpowiedz

35

Poniższe sekcje poprowadzi Cię przez proces konfigurowania GCM realizację. Zanim zaczniesz, skonfiguruj pakiet SDK usług Google Play . Ten pakiet SDK jest potrzebny do korzystania z metod GoogleCloudMessaging:. Ściśle mówiąc, jedyną rzeczą, której absolutnie potrzebujesz, jest interfejs API do przesyłania danych typu "upstream" ("urządzenie do chmury"), ale oferuje również usprawniony interfejs API do rejestrowania , który jest zalecany.

Czy byłeś set up the Google Play Services SDK?

Musisz:

  1. zainstalować Google Play Services SDK
  2. referencyjny projekt <android-sdk>/extras/google/google_play_services/libproject/google-play-services_lib/ biblioteki w projekcie Android.

Aby zainstalować Google Play SDK dla rozwoju:

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

Mam je zainstalowane, ale nie zostały zaimportowane do mojego projektu jako zależność. importowanie poprawiono moje problemy, okrzyki – dillonr

+0

Nie byłem pewien jak to zrobić # 2, ale potem przeczytałem odpowiedź unify i wypróbowałem "gradację synchronizacji" po wykonaniu kroku nr 1 tutaj. Ta kombinacja zadziałała dla mnie. – eselk

+0

Yup po prostu dodaj go jako zależność i będzie działać. –

10

Jeśli używasz Android Studio:

1) Pobrano Google Play SDK (używając Menedżera SDK):

SDK Manager

2) Nie zapomnij kliknąć na "Synch Projektu z Gradle Files" przycisk

Synch Project with Gradle Files

To załatwiło sprawę dla mnie.

+0

Synchronizacja rozwiązała mój problem, dzięki! – Sloy

6

Jeśli jesteś w Android Studio, upewnij się, że w build.gradle masz:

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

a następnie uruchomić build.

To zadziałało dla mnie.

3

Spróbuj wyczyścić swój projekt. Pracował dla mnie.

4

Upewnij się, że dodano zależności na build.gradle> Sync> Build - Clean Project.

Pracowałem dla mnie :)

+0

Dzięki, @rischan to działa .. –