我必须在GCM客户端中使用上游消息传递吗?

时间:2014-11-08 19:36:23

标签: android google-cloud-messaging

我关注了android的GCM指南,并在那里写了:

  

当onClick()调用gcm.send()时,它会触发广播接收者的onReceive()方法,该方法负责确保处理GCM消息。

现在,根据我的理解gcm.send()在执行upstream messaging时被称为。{ 但是,如果我不想使用它呢?我只想要从云端到设备的消息而不是其他方式。是否可能,如果可能,我该如何

  

触发广播接收者的onReceive()方法

1 个答案:

答案 0 :(得分:0)

不,你不需要。除非您需要双向通信,否则设备不会发送消息。

因此,如果您只需要接收推送消息,则接收消息由onReceive()管理,之后使用方法onHandleIntent()管理GcmIntentService()公共类,但您的设备必须满足一些基本配置:< / p>

a)必须在Google和第三方应用服务器中注册 b)设备必须连接到Internet c)设备必须安装Google Play服务

要发送消息,您需要第三方服务器应用程序来存储registration_ids并向Google的终端发送消息,该终端接受作业以在特定条件下将消息发送给您提供的所有registration_ids。

这是我的build.gradle示例,其中包括可以访问GoogleCloudMessaging类的Google Play服务:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.14.1'
    }
}

apply plugin: 'com.android.application'

repositories {
    mavenCentral()
}

dependencies {
    compile project(':libraries:AmbilWarna')
    compile files('libs/libGoogleAnalyticsServices.jar')
    compile files('libs/commons-net-3.3.jar')
    compile files('libs/YouTubeAndroidPlayerApi.jar')
    compile 'com.android.support:appcompat-v7:21.0.0'
    compile 'com.android.support:support-v4:21.0.0'
    compile 'com.android.support:cardview-v7:21.0.0'
    compile 'com.android.support:recyclerview-v7:21.0.0'
    compile 'org.jsoup:jsoup:1.8.1@jar'
    compile 'joda-time:joda-time:2.4@jar'
    compile 'com.google.android.gms:play-services:6.1.71'
    compile 'com.squareup.okhttp:okhttp:2.0.0'
    compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
    compile 'ch.acra:acra:4.5.0'
    compile 'net.rdrei.android.dirchooser:library:2.1@aar'
    compile 'com.uwetrottmann:trakt-java:3.3.1'

}


def getVersionCode = { ->
    try {
        def code = new ByteArrayOutputStream()
        exec {
            commandLine 'git', 'log', '--oneline'
            standardOutput = code
        }
        return code.toString().split("\n").size()
    }
    catch (ignored) {
        return -1;
    }
}

android {
    signingConfigs {

        release {
            keyAlias '***'
            keyPassword '+++'
            storeFile file('/home/***')
            storePassword '***'
        }
    }

    compileSdkVersion 21
    buildToolsVersion '21.1'
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
    defaultConfig {
        versionCode 30000+getVersionCode()
        versionName "3.0." + getVersionCode()
        signingConfig signingConfigs.release
    }
    lintOptions {
        abortOnError false
    }
    productFlavors {
    }
}

所有主题的更详细信息(请忽略XMPP和gcm.send方法): Full GCM Client implementation