Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android解析推送通知不工作-“过时设备”_Java_Android_Parse Platform_Notifications_Push - Fatal编程技术网

Java Android解析推送通知不工作-“过时设备”

Java Android解析推送通知不工作-“过时设备”,java,android,parse-platform,notifications,push,Java,Android,Parse Platform,Notifications,Push,完成本教程之后: 还有这个: 阅读了stackoverflow的所有相关问题,我仍然不明白为什么Parse告诉我这些设备都过时了 这是舱单: <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android

完成本教程之后:

还有这个:

阅读了stackoverflow的所有相关问题,我仍然不明白为什么Parse告诉我这些设备都过时了

这是舱单:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.GET_TASKS"/>

<permission android:protectionLevel="signature"
    android:name="com.myPackage.myApp.C2D_MESSAGE" />
<uses-permission android:name="com.myPackage.myApp.C2D_MESSAGE" />

应用程序如下所示:

// Parse config
    Parse.enableLocalDatastore(this);
    ParseCrashReporting.enable(this);
    Parse.initialize(this, "[app key]", "[client key]");
    ParseFacebookUtils.initialize(this);

    ParseInstallation parseInstallation = ParseInstallation.getCurrentInstallation();
    ArrayList<String> channels = new ArrayList<>();
    channels.add("global");

    PushService.setDefaultPushCallback(getApplicationContext(), MainActivity.class);
    ParsePush.subscribeInBackground("", new SaveCallback() {
        @Override
        public void done(ParseException e) {
            Log.d("Application", "Subscribed to ParsePush");
        }
    });

    parseInstallation.put("channels", channels);
    parseInstallation.saveInBackground();
我正在使用棒棒糖和解析1.9.3


我甚至看到日志语句订阅了ParsePush,所以我必须关闭…

好的,我想我终于找到了答案,因为我收到了一个通知,要从Parse finally成功通过! 我将其中一个教程中的自定义接收器替换为:

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

我不完全清楚为什么会这样,但我想这就是原因。

你在logcat中看到了这个错误吗?如果你是,那么SDK是开源的,因此你应该能够通过检查代码来自己确定这一点。不,你可以从Parse.com发送通知,它说有。它给你一份交付报告,上面说有78台设备很多是旧的安装,至少有一台是我刚刚编译的,因为它们都过时了,所以没有收到通知。应用程序编译得很好,Parse就是看不到。在_安装表中,GCMSenderId、deviceToken和pushType都未定义,如果其中任何一个不应该定义……嘿@AndrewTorr请检查您的清单您没有提到正确的包名,我相信,在所有位置将com.myPackage更改为您的包名,并且您使用的是android studio吗?如果是,那么您需要从gradle文件中删除debug{applicationIdSuffix.debug},首先尝试我的第一个提示,然后尝试此操作。我刚刚将它们更改为myPackage,以便在stackoverflow上发布。是的,我如何去掉调试后缀?更新:我更改了gradle文件中的bolts编译行,现在它说GCM设备令牌是空的,而不是过时的,所以这就是进展?我想?
<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>