J'ai développé une application pour Android en utilisant Ionic 2. L'application fonctionne bien et les notifications sont correctement envoyées à l'application. Cependant, chaque fois que je reçois une notification push, le badge d'icône qui compte les notifications ne s'affiche pas.
J'ai essayé beaucoup de choses, j'ai beaucoup cherché sur internet et aucune solution ne fonctionne.
Informations :
- J'ai installé le
cordova-plugin-badge
. - Dans mon fichier
app.component.ts
, j'ai déjà importé le plugin Badge :import { Badge } from 'ionic-native';
- Pour tester, j'ai défini le nombre de badges à 10, avec ce code :
Badge.set(10);
- J'ai mis ce code à l'intérieur duconstructor
dansapp.components.ts
.
J'ai suivi le tutoriel Ionic pour utiliser le badge.
J'ai essayé de développer en utilisant le tutoriel du plugin, mais il n'est pas spécifique à Ionic. Alors, je ne sais pas en quoi cela pourrait aider.
J'ai utilisé le tutoriel Ionic 2 pour les notifications push et, comme je l'ai dit, cela fonctionne bien.
Eh bien, la documentation d'Ionic sur le Badge indique que je dois utiliser Badge.increase(x)
. Je ne sais pas où mettre ce code. Je pensais devoir spécifier : quand la notification arrive sur l'appareil, alors Badge.increase(x)
. Mais, je ne sais pas comment faire cela.
Mon code de notification push est :
this.push.register().then((t: PushToken) => {
return this.push.saveToken(t);
}).then((t: PushToken) => {
console.log('Token saved:', t.token);
});
this.push.rx.notification()
.subscribe((msg) => {
alert(msg.title + ': ' + msg.text);
Badge.clear();
});
Mais ce code ne fonctionne que lorsque l'application est ouverte. Quand je reçois une notification en arrière-plan, comment augmenter le badge ?
Autre information importante :
J'émule Android en utilisant l'émulateur Android, fourni par Android Studio. Les spécifications de l'appareil.
Dans le Moniteur d'appareils Android, je vois cette erreur :
01-25 21:26:54.558: W/PackageManager(6769): Unknown permission com.sec.android.provider.badge.permission.READ in package com.ionicframework.myapp343731
01-25 21:26:54.558: W/PackageManager(6769): Unknown permission com.sec.android.provider.badge.permission.WRITE in package com.ionicframework.myapp343731
La liste des erreurs continue ici.
Essayez de rechercher cette erreur sur Google. Il y a peu de résultats. Aucun résultat spécifique à Ionic. Génial, hein ?
Et... je vois des notifications de comptage de badge sur Android. Est-il possible de le faire. Mais, comment ?
Désolé pour mon anglais et le texte long.
Merci !
MODIFICATION 1 --------------------
Mon environnement :
Système d'exploitation : Ubuntu 16.04.1 LTS
node -v : v5.12.0
npm -v : 3.8.6
ionic -v : 2.2.1
cordova -v : 6.4.0
Version du plugin cordova-badge : 0.7.4
MODIFICATION 2 --------------------
Mon code PHP qui envoie la notification à Ionic via CURL:
$yourApiSecret = "myApiSecret"; // Disponible dans le tableau de bord d'Ionic
$androidAppId = "myAndroidAppId"; // Disponible dans le tableau de bord d'Ionic
$api_token = "mon.token.api"; // Créé dans le tableau de bord d'Ionic
$data = array(
"tokens" => "send_to_all",
"profile" => "my_created_profile", //Créé dans le tableau de bord d'Ionic
"send_to_all" => true,
"notification" => array(
'title' => $title,
'message' => $message,
)
);
$data_string = json_encode($data);
$ch = curl_init('https://api.ionic.io/push/notifications');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER,
array(
'Content-Type: application/json',
'X-Ionic-Application-Id: '.$androidAppId,
'Content-Length: ' . strlen($data_string),
'Authorization: Bearer '.$api_token
)
);
$result = curl_exec($ch);