2016-08-01 2 views
0

Я использую parse 1.13.0 в nodechef.com Я попытался настроить приложение для отправки уведомлений, но у меня возникли проблемы.Push-уведомление из приложения, использующего синтаксический анализ

Это мой Manifest:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.my.path" > 
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
<permission android:name="com.my.path.permission.C2D_MESSAGE" android:protectionLevel="signature" /> 
<uses-permission android:name="com.my.path.permission.C2D_MESSAGE" /> 

<application 
    android:name=".MainApplication" 
    android:allowBackup="true" 
    android:fullBackupContent="true" 
    android:icon="@drawable/logo" 
    android:label="@string/app_name" 
    android:theme="@style/hsfTheme"> 

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

    <meta-data 
     android:name="com.parse.push.notification_icon" 
     android:resource="@drawable/logo" /> 

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

    <!-- activity main. --> 
    <activity 
     android:name=".A0" 
     android:configChanges="keyboardHidden|screenLayout|orientation" 
     android:immersive="true" 
     android:screenOrientation="portrait" 
     android:theme="@style/hsfTheme.NoActionBar" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity android:name=".A1" /> 
    <activity android:name=".A2" /> 
    <activity android:name=".A3" /> 
    <activity android:name=".utils.A4" /> 

    <!-- Include the AdActivity configChanges and theme. --> 
    <activity 
     android:name="com.google.android.gms.ads.AdActivity" 
     android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" 
     android:theme="@android:style/Theme.Translucent" /> 
</application> 

в моем классе приложений у меня есть: ParseInstallation.getCurrentInstallation() saveInBackground();.

  • DeviceToken пуст в классе _Installation
  • Нажмите не работает

Все, что я нужно отправить уведомление толчок от моего приложения, в некоторых действий я хотел бы предупредить всех пользователей или некоторых пользователей с использованием каналов установки , Не волнует, буду ли я использовать «синтаксический разбор» или gcm, просто нужно просто отправить отправку push-уведомлений из приложения.

EDIT Push from parse-dashboard работает сейчас, но я не могу отправить push-уведомление от клиента. Я попробовал нажать и получил «unauthorized: enable master key». Так что мне нужно делать?

EDIT 2 Я создал код облако, но его внешний вид не работает значения получить от Request.Params:

Parse.Cloud.define("sendPush", function(request,response) { 
var _locale = "en-US";//request.params.locale; 
var _message = "test";//request.params.message; 
var query = new Parse.Query(Parse.Installation); 
query.equalTo("localeIdentifier", _locale); 
Parse.Push.send({ 
     data: { 
      alert: _message, 
     badge: "Increment", 
      sound: "default" 
     }, 
     where: query 
    }, { 
     useMasterKey: true 
    }) 
    .then(function() { 
     response.success("Push Sent!"); 
    }, function(error) { 
     response.error("Error while trying to send push " + error.message); 
    }); 
}); 

EDIT 3

HashMap<String,String> map = new HashMap<String, String>(); 
map.put("locale","en-US"); 
map.put("message","Text added"); 

ParseCloud.callFunctionInBackground("sendPush",map, new FunctionCallback<Object>() { 

    @Override 
    public void done(Object object, ParseException e) { 
     // toast done 
    } 
}); 
+1

В чем проблема? можете ли вы поделиться другим кодом? –

+0

@RanHassid Я добавил дополнительную информацию о проблеме. –

+0

вы используете parse.com или parse-server? –

ответ

1

после расследуют его бит я заметил, что для отправки push вы должны создать функцию облачного кода и использовать свой главный ключ (отправив userMasterKey = true параметр функции отправки. Я опишу свой ответ в here, поэтому, пожалуйста, пройдите через шаги, и он должен сработать для вас.

+0

Tks Ran, я нашел инструмент CLI. Но я хотел бы знать, как развернуть ваш скрипт (я никогда не делал этого раньше, и я беспокоюсь о настройках по умолчанию). –

+0

При развертывании parse-сервера он также развертывает ваш код облачного кода. сценарий облачного кода должен быть расположен под облачной папкой там, где вы можете создать все функции облачного кода. –

+0

Так что мне нужно будет получить весь мой код перед развертыванием, не так ли? ну, мне нужно прочитать о узле js, чтобы узнать, что нужно развернуть, загрузить источник и т. д. –

Смежные вопросы