没有使用AWS SNS android接收推送通知

时间:2016-09-08 14:53:58

标签: amazon-sns

我正在开发使用AWS SNS接收推送通知的Android应用程序。基本流程是我从api接收订阅ID,订阅密钥和主题订阅。我使用提供的平台应用程序ARN创建端点并订阅该主题。

我的代码是:

flexmojos-maven-plugin

我可以在日志控制台中看到我的订阅ID。问题是我没有收到与该主题相关的任何推送通知。 我错过了代码中的某些内容吗?任何帮助将不胜感激!!

1 个答案:

答案 0 :(得分:0)

如果您已正确设置所有配置(我建议使用MobileHub链接来自AWS的任何服务,例如SNS与Push和Cognito) 您只需要注意您在应用上实现的PushListenerService。

首先,确认您已在AndroidManifest.xml上添加了下一行:

<!-- BEGIN - PUSH NOTIFICATIONS WITH GOOGLE CLOUD MESSAGING (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.yourpackagename" />
        </intent-filter>
    </receiver>

    <service
        android:name=".push.service.PushListenerService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        </intent-filter>
    </service>

    <!-- END - PUSH NOTIFICATIONS WITH GOOGLE CLOUD MESSAGING (GCM) -->

此外,在PushListenerService中,请确保获取从Firebase和Amazon MobileHub控制台发送的消息:

/**
 * Helper method to extract SNS message from bundle.
 *
 * @param data bundle
 * @return message string from SNS push notification
 */
public static String getMessage(Bundle data) {
    // If a push notification is sent as plain text, then the message appears in "default".
    // Otherwise it's in the "message" for JSON format.
    String result = data.containsKey("default") ? data.getString("default") : data.getString(
            "message", "");
    if(result.isEmpty()){
        result = data.getBundle("notification").get("body").toString();
    }

    return result;
}