【问题标题】:Android app doesn't get any push notification from AWS SNSAndroid 应用程序没有收到来自 AWS SNS 的任何推送通知
【发布时间】:2016-09-26 07:07:46
【问题描述】:

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

我复制的内容是:
com.amazonaws.mobile 及其所有文件。
模块的 build.gradle 文件中的库。
清单文件中的权限、接收者和服务属性。
PushListenerService 类。

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

【问题讨论】:

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


【解决方案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'

为 AndroidManifest.xml 指定 Google 服务版本

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

【讨论】:

  • 我完成了上述所有操作,但我仍然没有收到来自应用程序的任何推送通知...顺便说一下,当我添加库 play-services-plus 而不是 play-services我的应用程序中已有的库,它说找不到com.google.android.gms.gcm.GcmReceiver。你知道为什么会这样吗?
  • 尝试添加:compile 'com.google.android.gms:play-services-gcm:10.0.1' compile 'com.google.android.gms:play-services:10.0.1'这些库对我有用,没有问题! @IdoNaveh
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-17
  • 1970-01-01
  • 2017-04-16
  • 2019-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多