Notificações por push com o FCM no DevExtreme / Phonegap
Desenvolvi meu aplicativo com o DevExtreme, uma ferramenta multiplataforma baseada no PhoneGap.
Agora, estou tentando usar as notificações push para gerenciar phonegap-plugin-push.
Meu primeiro objetivo, simples, é enviar e receber algumas notificações do FCM (Firebase Cloud Messaging).
Prefiro começar com o Android. Por isso, defino meu aplicativo Android no FCM. Aqui, peguei o ID do remetente.
Após os documentos, modifiquei o config.xml como abaixo:
<widget id="com.devexpress.apptemplate" version="1.0" versionCode="1">
<name>ApplicationTemplate</name>
<description>Template</description>
<preference name="phonegap-version" value="cli-6.4.0" />
<preference name="permissions" value="none" />
<preference name="prerendered-icon" value="true" />
<preference name="android-windowSoftInputMode" value="adjustPan" />
<preference name="SplashScreen" value="splash" />
<preference name="SplashScreenDelay" value="60000" />
<preference name="AutoHideSplashScreen" value="false" />
<preference name="SplashShowOnlyFirstTime" value="false" />
<preference name="FadeSplashScreen" value="false" />
<preference name="ShowSplashScreenSpinner" value="false" />
<preference name="DisallowOverscroll" value="true" />
<preference name="StatusBarOverlaysWebView" value="false" />
<preference name="StatusBarBackgroundColor" value="#000000" />
<preference name="android-minSdkVersion" value="15" />
<preference name="android-targetSdkVersion" value="22" />
<!--<plugin name="cordova-plugin-file" />-->
<plugin name="cordova-plugin-geolocation" />
<plugin name="cordova-plugin-splashscreen" onload="true" />
<plugin name="cordova-plugin-whitelist" />
<plugin name="cordova-plugin-ios-longpress-fix" />
<plugin name="cordova-plugin-statusbar" onload="true" />
<plugin spec="https://github.com/phonegap/phonegap-plugin-push.git" source="git" >
<param name="SENDER_ID" value="123456" />
</plugin>
<access origin="*" />
</widget>
Em seguida, no arquivo index.js, no evento deviceReady:
var push = PushNotification.init({
android: {
senderID: "123456"
},
browser: {
pushServiceURL: 'https://fcm.googleapis.com/fcm/send'
},
ios: {
alert: "true",
badge: "true",
sound: "true"
},
windows: {}
});
push.on('registration', function (data) {
// data.registrationId
DevExpress.ui.notify("Device registered", "success", 3000);
});
push.on('notification', function (data) {
// data.message,
// data.title,
// data.count,
// data.sound,
// data.image,
// data.additionalData
DevExpress.ui.notify(data.message, "info", 10000);
});
push.on('error', function (e) {
// e.message
DevExpress.ui.notify(e.message, "error", 10000);
});
E aqui começa a dor.
Primeiro de tudo, não sei se o pushServiceURL está correto. Esse é o URL a ser usado se eu quiser enviar algumas notificações do FCM?
Então, criei corretamente o modelo do aplicativo e criei o apk. Mas, é claro, quando eu o instalo no meu dispositivo Android e tento enviar notificações do FCM,Não vejo nada no aplicativo.
Além disso, estou tentando gerenciar o evento de registro com uma mensagem depois que o aplicativo é iniciado, masEu também não vejo essa mensagem.
Então, nada funciona aqui! Desde que, IMHO, há uma falta de documentação, você pode me ajudar?
ATUALIZAR: Após a documentação do push do plug-in phonegap, notei que era necessário incluir o google-service.json. Então, eu escrevi no meu config.xml:
<platform name="android">
<resource-file src="google-services.json" target="google-services.json" />
</platform>
E mudei o código no index.js:
var push = PushNotification.init({
android: {},
ios: {
alert: "true",
badge: "true",
sound: "true"
},
windows: {}
});
Como o senderID está agora no google-services.json. Além disso, eu removi o senderID também no config.xml:
<plugin spec="https://github.com/phonegap/phonegap-plugin-push.git" source="git" />
Também incluí esse arquivo no meu projeto em index.html (https://github.com/phonegap/phonegap-plugin-push/blob/master/src/js/push.js) mas não sei se está certo.