我正在开发使用AWS SNS接收推送通知的Android应用程序。基本流程是我从api接收订阅ID,订阅密钥和主题订阅。我使用提供的平台应用程序ARN创建端点并订阅该主题。
我的代码是:
flexmojos-maven-plugin
我可以在日志控制台中看到我的订阅ID。问题是我没有收到与该主题相关的任何推送通知。 我错过了代码中的某些内容吗?任何帮助将不胜感激!!
答案 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;
}