我有一个在S3上运行的Android应用程序和带有工作接收器的motoX,它可以接收从Parse网站发送的推送通知。
但是,以下情况不起作用:
由于Android应用可以在Parse仪表板上没有任何问题的情况下接收推送通知,我想我的步骤一定要发送推送通知
附加说明
使用parsePush.sendInBackground(SendCallback)方法发送推送通知时,它不返回ParseExceptions。所以这意味着没有错误。
但是Parse Dashboard没有显示此推送通知,并且目标没有得到任何结果。
在正常情况下,当通过Parse发送推送通知时,它将在仪表板中显示为推送历史记录,但是当我尝试将推送从S3发送到MotoX(或其他)时,它只是没有显示任何内容在仪表板中,推送永远不会被送达。
内部应用程序类:
ParsePush.subscribeInBackground("Giants");
内部按钮单击(仅限活动)
ParsePush push = new ParsePush();
push.setChannel("Giants");
push.setMessage("The Giants just scored! It's now 2-2 against the Mets.");
push.sendInBackground();
在清单文件
中<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.pkg"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission
android:name="com.pkg.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.pkg.permission.C2D_MESSAGE" />
<uses-sdk
android:minSdkVersion="18"
android:targetSdkVersion="18" />
<application
android:name=".App"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.parse.APPLICATION_ID"
android:value="@string/parse_app_id" />
<meta-data
android:name="com.parse.CLIENT_KEY"
android:value="@string/parse_client_key" />
<service android:name="com.parse.PushService" />
<receiver android:name="com.parse.ParseBroadcastReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
<receiver
android:name="com.parse.ParsePushBroadcastReceiver"
android:exported="false" >
<intent-filter>
<action android:name="com.parse.push.intent.RECEIVE" />
<action android:name="com.parse.push.intent.DELETE" />
<action android:name="com.parse.push.intent.OPEN" />
</intent-filter>
</receiver>
<receiver
android:name="com.parse.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.pkg" />
</intent-filter>
</receiver>'
在
的推送设置屏幕中
是否还有其他额外步骤,我是否遗漏或错误代码?
更新: 我在企业网络中进行了测试,防火墙是否有可能阻止Parse的推送无缝工作
答案 0 :(得分:1)
经过很多挫折后我找到了解决方案。方法setChannel()
似乎导致问题。如果您将其替换为基于查询的推送,如下所示:
// Create our Installation query
ParseQuery pushQuery = ParseInstallation.getQuery();
pushQuery.whereEqualTo("channels", "Giants");
然后:
ParsePush push = new ParsePush();
push.setQuery(pushQuery);
push.setMessage("The Giants just scored! It's now 2-2 against the Mets.");
push.sendInBackground();
应该这样做。