我的应用使用Google的C2DM(推送通知)来通知用户有关朋友的新活动.安装应用程序后,我将设备注册到C2DM服务器并存储用户的电话号码.所以我知道用户正在使用我的应用程序,我可以向他/她发送推送通知.但是如果用户卸载我的应用程序会发生什么,有没有办法在我的应用程序中捕获它?或者唯一的方法是当我发送C2DM并且无法访问时,在我的服务器上捕获错误,然后将用户标记为非活动状态?
我很乐意在他们的朋友使用应用程序时以及他们不再使用时通知用户.
什么是这种情况的最佳解决方案?
我已将我的应用程序上传到谷歌播放,但用户报告了以下异常
java.lang.RuntimeException:WakeLock未锁定C2DM_LIB.当我尝试释放时发生此异常WakeLock
.任何人都可以告诉可能是什么问题.
我是Android应用程序开发的新手,我正在学习一点点.我的艰巨任务是从我的网络服务器(PHP)向Android应用程序(只是一个"helloworld")发送推送通知(云消息).我做了一些"谷歌搜索",我的疑虑很少
请帮助我可以任何人请给我一个代码示例或文档,以便从PHP服务器发送简单的通知?
提前致谢
我即将为我的应用程序实现C2DM,但我发现有关如何编写清单的文档有点令人困惑.
清单代码示例包含:
<!-- Only this application can receive the messages and registration result -->
<permission android:name="com.example.myapp.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="com.example.myapp.permission.C2D_MESSAGE" />
Run Code Online (Sandbox Code Playgroud)
这解释如下:
applicationPackage +".permission.C2D_MESSAGE阻止其他应用程序注册和接收应用程序的消息.
但这究竟是如何工作的呢?据我所知,这声明了一个权限,然后获得我的应用程序的权限.但是这个许可究竟在哪里执行?
注册的代码是:
Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER");
registrationIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0)); // boilerplate
registrationIntent.putExtra("sender", emailOfSender);
startService(registrationIntent);
Run Code Online (Sandbox Code Playgroud)
接收registrationIntent的服务如何知道要检查的权限?据我所知(如果我错了,请纠正我),在声明权限时,我可以在我的命名空间中选择任何权限名称,例如com.example.myapp.permission.WHATEVER.
或者C2D_MESSAGE是我必须使用的魔法常数?
此外,文档说我必须实现接收器com.google.android.c2dm.intent.C2D_MESSAGE
和com.google.android.c2dm.intent.REGISTRATION
Intents.但在代码示例中,接收者的过滤器仅包含.intent.RECEIVE
和.intent.REGISTRATION
Intents.C2D_MESSAGE
去哪儿了,它和我上面的问题有什么关系吗?
我希望这不是显而易见的事情,但我只是不明白......请帮忙.
在没有文本被截断的情况下,Android中的推送通知中可以显示的最大字符数是多少?
iPhone的文档说明通知有效负载总共不得超过256个字节,但我无法找到类似Android的东西.
我正在创建使用C2DM推送通知的Android应用程序.但我在创建PHP代码以使用c2dm发送消息时遇到问题.请指导我如何使用PHP代码发送消息.实际上有一个问题,如何获得客户端身份验证令牌.我已经看过http://code.google.com/android/c2dm/index.html#server网址,但根据这个我创建了Android应用程序,我也获得了注册ID,我也发送给用户,但如何服务器使用它来发送应用程序.
服务器从Android设备发送消息需要什么?
我正在研究我最初在iPhone上创建的应用程序的Android版本,这个应用程序需要每天向用户发送数百万个推送通知(如果它像iPhone版本一样成功).
我天真地认为Android平台有一个推送通知服务作为它的兄弟,所以我决定在开发结束时看看这个功能,现在我在这里!
我搜索了stackoverflow以获取有关此功能的问题(问题?)并找到了几个选项(感谢大家!)但是你们中的任何一个人能够用这样的音量来实现这样的功能吗?
这是我找到的选项:
我读过Xtify或Urban Airship,但这些商业解决方案都没有帮助(数量或成本).
谢谢你的任何提示!
编辑:我的目标是每天最多发送5,000,000条通知
我正在尝试执行一个示例C2DM应用程序,但我得到了一个
"未检测到GPU仿真的仿真器"`
我的Logcat中的消息.
想要了解推送通知的根本原因,例如谷歌云消息传递(之前称为谷歌云到设备消息传递)更适合电池,用于云< - >设备通信?
在我看来,替代技术涉及"轮询"(通过TCP/IP),同时使用keep-alives将连接保持在CONNECTED状态.还是有更好的东西?
我对GCM的有限承诺是,它还使用TCP/IP和Keepalive,但客户端从不轮询服务器的状态.相反,服务器通知客户端有关传入消息,并且订阅特定类型消息的应用程序将异步通知消息.此外,公共GCM连接在多个应用程序之间共享,因此允许设备电子设备在"协调"时间睡眠/休眠,而没有多个应用程序使电子设备保持比其需要的"开启"(电活动).这是正确的理解吗?或者还有更多吗?
最后,这与使用keepalive的TCP/IP上的MQTT相比如何?MQTT(显然)比GCM电池效率低的原因是什么?
我正在尝试对是否可以接收C2DM消息进行最佳猜测估计.
我创建了一个应用程序,它依赖于在手机无法访问时将信息推送到手机.我知道C2DM不能保证交付,但我至少想知道什么时候可以传递消息; 当它不是我们回到我们自己的推送服务(并且实际上可以告诉我们什么时候连接).
我注意到即使没有登录谷歌帐户,Android上的C2DM仍会发出身份验证令牌; 消息似乎仍然在这个实例中传递,即使它声明它们不应该.如果未连接GTalk(防火墙或其他原因),则在请求身份验证令牌时根本不会返回任何响应.当手机处于飞行模式时,Auth令牌将返回到应用程序.这意味着它并不像检查互联网是否可用那么简单.我找不到一种可靠的方法来检查GTalk是否已登录.
同样,我不需要保证邮件的传递,但我至少想知道交付是否可行.有人有有趣的解决方案吗?
android-c2dm ×10
android ×9
mqtt ×2
detect ×1
google-talk ×1
ios ×1
php ×1
uninstall ×1
xmpp ×1