我关注了android的GCM
指南,并在那里写了:
当onClick()调用gcm.send()时,它会触发广播接收者的onReceive()方法,该方法负责确保处理GCM消息。
现在,根据我的理解gcm.send()
在执行upstream messaging
时被称为。{
但是,如果我不想使用它呢?我只想要从云端到设备的消息而不是其他方式。是否可能,如果可能,我该如何
触发广播接收者的onReceive()方法
答案 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