无法解析符号“GoogleCloudMessaging” GCM

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

我正在使用新发布的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();
    }
}

答案 1

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

您是否设置了 Google Play Services SDK

您必须:

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

要安装用于开发的 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.

答案 2

如果您使用的是 Android Studio:

1) 下载了 Google Play SDK(使用 SDK Manager):

SDK Manager

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

Synch Project with Gradle Files

这为我带来了好处。


推荐