无法解析符号'GoogleCloudMessaging'GCM

时间:2013-05-18 00:08:15

标签: java android push-notification google-cloud-messaging android-studio

我正在尝试GCM在我的应用中工作(在我们的工作时间发生变化时通知用户,或者当我们有任何促销活动时),但我在尝试时遇到错误Cannot resolve symbol 'GoogleCloudMessaging'使用Google Cloud Messaging API。

我正在使用新发布的Android工作室IDE来编写代码。

这是我的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();
    }
}

6 个答案:

答案 0 :(得分:35)

  

以下部分将指导您完成设置GCM的过程   实现。在开始之前,请务必设置Google Play   服务SDK。 您需要此SDK才能使用GoogleCloudMessaging方法。严格来说,你唯一需要这个   API for上游(设备到云)消息传递,但它也提供了一个   建议简化注册API。

你有set up the Google Play Services SDK吗?

你必须:

  1. 安装Google Play服务SDK
  2. 在Android项目中引用<android-sdk>/extras/google/google_play_services/libproject/google-play-services_lib/库项目。
  3.   

    安装Google Play服务SDK进行开发:

     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.
    

答案 1 :(得分:10)

如果您使用的是Android Studio:

1)下载了Google Play SDK(使用SDK管理器):

SDK Manager

2)不要忘记点击“使用Gradle文件同步项目”按钮

Synch Project with Gradle Files

这对我有用。

答案 2 :(得分:6)

如果您使用的是Android Studio,请确保您拥有build.gradle

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

然后运行build

这对我有用。

答案 3 :(得分:4)

确保您在build.gradle&gt;上添加了依赖项。同步&gt;建设 - 清洁项目。

为我工作:)

答案 4 :(得分:3)

尝试清理项目。为我工作。

答案 5 :(得分:2)

您可能正在使用旧的教程,但GCMRegistrar是一个弃用的API类。

请改用GoogleCloudMessaging API。

选中此处以获取完整教程push notification using gcm