应用关闭后未收到推送

卡考

在将其标记为重复项之前:

我已经阅读了至少15个类似的线程,并且每个线程都在使用旧的Parse代码(现已弃用的setDefaultPushCallback),或者问题是由于在活动中而不是在活动中调用Parse.initialize(...)而导致的应用程序类。但是,这并不适用于我的情况。官方示例(我正在使用)显然是对的,因此代码已经在Application类中。

我已经从Parse的官方指南中下载了Push Starter示例,并在模拟器上进行了试用。我仅在应用程序运行时收到推送。当它关闭时(从“最近使用的应用程序”列表中删除,而不是被强制杀死),我再也没有得到推动。这使得整个功能相当无用。。。无论是否使用GCM,我都尝试过,其行为是相同的。

有什么线索可能是错误的吗?所有类都是库存示例类,没有任何内容被我覆盖或添加(除了id / key和我从指南中复制的ParsePush.subscribeInBackground调用之外)。足够奇怪的是,示例代码不包含ParsePush.subscribeInBackground,并且快速入门没有提及它。它甚至提供了一个Test按钮,无论有没有SubscribeInBackground,该按钮都应该发送我从未收到的推送。到目前为止,我能够获得推送的唯一方法是使用subscribeInBackground并通过Web控制台手动发送推送,并且只有在应用程序正在运行时才如此。Web控制台还不断告诉您有2个已注册的设备...这是不正确的。

显现:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.parse.starter"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="21"/>

    <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" />

    <!--
      IMPORTANT: Change "com.parse.starter.permission.C2D_MESSAGE" in the lines below
      to match your app's package name + ".permission.C2D_MESSAGE".
    -->
    <permission android:protectionLevel="signature"
        android:name="com.parse.starter.permission.C2D_MESSAGE" />
    <uses-permission android:name="com.parse.starter.permission.C2D_MESSAGE" />

    <application
        android:name=".ParseApplication"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:allowBackup="true">
        <activity
            android:name=".ParseStarterProjectActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <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" />

                <!--
                  IMPORTANT: Change "com.parse.starter" to match your app's package name.
                -->
                <category android:name="com.parse.starter" />
            </intent-filter>
        </receiver>
    </application>

</manifest>

ParseApplication:

package com.parse.starter;
...

public class ParseApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        // Initialize Crash Reporting.
        ParseCrashReporting.enable(this);

        // Enable Local Datastore.
        Parse.enableLocalDatastore(this);

        ParseUser.enableAutomaticUser();

        // Add your initialization code here
        Parse.initialize(this, "***", "***");

        ParseACL defaultACL = new ParseACL();
        // Optionally enable public read access.
        // defaultACL.setPublicReadAccess(true);
        ParseACL.setDefaultACL(defaultACL, true);

        ParsePush.subscribeInBackground("", new SaveCallback() {
            @Override
            public void done(ParseException e) {
                if (e == null) {
                    Log.d("com.parse.push", "successfully subscribed to the broadcast channel.");
                } else {
                    Log.e("com.parse.push", "failed to subscribe for push", e);
                }
            }
        });
    }
}
杰罗恩·摩尔

为了澄清为什么您会看到此行为,Parse有两种不同的方式来传递推送通知:

  1. “解析方式”:Parse SDK的应用程序中运行着一个组件,该组件保持与Parse后端服务器的连接。这仅在您的应用程序实际运行时有效,因为杀死它会断开与Parse后端的连接。
  2. GCM“ Google”推送通知:通过Google Play服务运行,该应用始终在后台运行,可以在需要时启动您的应用。除非您强制停止应用程序,否则这将始终有效。

在您的情况下,程序包名称冲突:com.parse.starter示例中实际包含的程序包名称。这会导致GCM无法正常工作,因为它已经知道使用其他签名的软件包。将软件包名称更改为唯一的名称即可com.parse.kaqqao解决问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

订阅后仍未收到Android Parse推送通知

来自分类Dev

Windows Phone应用未收到推送通知:解析

来自分类Dev

GCM + AppEngine-应用程序未收到推送通知

来自分类Dev

使用应用程序时未收到iOS推送通知

来自分类Dev

在Android中关闭应用程序后,在真实设备上未收到一个信号通知

来自分类Dev

关闭应用程序时未收到 fcm 通知

来自分类Dev

Android设备未收到推送

来自分类Dev

Windows应用商店应用未收到来自WNS的推送通知

来自分类Dev

PostAsync后未收到响应

来自分类Dev

为什么应用程序未收到应用程序关闭事件?

来自分类Dev

Windows Phone应用程序未收到来自Parse.com的推送通知

来自分类Dev

Xtify with Worklight 6.2-示例应用程序未收到任何推送通知

来自分类Dev

PubNub 聊天 iOS 应用程序未收到推送通知消息

来自分类Dev

在Android上未收到推送通知

来自分类Dev

在Android中未收到解析推送通知

来自分类Dev

未收到GCM推送通知(全部结束)

来自分类Dev

在睡眠模式下未收到推送通知

来自分类Dev

未收到GCM推送通知(全部结束)

来自分类Dev

设备未收到iOS推送通知

来自分类Dev

未收到Phonegap iOS推送通知

来自分类Dev

桌面Google Chrome推送通知未收到

来自分类Dev

未收到离子云推送GCM通知

来自分类Dev

在Testflight中未收到推送通知

来自分类Dev

即使在手动启动应用程序后也未收到 BOOT_COMPLETED 广播

来自分类Dev

应用关闭后,Android不会从Parse Push接收推送通知

来自分类Dev

Android:指定动作后未收到广播

来自分类Dev

发布后未收到Json的答复

来自分类Dev

GCM客户端未收到推送通知

来自分类Dev

Android模拟器未收到推送通知

Related 相关文章

热门标签

归档