我有2个应用。一个是来自AWS Mobile Hub的示例应用程序,另一个是用于测试AWS SNS推送通知的测试项目。我将示例应用程序中的推送服务集成到我的测试应用程序中,但由于某些原因它无法正常工作,它不会从AWS SNS获得任何推送通知。
我复制的东西是:
包com.amazonaws.mobile
及其所有文件。
模块的build.gradle
文件中的库。
清单文件中的权限,接收方和服务属性。
PushListenerService
上课。
出于某种原因,我仍然没有得到任何推送通知。你知道该怎么办吗?
答案 0 :(得分:-1)
您是否尝试过遵循AWS Mobile Hub的新集成说明? imgur.com/a/s9BaW
只列出列表中似乎缺少的一些内容:
您需要在build.gradle
中添加 Gradle依赖关系(版本可能会有所不同)
compile 'com.google.android.gms:play-services-plus:7.8.0'
compile 'com.amazonaws:aws-android-sdk-sns:2.2.18'
将 Google服务版指定为AndroidManifest.xml
<meta-data android:value="@integer/google_play_services_version" />
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
注册 Intent Receiver for GCM 以收听GCM通知
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="{com.yourapp.package}" />
</intent-filter>
</receiver>
<service
android:name=".PushListenerService"
android:exported="false" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
注册设备以接收推送通知
final PushManager pushManager = AWSMobileClient.defaultMobileClient()
.getPushManager();
pushManager.registerDevice();
// if registration succeeded.
if (pushManager.isRegistered()) {
pushManager.setPushEnabled(enabled);
} else {
// ... handle error, likely due to no network available ...
}
final PushManager pushManager = AWSMobileClient.defaultMobileClient()
.getPushManager();
pushManager.registerDevice();
// if registration succeeded.
if (pushManager.isRegistered()) {
pushManager.setPushEnabled(enabled);
} else {
// ... handle error, likely due to no network available ...
}
注册主题
final PushManager pushManager = AWSMobileClient.defaultMobileClient()
.getPushManager();
pushManager.subscribeToTopic(pushManager.getDefaultTopic());