Parse.com如何启用客户端推送

时间:2014-07-23 20:24:49

标签: parse-platform

我在使用电子邮件地址发送Parse通知时定位特定用户。发送似乎工作正常,但没有收到任何消息。我需要更改什么才能收到消息? 在我的Parse控制面板中,它显示了尝试推送,但显示“客户端启动的推送未启用”的错误消息。我真的更喜欢从客户端发起推送。我如何启用它?我一直在寻找能够推动客户推送的文档,但我找不到如何做到这一点。

这是我的设置:

        Parse.initialize(this, "...xxxAPP_ID", "...xxxCLIENT_KEY");
        PushService.setDefaultPushCallback(this, MainActivity.class);
        ParseInstallation.getCurrentInstallation().saveInBackground(); 
        ParseObject parseObject = new ParseObject("defaultObject");
        parseObject.put("email", sEmail)
        parseObject.saveInBackground(); 

实际发送在这里完成:

    ParseQuery pQuery = ParseInstallation.getQuery(); 
    pQuery.whereEqualTo("email", ToUser); 
    ParsePush parsePush = new ParsePush();
    parsePush.setQuery(pQuery);
    parsePush.sendMessageInBackground("You have pictures waiting from " + sEmail, pQuery);

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission android:protectionLevel="signature" 
    android:name="com.pictureplay.permission.C2D_MESSAGE" />
<uses-permission android:name="com.pictureplay.permission.C2D_MESSAGE" />

<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.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.pictureplay" />
        </intent-filter>
    </receiver>

更新:我已将问题缩小到推送通知,除非服务未运行。我认为Parse服务应该在手机重启时加载,但这不是这里的情况。当手机重启时,有没有办法让我的应用加载Parse服务?

UPDATE2: 解决方案是创建一个单独的类(在我的例子中称为“App”),它初始化Parse。如果Parse服务在应用程序关闭时关闭,服务会在几分钟内自动重启(自动,我没有特别设置),以便能够接收传入的推送消息。这些是“App”onCreate中使用的代码行:

    Parse.enableLocalDatastore(this);
    Parse.initialize(this, "data1", "data2");  //supply your own 
    PushService.setDefaultPushCallback(this, MainActivity.class);
    ParseInstallation.getCurrentInstallation().saveInBackground();

4 个答案:

答案 0 :(得分:6)

您是否启用了从客户端发送通知。它是Parse.com的一个场景。 转到设置 - &gt;应用权限 - &gt;允许创建客户端类。将其设置为ON&gt;

答案 1 :(得分:1)

在你的解析应用程序中转到设置&gt;推送&gt;客户端推送启用&gt;设为是

答案 2 :(得分:0)

问题当手机重新启动时,有没有办法让我的应用加载Parse服务?:是的,如果你添加了以下权限,你可以收到BOOT_COMPLETE事件在你的清单上。

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>    

答案 3 :(得分:0)

在新的Parse DashBoard中:转到设置---&gt;推---&gt;推送通知设置---&gt;客户端启用推送---&gt;设置为&#34;是&#34;