web-dev-qa-db-ja.com

シンボル「GoogleCloudMessaging」GCMを解決できません

アプリで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();
    }
}
30
DillonRegi

以下のセクションでは、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.
35
Eran

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

1)Google Play SDKをダウンロードしました(SDKマネージャーを使用):

SDK Manager

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

Synch Project with Gradle Files

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

10
unify

Android Studioにいる場合は、build.gradle あなたが持っている:

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

buildを実行します。

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

6
hlopezvg

Build.gradle> Sync> Build-Clean Projectに依存関係を追加してください。

私のために働いた:)

4
rischan

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

3
Wise Shepherd

おそらく古いチュートリアルを使用していますが、GCMRegistrarは非推奨のAPIクラスです。

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

完全なチュートリアルについてはこちらをご覧ください gcmを使用して通知をプッシュ

2
kundan roy