Articles of 谷歌云的消息

如何解析GCM响应从php删除服务器上的无效注册ID

我有一个关于Google Cloud Messaging的问题…… 我将GCM发送给Google以获取3个注册ID,然后Google回复说已成功发送了2个注册ID而没有注册ID,因为注册ID错误! 但它没有告诉我哪个注册ID尚未发送… 现在我的问题是:如何解析Google GCM响应以获取尚未发送的注册ID? 谷歌是否有API或其他东西,以便我可以给它“multicat_id”,它告诉我哪个注册ID有问题? 任何帮助都会非常感激,我只是很困惑:)

GCM错误代码

我有一个发送GCM推送通知的服务器应用程序。 每发送1000个收件人都会返回一条消息,告诉我每个注册ID的状态。 有些会有错误代码。 是否有一个来自Google的文档告诉我如何处理这些代码以及所有可能的错误代码是什么? 我的谷歌foo没有发现任何东西。

在一台设备上使用INVALID_SENDER,同时使用另一台GCM机器人

我正在使用谷歌云消息传递(GCM)跟随Android推送通知使用我的应用程序实现GCM它在单个设备(Galaxy S)上工作正常,当我尝试用另一个设备( Galaxy Tab 7′)它产生错误时。 handleRegistration:registrationId = null,error = INVALID_SENDER,unregistered = null 这是我得到的日志 V/GCMRegistrar(5649): Registering app my_maypackage of senders APA91bHvzZbO_nyYvaA_QRGDaV-wRAYKjt0qJSQmzPUi2unqG7j0OGuyhVY1A3zh-ZfnA0XT0ffgyKypVJ_5owLZvZBNGARpTBkBg9ED8gVVCDejaIpShghq_tXGhMnFQEufwdCL1ibm V/GCMRegistrar(5649): Setting registeredOnServer status as true until 2013-04-02 11:02:07.847 V/GCMBroadcastReceiver(5649): onReceive: com.google.android.c2dm.intent.REGISTRATION V/GCMBroadcastReceiver(5649): GCM IntentService class: my_maypackage.GCMIntentService V/GCMBaseIntentService(5649): Acquiring wakelock V/GCMBaseIntentService(5649): Intent service name: GCMIntentService-980172650021-7 D/GCMBaseIntentService(5649): handleRegistration: registrationId = null, error = INVALID_SENDER, unregistered = […]

Google Cloud Messaging注册AUTHENTICATION_FAILED

我想尝试Google云消息传递(GCM)服务,我在开始时遇到了问题。 尝试将设备注册到GCM时出现错误AUTHENTICATION_FAILED 。 我搜索了所有我发现的密码不正确的变种。 我的密码是正确的,我只使用一个帐户。 在Android上实现GCM客户端有两种方法: 带有额外jar的GCM库现已弃用。 Google Play服务API 我从第二个开始就遇到了这个问题。 我认为这个问题出现在我的手机中,但后来又决定尝试第一种方式,哪种方式有效! 但是,它已被弃用,需要额外的jar,这似乎不是正确的方法。 为了解错误原因,我反编译了Google Play Services jar并将其与GCM库进行了比较。 事实certificate他们都有类似的方法,如: void register(Context context, String senderIds) { Intent intent = new Intent(“com.google.android.c2dm.intent.REGISTER”); intent.setPackage(“com.google.android.gms”); // this one row are different setPackageNameExtra(context, intent); intent.putExtra(“sender”, senderIds); context.startService(intent); } 一行的差异: 在GCM库中,它是com.google.android.gsf ,其中gsf是Google Services Framework(我猜),它可以工作! 在Google Play Services API jar中,它是com.google.android.gms ,并且它不起作用(AUTHENTICATION_FAILED错误)。 然后在GCM库中,我将“gsf”替换为“gms”并运行。 我得到了相同的AUTHENTICATION_FAILED错误! 如果我输入另一个包,那么它就不起作用了。 […]

将google-services.json文件放到eclipse项目中的哪里?

我正在尝试在Android上实现新的GCM client 。 有一次,您必须为该应用启用Google Services 。 启用Cloud Messaging您必须下载文件google-services.json并将其放在app/或mobile/目录中。 问题是在我的eclipse项目中这个目录不存在。 所以我的问题是:我在哪里放这个文件?

多个推送消息:适配器的内容已更改,但ListView未收到通知

当我在1秒内从GCM收到大量推送消息(假设为50)时,我收到以下exception: java.lang.IllegalStateException:适配器的内容已更改,但ListView未收到通知。 确保不从后台线程修改适配器的内容,而只是从UI线程修改。 [在ListView(2131427434,类android.widget.ListView)和适配器(类an)]在android.widget.List.layoutChildren(ListView.java:1544)在android.widget.AbsListView.onLayout(AbsListView.java:2045)在Android.widget上的android.view.View.layout(View.java:14255)android.view.Linout.setChildFrame(LinearLayout.java:1670)的android.view.ViewGroup.layout(ViewGroup.java:4413)。 LinearLayout.layoutVertical(LinearLayout.java:1528)位于android.view.View.layout(View.java:14255)的android.view.Linout.onLayout(LinearLayout.java:1441)android.view.ViewGroup.layout(ViewGroup) .java:4413)在Android.view.ViewGroup.layout(ViewGroup.java:4413)的android.view.View.layout(View.java:14255)的android.support.v4.view.ViewPager.onLayout(未知来源)在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1670)的android.widget.LinearLayout.layoutVertical(LinearLayout.java:1528)在android.view上的android.widget.LinearLayout.onLayout(LinearLayout.java:1441) .View.layout(VIE w.java:14255)在Android.view.Viewout(View.java:android.view.Lout)中的android.view.ViewGroup.layout(ViewGroup.java:4413)android.sview.v4上的android.support.v4.widget.DrawerLayout.onLayout(未知来源) 14255)在android.view.Loutout(MapLayout.java:446)的android.view.View.Loutout(ViewLayout.java:446)的android.view.Viewout.Layout(View.java:1425)上的android.view.ViewGroup.layout(ViewGroup.java:4413)。在android.view上的android.view.View.layout(View.java:14255)的android.support.v7.internal.widget.ActionBarOverlayLayout.onLayout(未知来源)中查看.ViewGroup.layout(ViewGroup.java:4413)。位于android.view.View.Loutout(ViewLayout.java:446)的android.view.Viewout.Layout(View.java:446)上的ViewGroup.layout(ViewGroup.java:4413)在android.view.ViewGroup.layout(ViewGroup) .java:4413)在Android.widget.LinearLayout.ayLayout(LinearLayout.java:1441)上的android.widget.LinearLayout.setChildFrame(LinearLayout.java:1670)在android.widget.LinearLayout.ayoutVertical(LinearLayout.java:1528)在android.vi上的android.view.View.layout(View.java:14255) ew.ViewGroup.layout(ViewGroup.java:4413)位于android.view.View.Viewout.layout的android.view.View.layout(View.java:14255)的android.widget.FrameLayout.onLayout(FrameLayout.java:446) (ViewGroup.java:4413)在Android.view.ViewRootImpl.exeTraversals(ViewRootImpl.java:1812)上的android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1998)处于android.view.ViewRootImpl.doTraversal(ViewRootImpl.java: 1050)在Android.view.ChoreIs上的android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:4560),在android.view.Choreographer.doCallbacks(Choreographer.java:562)的android.view.Choreographer $ CallbackRecord.run(Choreographer.java:749) )在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:735)android.view.Handler.handleCallback(Handler.java:725)android.view.Choreographer.doFrame(Choreographer.java:532)位于android.app.Looper.loop(Looper.java:137)的.os.Handler.dispatchMessage(Handler.java:92)位于java.lang.reflect的android.app.ActivityThread.main(ActivityThread.java:5171)。中号 在com.android的com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:797)的java.lang.reflect.Method.invoke(Method.java:511)中的ethod.invokeNative(Native Method)。在dalvik.system.NativeStart.main(Native方法)的internal.os.ZygoteInit.main(ZygoteInit.java:564) 我已经尝试通过在notifyDataSetChanged()放入messages.add()和notifyDataSetChanged()来解决这个runOnUIThread 。 我想这是因为我的侦听器的onUpdate()被调用每个推送消息。 但是, runOnUIThread()不应该解决这个问题,因为一切都是连续执行的吗? MainApplication app = (MainApplication) context.getApplicationContext(); app.setOnRoomMessageUpdateListener(new OnRoomMessageUpdateListener() { @Override public void onUpdate() { // save message with highest time, so we can only query the new […]

如何使用Android Studio开发Google App Engine后端

我正在尝试将Google App Enginefunction添加到我的Android应用中。 我正在使用Android Studio,看过Brad Abrams Google I / O谈话和另一个教程 ,但Android Studio似乎已经从去年的这个时候开始了,并且Google Cloud Endpointsfunction已被删除。 我可以在GitHub上看到菜单选项“Generate App Engine Backend”已从Android Studio中删除,并替换为“New App Engine Gradle Module”。 是否有任何选项允许我像Android Studio中的那些示例一样生成App Engine后端,或者我是否需要使用Eclipse来执行此操作?

在某些情况下,在Android中GCM ID不可用的原因是什么

您好我们正在开发一个Android应用程序,其中GCM在营销目的中起着非常重要的作用,将一些重要信息推送给用户等。 它在60-70%的情况下工作正常,但其他30-40%不起作用。 因此,其他用户永远不会收到任何仅对他们有用的通知。 这就是我们每天都在失去用户的原因。 下面是我获取GCM注册ID的代码。 String msg = “”; int exceptionOccurRetry = 0; while (exceptionOccurRetry < 5) { try { if (gcm == null) { gcm = GoogleCloudMessaging.getInstance(context); } int retry = 0; while (retry < 5 && regid.length() == 0) { regid = gcm.register(SENDER_ID); ++retry; } msg = "Device registered, registration ID=" + regid; […]

C2DM到Google云消息传递(GCM)

您可能已经看到,Google正在迁移其推送通知系统。 适用于GCM的Google Developer指南 我想我不是一个人在想:从C2DM获得的令牌对GCM仍然有效吗? 如果没有,这意味着我需要所有用户使用更新服务器上的令牌的新版本更新我的应用程序… 要么 我可以保留并行系统,这是我认为不是一个好的解决方案 要么 继续使用C2DM直到它完成,然后我死了:-)

如何在卸载应用程序后从GCM取消注册

我在我的应用程序中配置了GCM。 我想在用户卸载应用程序时从GCM取消注册设备。 我把代码作为 Intent unregIntent = new Intent(“com.google.android.c2dm.intent.UNREGISTER”); unregIntent.putExtra(“app”, PendingIntent.getBroadcast(this, 0, new Intent(), 0)); startService(unregIntent); 但是我们必须把这段代码放在哪里..? 谢谢。