Android 从Parse向我的应用发送推送时未收到deviceToken

Android 从Parse向我的应用发送推送时未收到deviceToken,android,android-studio,parse-platform,Android,Android Studio,Parse Platform,我试图在我的应用程序中实现解析,但每次我从解析向我的应用程序发送推送通知时,deviceToken字段都标记为“未定义”。我按照Parse教程中的所有步骤来实现Parse,但我没有收到任何推送(即使它们被标记为在Parse中发送) 我做了一个空白的项目,看看语法是否正确,或者我做错了什么,但是在空白的项目中,一切都进展顺利(我遵循了与以前相同的步骤)。 这就是为什么,我认为AndroidManifest中可能有错误,即使我不确定 AndroidManifest.xml: <?xml ver

我试图在我的应用程序中实现解析,但每次我从解析向我的应用程序发送推送通知时,deviceToken字段都标记为“未定义”。我按照Parse教程中的所有步骤来实现Parse,但我没有收到任何推送(即使它们被标记为在Parse中发送)

<>我做了一个空白的项目,看看语法是否正确,或者我做错了什么,但是在空白的项目中,一切都进展顺利(我遵循了与以前相同的步骤)。 这就是为什么,我认为AndroidManifest中可能有错误,即使我不确定

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>

eu.sabbatic.activities
是您的套餐名称吗? 是用英文写的吗

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="eu.sabbatic.activities" >

我认为软件包名称对接收推送非常重要

同样在你的解析帐户中,进入push并观察到底发送了多少push。并检查推送的目标


我在通知方面也有同样的问题,在我的例子中,安装表同时用于IOS和android。由于IOS已经在使用,并且所有字段都是根据IOS要求创建的,一旦在安装表上创建了所有字段,就无法向表中添加其他字段,因此我得到了

D/ParseHelper(13425):ParseUser.becomeInBackground subscribeInBackground失败此用户不允许向_安装添加字段。可以在数据浏览器中更改此设置

这是因为Parse将您注册到GCM,当它注册到GCM时,它会附带额外的字段
deviceTokenLastModified
。但在安装表中没有可容纳此项的字段

解决方案是转到数据浏览器>安全>设置>将权限模式更改为高级,然后选择addField权限

添加此字段后,可以返回并撤消此权限


我在代码中注意到的另一件事是,您正在活动中初始化解析。不建议这样做,您应该在应用程序类中执行此操作。

我也遇到过这种情况。但我注意到,当我将我的应用程序安装到真正的设备deviceToken上时,它上面有键,但当我尝试在Genymotion deviceToken中运行它时,它是“未定义的”

解决办法是:

你用什么模拟器

如果你使用Genymotion。 问题是Genymotion没有推出谷歌应用程序,这意味着你不能使用GCM。为了修复它,您应该遵循本指南(非常简单)

如果你使用真正的设备。
我不知道怎么了。也许有人可以回答这边的问题

是的,包名是正确的。当我进入推送时,我看到发送了0次推送,即使它被标记为已发送(绿色),并且在发送推送之前设备被正确检测到。这就是为什么我不知道会发生什么。。。顺便说一句,谢谢你的回答;)你好谢谢你的回答!我认为这不是我的问题,因为我已经有了“deviceTokenLastModified”字段,即使它总是标记为“undefined”。我遵循了所有的解析教程,但这两个字段没有填充,当我启动应用程序时,它会自动停止。。。。
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Parse.initialize(this, "EDpscncFFdc8o30B2GA9BL6YlCMxbqzfomP17bKY", "XOU25E6bPqIGRCZq4ikHhlv7DpkQcqW7wCWKHQ9J");
    ParseInstallation.getCurrentInstallation().saveInBackground(new SaveCallback() {
        @Override
        public void done(ParseException e) {
            String deviceToken = (String)    ParseInstallation.getCurrentInstallation().get("deviceToken");
        }
    });
}
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="eu.sabbatic.activities" >