Articles of android c2dm

GCM android推送通知始终显示旧消息。 意图收到错误

我有一个完美的GCM通知实现。 但是,问题是一旦在接收到的方法中意图收到消息,所显示的消息始终是旧消息。 那就是’extras.getString(“payload”)’总是显示旧消息。 我似乎无法弄清楚问题是什么。 发送GCM通知的类是: import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class C2DMMessageReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Log.w(“C2DM”, “Message Receiver called”); if (“com.google.android.c2dm.intent.RECEIVE”.equals(action)) { Log.w(“C2DM”, “Received message”); String payload = intent.getStringExtra(“payload”); Log.d(“C2DM”, “dmControl: payload = […]

C2DMBroadcastReceiver的onReceive未执行(For Registration)

我正在开发C2DM消息应用程序。 在那,我命令使用C2DMBroadcastReceiver , C2DMBaseReceiver和C2DMMessaging类接收注册ID。 我将在我的包中使用C2DMBaseReceiver扩展C2DMBaseReceiver 。 这是我的代码片段 C2DMMessaging.java package com.google.android.c2dm; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.util.Log; public class C2DMessaging { public static final String EXTRA_SENDER = “sender”; public static final String EXTRA_APPLICATION_PENDING_INTENT = “app”; public static final String REQUEST_UNREGISTRATION_INTENT = “com.google.android.c2dm.intent.UNREGISTER”; public static final String REQUEST_REGISTRATION_INTENT = “com.google.android.c2dm.intent.REGISTER”; public […]

应用程序处于停止状态时接收Android GCM通知

在我们的一个使用GCM的应用程序上,我们一直在收到有关应用程序被杀后应用程序停止接收通知的报告。 再次启动应用程序时,通知显示正常。 经过调查,我们发现这是由于Android 3.1上的这一变化: 请注意,系统将FLAG_EXCLUDE_STOPPED_PACKAGES添加到所有广播意图。 这样做是为了防止来自后台服务的广播无意或不必要地启动已停止的应用程序的组件。 后台服务或应用程序可以通过将FLAG_INCLUDE_STOPPED_PACKAGES标志添加到应允许激活已停止的应用程序的广播意图来覆盖此行为。 ( Android 3.1更改 ) 当我收到通知时,我检查了GCM触发的意图,我注意到确实设置了FLAG_EXCLUDE_STOPPED_PACKAGES。 这意味着在Android 3.1+上运行我们的应用的所有用户一旦杀死他们的应用就会停止接收通知,直到他们自己重启。 (Pre-Android 3.1工作得很好)。 由于GCM框架本身触发了intent,我们无法更改在其上设置的标志,因此我们正在寻找另一种解决方法。 所有的想法都表示赞赏

是否有GCM registrationId模式?

/** * @author Sebastien Lorber (lorber.sebastien@gmail.com) */ public enum EnumDeviceType { ANDROID { @Override public boolean validateDeviceIdentifier(String deviceIdentifier) { Preconditions.checkArgument( !Strings.isNullOrEmpty(deviceIdentifier) ); return ANDROID_REGISTRATION_ID_PATTERN.matcher(deviceIdentifier).matches(); } }, IOS { @Override public boolean validateDeviceIdentifier(String deviceIdentifier) { Preconditions.checkArgument( !Strings.isNullOrEmpty(deviceIdentifier) ); return IOS_DEVICE_TOKEN_PATTERN.matcher(deviceIdentifier).matches(); } }, ; // TODO how do we validate registration Ids public static final Pattern ANDROID_REGISTRATION_ID_PATTERN […]

将LocationManager作为服务Android启动

我正在尝试做的是在收到c2dm消息时,启动一个服务,询问位置“x”的时间,然后将该位置移交给我们的服务器。 c2dm消息正确启动服务,GPS位置打开,但它永远不会更新。 它只是坐在那里我指定的时间长度(目前为12秒)并没有做任何事情。 我在我的应用程序中使用完全相同的代码(不是作为服务)并且它完美地工作。 我究竟做错了什么? 这会在收到c2dm消息时启动服务。 context.startService(new Intent(context, ServicePingLocation.class)); 这是服务本身的代码。 所有被称为“onCreate”和“onStart”的东西。 public class ServicePingLocation extends Service implements LocationListener { private final String DEBUG_TAG = “[GPS Ping]”; private boolean xmlSuccessful = false; private boolean locationTimeExpired = false; private LocationManager lm; private double latitude; private double longitude; private double accuracy; @Override public void onLocationChanged(Location location) { Log.d(DEBUG_TAG, […]

基于接收广播意图启动网络通信的正确方法是什么?

我开始使用谷歌的C2DM了。 此过程的一部分涉及在注册发生时接收广播意图。 在Google的官方C2DM文档中 ,示例代码在BrodcastReceiver的onReceive()方法中显示以下注释: // Send the registration ID to the 3rd party site that is sending the messages. // This should be done in a separate thread. 但是,我读过的所有内容,包括BroadcastReceiver的文档 ,都表明从onReceive()启动一个线程几乎肯定会导致问题,因为只要onReceive()返回,该过程很可能很快被杀死。 有人可能犯了一个错误,我应该忽略关于使用单独线程的评论,但我猜他们说这是有原因的,即使它有误导性。 有没有理由在返回之前不能或不应该使用与onReceive()相同的线程中的网络? 如果这样做有问题,即使在C2DM之外,处理必须是常见情况的正确方法是什么? 开始服务?

需要简单实现Android C2DM

我正在尝试实现Android c2dm。 我查看了文档,看到了提供的跳转说明和镀铬到手机样品…… 但我无法弄清楚这个过程。 如果我可以简单地实现c2dm,那么当我们从服务器发送请求时,它会显示简单的通知… Plz help

Android c2dm每天的设备配额是多少?

有没有人知道Android c2dm每天的设备配额? PS:我对20万的申请配额不感兴趣。

尝试制作标志apk时“C2D_message并不是唯一的”

我正在尝试发布APK,而我正在尝试生成签名APK,我收到此错误 Error:Error: Permission name C2D_MESSAGE is not unique (appears in both com.company.myApp.permission.C2D_MESSAGE and com.company.myApp2.permission.C2D_MESSAGE) [UniquePermission] 这是我的清单文件: <!—-> <!– <!—-> <!– 有人知道这有什么不对吗? 我已经尝试将使用权限更改为权限,其中有C2D_它不起作用。

在Android中注册C2DM的问题

我正在尝试测试C2DM框架。 我几天前收到了确认电子邮件,然后尝试创建一个可以注册的客户端。 为此,我按照本教程中描述的步骤创建了一个简单的客户端: http : //code.google.com/intl/es-419/android/c2dm/index.html 。 Android清单文件包含以下代码: 然后,程序启动时启动的主要活动具有以下代码: Intent registrationIntent = new Intent(“com.google.android.c2dm.intent.REGISTER”); registrationIntent.putExtra(“app”, PendingIntent.getBroadcast(this, 0, new Intent(), 0)); // boilerplate registrationIntent.putExtra(“sender”,”mytestemail@gmail.com”); Log.d(“WelcomeScreen”,”mytestemail@gmail.com”); startService(registrationIntent); 我还在运行我的客户端的AVD上注册了一个谷歌帐户,因为他们说这是必需的。 但问题是我不能让广播接收器“醒来”。 我不知道什么是错的。 通过分析日志,我可以看到注册意图已经创建并且显然正确使用,但接收器代码永远不会被执行,可能是什么错误? 在此先感谢尼尔森