客户端推送通知无效

时间:2015-03-18 18:25:03

标签: android parse-platform push-notification client

我有一个在S3上运行的Android应用程序和带有工作接收器的motoX,它可以接收从Parse网站发送的推送通知。

但是,以下情况不起作用:

  • 从Android发送推送通知

由于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>'

的推送设置屏幕中

enter image description here

是否还有其他额外步骤,我是否遗漏或错误代码?

更新: 我在企业网络中进行了测试,防火墙是否有可能阻止Parse的推送无缝工作

1 个答案:

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

应该这样做。