Articles of 谷歌云消息

每次应用程序启动时都请求Google Cloud Messaging(GCM)注册ID

我已阅读关于GCM的文章可能会刷新注册ID,没有固定的周期。 我试图build立一个应用程序使用推送通知,但不知道如何处理这种刷新注册ID。 我的第一个策略是每次应用程序启动时请求注册ID,并将其发送到应用程序服务器。 它看起来工作,但听起来不知何故… 可以这样做吗?

Android GCM有些设备没有注册

我有一个在谷歌播放5000下载应用程序。 在这5000个中,有900个未能在我的服务器上存储GCM注册ID。 我担心有18%的失败率,并且很难找出原因。 这绝对不是一个问题传递一个Id到我的服务器和存储,所以我认为它必须是注册失败。 有没有人遇到过这样的项目? 代码如下: // Fired every time the app is booted in Main Activity private void setupGCM() { String gcmRegId = GCMRegistrar.getRegistrationId(this); if (gcmRegId.equals("")) { GCMRegistrar.register(this, AppProperties.GCM_SENDER_ID); } else { // This is well tested and is not the issue ServerUtils.sUpdatePushToken(this, gcmRegId); } } // GCMIntentService Class onRegistered @Override protected void onRegistered(Context […]

Google云通过代理传递GCM

我无法通过公司代理向设备发送消息。 我已经完成了在谷歌网站上的GCM教程,并成功地注册了Android模拟器的谷歌服务器上的设备,也在我的服务器上注册了一个设备。 为此,我必须通过公司代理,将其设置在模拟器的访问点中。 现在我遇到的问题是通过相同的代理从我的服务器发送消息到设备。 我正在使用的演示使用的servlet代码 com.google.android.gcm.server.Sender 帮助者类发送消息。 我在tomcat 7上运行servlets。 我已经尝试在catalina.properties文件中设置代理。 http.proxyHost=proxy.company.com http.proxyPort=8080 我已经尝试设置下面的servlet本身的属性。 System.setProperty("http.proxyHost", "proxy.company.com"); System.setProperty("http.proxyPort", "8080"); 但是我仍然得到暂停。 我知道它的公司代理,因为我得到的消息在家里,我没有代理工作。 我已经看到在java代码中创build的代理对象,然后创build一个连接,但我不认为这是可用的,因为我使用发件人助手类来发送消息。 这是在超时失败的线路。 Result result = sender.send(message, registrationId, 5); 任何帮助,将不胜感激。 问候 法案

有没有Java库来简化Google云消息传递?

我想知道是否有任何库提供了通过GCM轻松发送消息的接口? 看看架构概述,似乎你必须自己做很多东西(打开TCP连接,构造HTTP请求,构buildJSON负载,实现指数退避,处理各种types的错误等)。 当然,这种东西有一些基本的实现,我错过了,是吗?

内部错误:重试接收器类尚未设置

我正在实施一个简单的gcm推送服务器通知给手机,但是当我从服务器推送,通知不显示在手机上。 日志显示这个错误 内部错误:重试接收器类尚未设置 有人可以告诉我如何解决这个问题,或给我一个链接到一个gcm库来解决这个错误。 我在网上search,谷歌说这个错误是固定在一个库版本,但我不能在网上find它。

Android GCMencryption

我开始使用Android GCM框架 这实际上是相当不错,易于实施,但一个重要的问题: 我转移的数据不敏感,但我不希望它从每个人都可用。 这是encryption一些如何? 或者我应该encryption我的消息? 我知道,基本上它是一个通知服务 – 但我发短信,所以这对我来说很重要,了解这些消息是如何通过谷歌, 谢谢 !

每当我启动Android应用程序时,是否需要新的令牌?

我知道,在Android和iOS和WP7( 在哪个移动平台中,“推送令牌”不是永久的?) ,提供给设备的推送令牌可以改变。 这意味着我们应该通过要求新的令牌来处理这个问题,至less每次我们的应用程序启动。 然而 ,这到目前为止我在Google教程中find的完全相反(我不记得我在哪里find了这个代码,但是我确定它是由google提供的)代码如下所示: //registering for push GCMRegistrar.checkDevice(this); GCMRegistrar.checkManifest(this); final String regId = GCMRegistrar.getRegistrationId(this); if (regId.equals("")) { GCMRegistrar.register(this, SENDER_ID); Log.i("****************","I just Registered!!"); } else { Log.i("****************","Already registered"); } 上面的代码将执行GCMRegistrar.register(this, SENDER_ID); 只有一行,这是应用程序第一次启动。 但是我猜这个错误是正确的? 因为如果令牌更改,我们的应用程序将看不到,因为它只需要一个令牌一次.. 编辑 其实我只是find了那个代码。 看看这里: 入门指南 我引用: 在onCreate()方法中,添加以下代码: GCMRegistrar.checkDevice(this); GCMRegistrar.checkManifest(this); final String regId = GCMRegistrar.getRegistrationId(this); if (regId.equals("")) { GCMRegistrar.register(this, SENDER_ID); } else […]

当App没有运行时,GCM Cordova推送通知不工作

该应用程序在PhoneGap中。 我使用https://github.com/marknutter/GCM-Cordova推送通知function 我实现了整个function,直到昨天才正常工作。 当我最后一天检查了应用程序,当应用程序没有运行时推送通知不工作。 所有通知正在我的设备上接收,点击该消息打开应用程序。 但是控件在消息通知处理的javascript部分没有收到。 来自文件GCMIntentService.java的代码: JSONObject json; json = new JSONObject().put("event", "message"); json.put("message", extras.getString("message")); json.put("link", extras.getString("link")); Log.v(ME + ":onMessage ", json.toString()); GCMPlugin.sendJavascript( json ); // Send the MESSAGE to the Javascript application 这个代码将收到消息时工作。 但是那个时候,App没有运行。 当我点击通知消息时,应用程序像往常一样打开,而不是注册消息事件; 从而得不到JavaScript中的控件来处理推送通知。 代码为CORDOVA_GCM_script.js是可利用的在: https://github.com/marknutter/GCM-Cordova/blob/master/assets/www/CORDOVA_GCM_script.js 注意 :应用程序运行时,它工作正常。 编辑:有时通知运行。 JavaScript随机获取消息事件。 编辑2: 我当然知道这个问题。 从java文件,它通过点击推送通知消息打开应用程序时,触发JavaScript代码。 但是那个时候,WebView没有加载,所以不能执行脚本(这是一个事件触发器)。 这是条件,每个使用插件的人都会遇到同样的情况。 有没有解决方法或解决办法? 我做错了什么?

某些时候在手机中没有收到推送通知GCM

我正面临着一个奇怪的问题。 如果在从服务器端发送消息的时候连接到互联网,那么我的手机就会收到推送通知。 但是,如果当时没有连接到互联网,而是在一段时间后连接到互联网。 我没有收到该通知。 据我所知,所有这些通知应该显示,只要我们在线,因为GCM服务器存储所有这些消息。 我收到所有其他应用程序的通知。 我也给了清单中的wakelock权限。 可能是什么问题? 任何从服务器端,客户端或移动? 请帮忙… 该值从第三方服务器(.Net服务器)发送到GCM服务器: String postdata= "collapse_key=score_update&time_to_live=2419200&delay_while_idle=1&data.message=‌​" + message + "&data.time=" + System.DateTime.Now.ToString() + "&registration_id=" + deviceToken + "" 提前致谢

使用适用于Android的Google Cloud Messaging无法接收消息(不是帮助程序库)

有没有人可以帮助我一个工作的例子,使用Google Cloud Messaging for Android从gcm接收消息。 我已经尝试了两种方法(帮助库和GoogleCloudMessaging类),似乎没有任何工作。 我正在使用一个PHP脚本,显示以下内容: 组播ID:5.2108110103215E + 18已成功处理的消息数量:1处理错误消息的数量:0标准ID:0 所以显然是永恒的。 我可以用这两种方式注册设备,使用助手库(gcm.jar)和使用GoogleCloudMessaging类。 问题是我没有办法通过PHP发送消息,或者至less我不知道如何正确处理它。 以下是我的清单中的权限和接收者: <permission android:name="com.example.gcm.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.example.gcm.permission.C2D_MESSAGE" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <uses-permission android:name="android.permission.READ_OWNER_DATA" /> <receiver android:name="com.google.android.gcm.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <!– Receives the actual messages. –> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <!– Receives […]