Enviar a notificação da aplicação usando o processamento
estou a usar o parse 1, 13, 0 in nodechef.com eu tentei configurar meu app para enviar notificação, mas eu tenho alguns problemas.
Este é o meu manifesto.<?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>
Na minha aula de candidatura, tenho: análise.getCurrentInstallation().saveInBackground ();
- O DeviceToken está vazio na classe de _instalar
- empurrar não trabalhar
Tudo o que eu preciso é enviar notificação push do meu aplicativo, em algumas ações que eu gostaria de notificar todos os usuários ou alguns usuários usando canais de instalação. Não importa se eu vou usar "parse push" ou gcm, apenas precisa de uma maneira simples de enviar notificações push do aplicativo.
editar O Push do parse-dashboard está a funcionar agora, mas não posso enviar a notificação do push do cliente. Tentei um empurrão e obtive "unauthorized: enable master key". O que tenho de fazer ?
Editar 2 Criei um código de nuvem, mas o seu aspecto não funciona. obtém valores a partir do pedido .Espumas:
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);
});
});
editar 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 answers
Depois de investigar um pouco, reparei que, para enviar o push, tem de criar uma função de código na nuvem e usar a sua chave-mestra (enviando o parâmetro userMasterKey=true para a função Enviar o push. Eu descrevo a minha resposta em aqui por isso, por favor, siga os passos e deve funcionar para si.