Android应用不会从AWS SNS

时间:2016-09-21 11:18:21

标签: android amazon-web-services push-notification amazon-sns

我有2个应用。一个是来自AWS Mobile Hub的示例应用程序,另一个是用于测试AWS SNS推送通知的测试项目。我将示例应用程序中的推送服务集成到我的测试应用程序中,但由于某些原因它无法正常工作,它不会从AWS SNS获得任何推送通知。

我复制的东西是:
com.amazonaws.mobile及其所有文件。
模块的build.gradle文件中的库。
清单文件中的权限,接收方和服务属性。
PushListenerService上课。

出于某种原因,我仍然没有得到任何推送通知。你知道该怎么办吗?

1 个答案:

答案 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());