30

アプリで作業を開始しようとしてGCMいます (営業時間が変更されたとき、またはプロモーションが行われたときにユーザーに通知するため) ですがCannot resolve symbol 'GoogleCloudMessaging'、Google Cloud Messaging API を使用しようとするとエラーが発生し続けます。

これをコーディングするために、新しくリリースされた Android studio 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();
    }
}
4

6 に答える 6

35

以下のセクションでは、GCM 実装を設定するプロセスについて説明します。開始する前に、必ず Google Play Services SDK をセットアップしてください。GoogleCloudMessaging メソッドを使用するには、この SDK が必要です。厳密に言えば、この API が絶対に必要なのはアップストリーム (デバイスからクラウドへ) メッセージングだけですが、推奨される合理化された登録 API も提供します。

Google Play Services SDKをセットアップしましたか?

必ず :

  1. Google Play サービス SDK をインストールする
  2. <android-sdk>/extras/google/google_play_services/libproject/google-play-services_lib/Android プロジェクトでライブラリ プロジェクトを参照します。

開発用の 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.
于 2013-05-18T02:21:26.133 に答える
10

Android Studio を使用している場合:

1) Google Play SDK をダウンロードしました (SDK Manager を使用):

SDKマネージャー

2)「プロジェクトをGradleファイルと同期」ボタンをクリックすることを忘れないでください

プロジェクトを Gradle ファイルと同期する

それは私のためにトリックをしました。

于 2013-11-26T17:16:47.610 に答える
6

Android Studio を使用している場合は、次のことを確認してくださいbuild.gradle

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

そして実行しますbuild

それは私のために働いた。

于 2015-09-21T19:48:10.653 に答える
4

build.gradle > Sync > Build - Clean Project に依存関係を追加していることを確認してください。

私のために働いた:)

于 2016-04-05T06:30:40.360 に答える
3

プロジェクトをクリーニングしてみてください。私のために働いた。

于 2015-12-15T21:49:36.767 に答える
2

古いチュートリアルを使用している可能性がありますが、GCMRegistrar は非推奨の API クラスです。

代わりにGoogleCloudMessaging API を使用してください。

gcm を使用した完全なチュートリアルのプッシュ通知については、これを確認してください

于 2015-10-15T09:29:14.770 に答える