04-25 14:16:30.931: E/AndroidRuntime(6638): FATAL EXCEPTION: main
04-25 14:16:30.931: E/AndroidRuntime(6638): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {com.exclusive26.igale/com.exclusive26.igale.Push_Activity}: java.lang.SecurityException: Not allowed to start service Intent { act=com.google.android.c2dm.intent.REGISTER pkg=com.google.android.gsf (has extras) } without permission com.google.android.c2dm.permission.RECEIVE
04-25 14:16:30.931: E/AndroidRuntime(6638): at android.app.ActivityThread.deliverResults(ActivityThread.java:2553)
04-25 14:16:30.931: E/AndroidRuntime(6638): at android.app.ActivityThread.handleSendResult(ActivityThread.java:2595)
04-25 14:16:30.931: E/AndroidRuntime(6638): at android.app.ActivityThread.access$2000(ActivityThread.java:121)
04-25 14:16:30.931: E/AndroidRuntime(6638): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:973)
04-25 14:16:30.931: E/AndroidRuntime(6638): at android.os.Handler.dispatchMessage(Handler.java:99)
04-25 14:16:30.931: E/AndroidRuntime(6638): at android.os.Looper.loop(Looper.java:130)
04-25 14:16:30.931: E/AndroidRuntime(6638): at android.app.ActivityThread.main(ActivityThread.java:3701)
04-25 14:16:30.931: E/AndroidRuntime(6638): at java.lang.reflect.Method.invokeNative(Native …Run Code Online (Sandbox Code Playgroud) 我想知道是否有人在使用谷歌C2DM时遇到过这个问题?这是我面临的情景:
现在我从我的服务器向用户的手机发送消息,他们收到重复的消息.
任何人都可以了解这是预期的行为或我如何解决它?谢谢,
我想为Android手机用户提供推送通知服务,Android推送通知服务是否有推送通知服务?
我目前正在开发一个具有C2DM实现的Android应用程序,并且我成功实现了它.但是现在我在向多个设备发送消息时遇到了问题.
根据我的理解,以下将是它的过程:
但问题是:
每次我启动应用程序时它会要求注册并将其发送到服务器,因此,如果一个设备注册10次上述循环将失败9次并且工作一次,这将使非常大的数据库无效.
当我们想要使用我的应用程序向所有设备发送消息以及如何在数据库中保存reg_id和authcode时,有没有人知道什么是服务器端代码(我正在使用PHP).
谢谢
我需要为Android发送推送通知(比如iOS我需要一个设备udid来发送一个简单的推送)?
如果我需要获取我的设备的注册ID,我怎么能得到它?
谢谢.
我正在开发一个使用C2DM来接收推送通知的应用程序.我已经实现了整个C2DM电路(客户端和服务器),它工作正常.
目前,我的应用程序有一个按钮来引导C2DM注册,当从Google收到注册ID令牌时,我会在我的应用服务器中调用webservice以将设备与注册ID相关联.
我将在我的应用程序中实现身份验证,并且我有一些与C2DM注册处理相关的问题.
我正在使用C2DM服务,当我收到消息时,我也会收到错误"将消息发送到死线程上的处理程序",同时显示Toast消息,我希望看到消息到达.使用代码:
@Override
protected void onMessage(Context context, Intent intent) {
Log.e("C2DM", "Message: arived");
Bundle extras = intent.getExtras();
if (extras != null) {
//Toast.makeText(this.getApplicationContext(), (CharSequence) extras.get("payload"), Toast.LENGTH_LONG).show();
}
}
Run Code Online (Sandbox Code Playgroud)
onMessage方法用于扩展的类中C2DMBaseReceiver.Toast messatge永远不会显示.
这里的错误是什么?有什么灵魂吗?
编辑:
09-06 08:59:02.135: WARN/MessageQueue(5654): Handler{44e65658} sending message to a Handler on a dead thread
09-06 08:59:02.135: WARN/MessageQueue(5654): java.lang.RuntimeException: Handler{44e65658} sending message to a Handler on a dead thread
09-06 08:59:02.135: WARN/MessageQueue(5654): at android.os.MessageQueue.enqueueMessage(MessageQueue.java:179)
09-06 08:59:02.135: WARN/MessageQueue(5654): at android.os.Handler.sendMessageAtTime(Handler.java:457)
09-06 08:59:02.135: WARN/MessageQueue(5654): at android.os.Handler.sendMessageDelayed(Handler.java:430)
09-06 08:59:02.135: WARN/MessageQueue(5654): at …Run Code Online (Sandbox Code Playgroud) 虽然有些问题被接受,但我看到了许多类似的问题,但没有很好的答案.我已注册C2DM.我收到了确认邮件.然后我写了一些简单的应用程序来注册C2DM.我得到了id(在模拟器和真实设备上试过).然后我获得了我用于C2DM注册的电子邮件的auth令牌(带卷曲)(我在app中用来获取id的电子邮件).
当我尝试执行推送(也使用curl)时,我收到401错误(就像auth令牌错误一样).
我阅读了很多教程,但我的想法已经不多了.
我想知道从广播接收器启动asynctask是否被视为不良做法?我基本上注册了谷歌的C2DM服务器,然后当我拦截注册的广播接收器时,我想将它发送到我的服务器.
实现这个目标的最佳方法是什么?
我开始使用FCM For Android写下一个简单的推送通知应用程序.但我在我的Android工作室日志中收到了这条消息.
signInWithCustomToken com.google.firebase.FirebaseException:发生内部错误.[伊朗不提供此服务.如果您认为原始国家/地区被错误识别,请通过https://support.google.com/websearch/contact/ip进行报告.]
当我使用VPN更改我的IP时,我的Android(客户端)应用程序正常工作[成功注册和登录和接收通知].
我的问题:除了强迫客户使用VPN之外,有没有办法在我的项目中使用FCM?如果没有为FCM提供免费和付费的其他替代方案,那么你可以为跨平台推送通知提供服务吗?[很明显,使用FCM/GCM服务作为第三方的公司,如Batch.com,Backendless,Pushwoosh不会做任何帮助]
免费,我的意思是少量用户(约1000 MAU)
编辑:正如AntoineGuénard所说,批量我的应用程序注册并获得令牌和认证没有任何问题,但只通过VPN接收测试通知.
android push-notification android-c2dm firebase google-cloud-messaging