我正在AWS为我的android项目使用资源,我打算为我的项目添加推送通知服务AWS SNS.有几个问题困扰我.我没有发现任何关于这些的问题,除了一两个但解释不清楚.
1. AWS支持FCM吗?SNS与...合作GCM.但谷歌建议使用FCM代替GCM.我没有找到AWS支持FCM.
2. AWS即使在发送推送通知后,还是将消息(或数据)存储到他们的数据库中?
3.我试过把FCM api密钥放在SNS应用平台上,显示无效参数为什么?
android amazon-web-services amazon-sns google-cloud-messaging firebase-cloud-messaging
自从我更新到Android SDK工具25.1.6和Android支持存储库32.0.0(今天早上)后,我收到以下错误,我没有更改我的代码中的任何内容,它仍在我的同事计算机上运行(Android SDK工具) 25.1.1 + Android支持存储库30.0.0).
java.lang.IncompatibleClassChangeError: The method
'java.io.File android.support.v4.content.ContextCompat.getNoBackupFilesDir(android.content.Context)'
was expected to be of type virtual but instead was found to be of type direct
(declaration of 'java.lang.reflect.ArtMethod' appears in /system/framework/core-libart.jar)
at com.google.android.gms.iid.zzd.zzeb(Unknown Source)
at com.google.android.gms.iid.zzd.<init>(Unknown Source)
at com.google.android.gms.iid.zzd.<init>(Unknown Source)
at com.google.android.gms.iid.InstanceID.zza(Unknown Source)
at com.google.android.gms.iid.InstanceID.getInstance(Unknown Source)
at com.xxxxxxx.utils.RegistrationIntentService.onHandleIntent(RegistrationIntentService.java:55)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.os.HandlerThread.run(HandlerThread.java:61)
Run Code Online (Sandbox Code Playgroud)
这是一段崩溃的代码:
InstanceID instanceID = InstanceID.getInstance(this); // <-- crash here
String instanceIDToken = instanceID.getToken(getString(R.string.google_app_id),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
Run Code Online (Sandbox Code Playgroud)
当我尝试从Google Cloud Messaging获取令牌时.
我正在使用分割的播放服务在Gradle中导入GCM:
compile 'com.google.android.gms:play-services-analytics:9.0.0'
compile …Run Code Online (Sandbox Code Playgroud) android google-cloud-messaging android-gradle-plugin firebase-cloud-messaging
我尝试迁移到GCM,我有一个问题,与SENDER_ID我需要提供.我使用谷歌的演示项目.在这个项目中,如果我理解这一点,我需要SENDER_ID在CommonUtilities.java文件中为应用程序提供一个.
我提供的SENDER_ID是我在https://code.google.com/apis/console/上注册的API密钥,其格式为:( AIzaSyAxxxxxxx_xxxxxxxxxxxnoGZw共40个字符).
当SENDER_ID我在"BroadcastReceiver mHandleMessageReceiver"上使用此字符串时出现错误消息:来自GCM:错误(INVALID_SENDER)..
哪里出错了?我提供的字符串不是SENDER_ID?
谢谢.
我正在使用prod的构建方案和一个用于暂存的构建方案(具有2个不同的bundle标识符),我正在尝试为每个方案使用单独的GoogleService-Info.plist.在初始化GCM(和goole登录)时,有没有办法手动选择要使用的plist文件?或者是否可以避免使用plist并手动进行设置?
谢谢!
在Google Cloud Messaging的文档中,它指出:
Android应用程序应该存储此ID以供以后使用(例如,如果已经注册,则检查onCreate()).请注意,Google可能会定期刷新注册ID,因此您应该设计Android应用程序,并了解可能会多次调用com.google.android.c2dm.intent.REGISTRATION意图.您的Android应用程序需要能够做出相应的响应.
我使用以下代码注册我的设备:
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context);
String regID = gcm.register(senderID);
Run Code Online (Sandbox Code Playgroud)
GoogleCloudMessaging类封装了注册过程.那么我想如何处理com.google.android.c2dm.intent.REGISTRATION,因为处理是由GoogleCloudMessaging类在内部完成的?
是否可以将数字推送通知(GCM)的每日限制发送给特定的Android应用程序用户?
我正在尝试使用新的Google Cloud Messaging系统,但我遇到了一些问题.
我阅读了入门文档并查看了演示应用程序; 之后,我将需求应用于我的应用程序,然后我创建了一个带有API 16的新虚拟设备.
但是当我尝试将我的设备注册到GCM时,由于这一行而失败:
GCMRegistrar.checkDevice(getApplicationContext());
Run Code Online (Sandbox Code Playgroud)
在logcat中我看到这些错误:
07-05 07:06:31.925: E/AndroidRuntime(691): FATAL EXCEPTION: main
07-05 07:06:31.925: E/AndroidRuntime(691): java.lang.UnsupportedOperationException: Device does not have package com.google.android.gsf
07-05 07:06:31.925: E/AndroidRuntime(691): at com.google.android.gcm.GCMRegistrar.checkDevice(GCMRegistrar.java:83)
07-05 07:06:31.925: E/AndroidRuntime(691): at aero.tav.mobile.genel$4.onClick(genel.java:201)
07-05 07:06:31.925: E/AndroidRuntime(691): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
07-05 07:06:31.925: E/AndroidRuntime(691): at android.os.Handler.dispatchMessage(Handler.java:99)
07-05 07:06:31.925: E/AndroidRuntime(691): at android.os.Looper.loop(Looper.java:137)
07-05 07:06:31.925: E/AndroidRuntime(691): at android.app.ActivityThread.main(ActivityThread.java:4745)
07-05 07:06:31.925: E/AndroidRuntime(691): at java.lang.reflect.Method.invokeNative(Native Method)
07-05 07:06:31.925: E/AndroidRuntime(691): at java.lang.reflect.Method.invoke(Method.java:511)
07-05 07:06:31.925: E/AndroidRuntime(691): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-05 07:06:31.925: E/AndroidRuntime(691): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-05 07:06:31.925: E/AndroidRuntime(691): at …Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的Android应用创建推送服务,并且我遵循Google GCM的文档和示例:
我可以注册/取消注册我的Android应用程序.从我的服务器端,我可以看到我注册了一个订阅,但当我尝试从服务器向我的Android应用程序发送消息时,我总是会收到以下错误:
向设备#0发送消息时出错:MismatchSenderId
对于我的Android应用,我使用SENDER_ID = 200000000001.
对于我的服务器端,谷歌说我使用API_KEY = AIzxxxxxxxxxxxxxxxxXxxXxxXxxxXXXXXxxxxs
我按照这个文件:
我也在我的Google API面板中启用了GCM,但我会收到恼人的错误消息.
我该如何解决这个问题?
我正在尝试使用Firebase-Notification API,当我将下游消息从控制台发送到应用程序时,该服务是完美的,但如何向主题注册用户发送消息?
我在android方面做过
FirebaseMessaging.getInstance().subscribeToTopic("TopicName");
Run Code Online (Sandbox Code Playgroud)
但当我尝试从控制台向主题发送下游消息时,它说
This project does not have any topics
Run Code Online (Sandbox Code Playgroud)
编辑:我发现在映射主题后,最多需要1天才能显示在Firebase控制台中
android firebase google-cloud-messaging firebase-notifications
这发生在针对Google Cloud Messaging的编码环境中,但适用于其他地方.
考虑以下:
var http = new HttpClient();
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("key=XXX");
Run Code Online (Sandbox Code Playgroud)
和
var http = new HttpClient();
http.DefaultRequestHeaders.Add("Authorization", "key=XXX");
Run Code Online (Sandbox Code Playgroud)
这两个都生成FormatException:
System.FormatException:值key = XXX'的格式无效.
解决方案是删除等号.
深入研究反射器显示,在添加新的标头值时会运行大量的验证和解析代码.为什么这一切都是必要的?难道这个客户不应该让我们走开吗?
如何逃避等号以便添加此值成功?