GCM defaultSenderID

前端 未结 6 1115
名媛妹妹
名媛妹妹 2020-12-11 00:02

Could somebody please help me understand what the gcm_defaultSenderId is in the following code (found in onHandleIntent in RegistrationIntentService.java):

I         


        
相关标签:
6条回答
  • 2020-12-11 00:31

    The gcm_defaultSenderId is a string is included by the google-services gradle plugin. Be sure you have the:

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

    in your build.gradle file.

    This plugin should be available in the latest version of the build tools.

    Like Vesko said this is your Sender ID which in this case is the Project Number in your dev console project. The google-services plugin extracts this from your downloaded project configuration file.

    0 讨论(0)
  • 2020-12-11 00:35

    To solve this you just have to add apply plugin: 'com.google.gms.google-services' to your gradle.app module and classpath 'com.google.gms:google-services:1.3.0' to the dependencies of your gradle.app project

    and of course, dont forget to add compile 'com.google.android.gms:play-services-gcm:8.1.0' to your gradle

    0 讨论(0)
  • 2020-12-11 00:36

    I hate those buggy Gradle plugins, and trying to get the google-services plugin to operate in a project with multiple flavours is no fun either.

    I ended up getting the Sender Id by name:

    InstanceID instanceID = InstanceID.getInstance(this);
    String gcmDefaultSenderId = getString( getResources().getIdentifier("gcm_defaultSenderId", "string", this.getPackageName()) );
    String token = instanceID.getToken( gcmDefaultSenderId, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
    
    0 讨论(0)
  • 2020-12-11 00:37

    Quoting THIS document, where you can find details about that implementation:

    String authorizedEntity = PROJECT_ID; // Project id from Google Developers Console
    String scope = “GCM”; // e.g. communicating using GCM, but you can use any
                          // URL-safe characters up to a maximum of 1000, or
                          // you can also leave it blank.
    String token = InstanceID.getInstance().getToken(authorizedEntity,scope);
    

    So as you can see, the first param you should pass to getToken() is the authorizedEntity, which should be your project id from Google Developers :)

    Even if the project in GitHub had that string, it wouldn't server you any good, as this authorizedEntity is something unique for each app.

    0 讨论(0)
  • 2020-12-11 00:44

    There is one more important thing, Create the google-services.json file.

    Just in case someone else stumbles upon this issue.

    0 讨论(0)
  • 2020-12-11 00:55

    Place the file google-services.json under \app directory, not inside src or other places. Be sure the GCM plugin is applied. Build the project, and the string will now resolve.

    0 讨论(0)
提交回复
热议问题