GCM 不提供 Amazon SNS
GCM not delivering Amazon SNS
我已经使用 GCM 和 SNS 设置了一个 AWS 服务器和一个 Android 带有推送通知的应用程序。
应用程序注册成功,即 BroadcastReceiver
收到包含注册 ID 的通知。问题是没有 SNS 通知通过。
有没有办法检查设备是否收到通知,但由于某种原因未发送到 BroadcastReceiver
?
此外,也许我做错了什么(可能是包名)?这是清单:
...
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="my.package.tester"
... >
<permission
android:name="my.package.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="my.package.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
...
<application
... >
<service android:name="my.package.path.to.PushNotificationsService" >
</service>
...
<receiver android:name="my.package.path.to.PushNotificationsBroadcastReceiver" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<action android:name="com.google.android.c2dm.intent.REGISTER" />
<category android:name="my.package" />
</intent-filter>
</receiver>
...
</application>
</manifest>
您可以检查一些事项:
- 收件人需要
com.google.android.c2dm.permission.SEND
权限。请在接收器块 中添加android:permission="com.google.android.c2dm.permission.SEND"
- intent 过滤器的类别应与您的应用程序名称相匹配
- 如果您的设备连接到 WIFI,请确保 GCM 端口(5228、5229 和 5230)已列入白名单。
进一步阅读:
谢谢,不过最后我发现问题毕竟不在客户端。问题是我把 JSONObject.toString()
放在数据值中而不是 JSONObject
.
显然 GCM 无法处理,但也不会抛出任何错误...
我已经使用 GCM 和 SNS 设置了一个 AWS 服务器和一个 Android 带有推送通知的应用程序。
应用程序注册成功,即 BroadcastReceiver
收到包含注册 ID 的通知。问题是没有 SNS 通知通过。
有没有办法检查设备是否收到通知,但由于某种原因未发送到 BroadcastReceiver
?
此外,也许我做错了什么(可能是包名)?这是清单:
...
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="my.package.tester"
... >
<permission
android:name="my.package.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="my.package.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
...
<application
... >
<service android:name="my.package.path.to.PushNotificationsService" >
</service>
...
<receiver android:name="my.package.path.to.PushNotificationsBroadcastReceiver" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<action android:name="com.google.android.c2dm.intent.REGISTER" />
<category android:name="my.package" />
</intent-filter>
</receiver>
...
</application>
</manifest>
您可以检查一些事项:
- 收件人需要
com.google.android.c2dm.permission.SEND
权限。请在接收器块 中添加 - intent 过滤器的类别应与您的应用程序名称相匹配
- 如果您的设备连接到 WIFI,请确保 GCM 端口(5228、5229 和 5230)已列入白名单。
android:permission="com.google.android.c2dm.permission.SEND"
进一步阅读:
谢谢,不过最后我发现问题毕竟不在客户端。问题是我把 JSONObject.toString()
放在数据值中而不是 JSONObject
.
显然 GCM 无法处理,但也不会抛出任何错误...