我的Android应用程序中有一个与亚马逊SNS服务相关的问题。我正在使用亚马逊SNS推送服务。请查看此链接http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html有关亚马逊SNS服务的更多详细信息,请参阅。
我像在Amazon samples http://docs . AWS . Amazon . com/SNS/latest/DG/mobile-push-GCM . html中一样实现了它,它在一段时间内对我来说工作得很好。
但最近,一些使用Android 4.0.3或4.0.4的用户向我报告了一份报告,称推送服务不正确。我开始调查这个问题,并发现了一个奇怪的行为:有时我的推送接收器使用消息“unregistered=my.package.name”而不是我推送的真实消息进行推送。
以下是我的AndroidManifest.xml代码:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="my.package"
android:versionCode="14"
android:versionName="1.49" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="com.google.android.c2dm.permission.REGISTER" />
<permission android:name="my.package.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="my.package.permission.C2D_MESSAGE" />
<application
android:name="com.test.package.AppClass"
android:allowBackup="true"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar" >
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<receiver
android:name="com.test.package.ExternalReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<action android:name="com.google.android.c2dm.intent.REGISTER" />
<category android:name="com.test.package" />
</intent-filter>
</receiver>
</application>
</manifest>
这是我的外部接收器:
public class ExternalReceiver extends BroadcastReceiver {
private static final String ACTION_REGISTRATION = "com.google.android.c2dm.intent.REGISTRATION";
private static final String ACTION_RECEIVE = "com.google.android.c2dm.intent.RECEIVE";
private static final String UNREGISTERED = "unregistered";
public void onReceive(Context context, Intent intent) {
if (intent != null) {
Bundle extras = intent.getExtras();
String message = "";
String action = intent.getAction();
if (extras != null) {
for (String key : extras.keySet()) {
message += key + "=" + extras.getString(key) + "\n";
}
}
if (action.equalsIgnoreCase(ACTION_REGISTRATION)) {
Log.i(TAG, message);
} else if (action.equalsIgnoreCase(ACTION_RECEIVE)) {
String pushText = intent.getStringExtra("default");
processPush(pushText, context);
}
}
}
}
这是一个LogCat消息,当我推送到已经注册的设备时,我有一些消息:
12-20 13:32:33.683: I/Test ExtrernalReceiver(5353): registration_id=APA91bFQymRS8NOPgHDlFicpQIXDwvgWQR6_CVYC1Le-Cmhl8uTzPDPVbe1yjjKdQjMsilo4XGImAiX8ORnkZiySjbwgTmzC7lC8T3Plch1m0faKiiqc6hl75msTBmMIBhtLtKdtz_R6CY1yjygvyWplTh_yq04tCaOKCfcDcsYwYbQdmscyfUA
12-20 13:32:49.693: I/Test ExtrernalReceiver(5353): registration_id=APA91bFQymRS8NOPgHDlFicpQIXDwvgWQR6_CVYC1Le-Cmhl8uTzPDPVbe1yjjKdQjMsilo4XGImAiX8ORnkZiySjbwgTmzC7lC8T3Plch1m0faKiiqc6hl75msTBmMIBhtLtKdtz_R6CY1yjygvyWplTh_yq04tCaOKCfcDcsYwYbQdmscyfUA
12-20 13:33:19.763: I/Test ExtrernalReceiver(5353): unregistered=my.package
如果您的清单显示您的接收者条目有点偏离。此处的意向过滤器类别标签需要与您的应用程序包匹配(请参阅第2行<code>package=“my.package”)。其中一个包名是错误的。
<receiver
android:name="com.test.package.ExternalReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<action android:name="com.google.android.c2dm.intent.REGISTER" />
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="my.package" />
</intent-filter>
</receiver>
如果实际包是“com.test.package”,则更改两个引用
<category android:name="com.test.package" />
和
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.package"
我建议在这里将更新的Google Play服务示例与支持库一起使用(它使用支持库WakefulBroadcast收件人,不再需要为以下操作设置广播接收器:
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<action android:name="com.google.android.c2dm.intent.REGISTER" />
…因为您可以通过以下方式向GCM注册您的申请:
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context);
String regId = gcm.register(senderId);
我们正在开发一个系统,我们需要向数千部手机发送推送通知。我们使用Amazon SNS进行了设置。我们将向每部手机发送单独的消息,因此我们直接发送到SNSendpointARN,而不是主题ARN。 我们目前正在想这个系统的性能。我在网上找不到任何关于可以向SNS发送多少消息的内容。例如,如果我需要向25000个SNSendpoint发送25000条消息,我可以以多快的速度发送它们?秒、分钟、小时?
我对amazon sns有奇怪的问题。我正在使用amazon aws的nodejs sdk向android设备发送推送通知。问题是当我将消息发送到亚马逊服务器时,它会返回一个MessageID,但消息没有传递。 这是亚马逊发布的代码: 如果我使用亚马逊控制台发布通知工作完美。此外,如果我从gcmMessage中删除JSON.stringify,它正在发送push通知,但没有gcm数据。
亚马逊云 图 1.20.2.1 - AWS AWS,即 Amazon Web Services,是亚马逊(Amazon)公司的 IaaS 和 PaaS 平台服务。AWS 提供了一整套基础设施和应用程序服务,使用户几乎能够在云中运行一切应用程序:从企业应用程序和大数据项目,到社交游戏和移动应用程序。AWS 面向用户提供包括弹性计算、存储、数据库、应用程序在内的一整套云计算服务,能够帮助企业降低 IT
我使用的是Hazelcast v3。6在两台amazon AWS虚拟机上(不使用hazelcast的AWS特定设置)。连接应该通过TCP/IP连接设置(而不是多播)工作。我已在虚拟机上打开5701-5801地址进行连接 我曾尝试在两台虚拟机上使用iperf,通过这两台虚拟机,我可以看到一台虚拟机上的客户机连接到另一台虚拟机上的服务器(当我切换iperf的客户机-服务器设置时,反之亦然)。 当我在不
我正在尝试使用亚马逊AWS向我的手机发送短信。特别是,我正在使用SNS服务,在创建新订阅的过程中陷入了困境。 抱歉,我的屏幕截图在下拉菜单中无法工作,所以我用手机拍了一张贫民区的照片。 有什么想法吗?
我正在使用亚马逊 SNS 和亚马逊认知服务在 iOS 应用程序中实施推送通知。Cognito成功保存了代币,我的应用程序收到通知,一切正常,但有一件事。 现在,当仍在开发中时,我需要手动将endpoint添加到SNS主题,以便所有订阅者都可以获得通知。当我向App Store推送更新时,将会有数千个令牌需要添加。 我正在研究Amazon AWS留档,但不知道是否有可能在没有额外努力的情况下实现它。