【问题标题】:Client side push notification not working客户端推送通知不起作用
【发布时间】:2015-03-18 18:25:02
【问题描述】:

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

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

  • 从 Android 向 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>'

的推送设置屏幕中

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

更新: 我在公司网络中测试过,有没有可能防火墙阻止但从 Parse 推送无缝工作

【问题讨论】:

  • 你是如何解决遇到同样问题的?

标签: android parse-platform push-notification client


【解决方案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();

这应该可以解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多