找不到符号类GCMListenerService

时间:2016-11-25 16:06:02

标签: android google-cloud-messaging

我正在参加本教程: https://code.tutsplus.com/tutorials/how-to-get-started-with-push-notifications-on-android--cms-25870

我在Mac上使用 Android Studio 2.3 Canary 2

但是当我编译时,我总是在NotificationsListenerService上得到这个错误:

Error:(7, 51) error: cannot find symbol class GCMListenerService

我尽可能地按照教程的说明进行操作。

  1. 我在项目的build.gradle中添加了最新版本的google-services:

    classpath'com.google.gms:google-services:3.0.0'

  2. build.gradle:http://pastebin.com/ZE4iqFxU

    1. 我在app的build.gradle中添加了最新版本的play-services:

      编译'com.google.android.gms:play-services:10.0.0'

    2. 并且还应用了插件:

      apply plugin: 'com.google.gms.google-services'
      

      app / build.gradle:

      apply plugin: 'com.android.application'
      
      android {
      compileSdkVersion 23
      buildToolsVersion "25.0.1"
      defaultConfig {
          applicationId "com.ecaring.gcmtest"
          minSdkVersion 19
          targetSdkVersion 23
          versionCode 1
          versionName "1.0"
          testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
      }
      buildTypes {
          release {
              minifyEnabled false
              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
          }
      }
      }
      
      dependencies {
      compile fileTree(include: ['*.jar'], dir: 'libs')
      androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
          exclude group: 'com.android.support', module: 'support-annotations'
      })
      compile 'com.android.support:appcompat-v7:23.4.0'
      compile 'com.android.support.constraint:constraint-layout:1.0.0-beta4'
      testCompile 'junit:junit:4.12'
      compile 'com.google.android.gms:play-services-gcm:10.0.0'
      }
      
      apply plugin: 'com.google.gms.google-services'
      
      1. 我使用权限,接收器......更新了清单,并创建了相应的类。
      2. 清单:http://pastebin.com/ZpBNVsVi

        1. 我从Google下载了google-services.json文件并将其添加到我的应用目录

        2. 我从教程中创建了类:

          • RegistrationService
          • TokenRefreshListenerService
          • NotificationsListenerService扩展了GcmListenerService
        3. 每次更新Manifest

          1. 我与gradle同步,清理项目并重建多次。我尝试了不同版本的google-services和play-services。
          2. 我总是得到同样的错误:
          3. 错误:(7,51)错误:找不到符号类GCMListenerService

            以下是有问题的文件: NotificationsListenerService.java:

            public class NotificationsListenerService extends GCMListenerService {
            }
            

            我当时尝试添加一个import语句,但编辑说它将不会使用。

            我做错了什么?

2 个答案:

答案 0 :(得分:0)

首先,Google Cloud Messaging deprecated支持Firebase Cloud Messaging,因此现在使用FCM会更好。

至于你的问题,似乎tutsplus教程已经过时了。使用官方文档或旧版Google Play服务。

Set up a GCM Client App on Android

Set Up a Firebase Cloud Messaging Client App on Android

答案 1 :(得分:0)

首先要告知,Google Cloud Messaging已被弃用,支持Firebase云消息传递,因此最好现在使用FCM。但这次不容易实现第三方(api)发送推送通知很容易,就像GCM一样

FCM使用app的accessstoken和server key发送推送通知第三方api来创建firebase