0

Je travaille sur une application où je veux afficher les notifications push. Veuillez noter que, étant donné que c'est l'obligation de mon client de ne PAS utiliser de services de tiers, l'utilisation de GCM/Firebase est donc hors de question.Exécuter des notifications Android lorsque l'application est fermée sans GCM/Firebase

Je suis en mesure d'afficher la notification du Service en utilisant le code ci-dessous. Je commence ce service par ma méthode AsyncTask onPostExecute.

Intent intentService = new Intent(context, SendNotificationService.class); 
context.startService(intentService); 

J'ai créé ce qui suit un certain nombre de tutoriels et a constaté que si je vais à mes Apps en cours dans les paramètres Android, je serai en mesure de voir cette course de service. Mais j'étais incapable de localiser un tel service.

Maintenant, le problème est lorsque je ferme mon application, la notification disparaît également. Je veux qu'il reste jusqu'à ce que l'utilisateur prenne une action. En plus de cela, je souhaite que ce service démarre avec le démarrage du téléphone même si l'application n'est pas démarrée.

+0

Vérifiez cela pour exécuter votre service au démarrage: http://stackoverflow.com/questions/2784441/trying-to-start-a-service-on-boot-on-android – zed

+0

"Je veux afficher les notifications push" - rien dans votre code n'a de rapport avec cela. "quand je ferme ma demande" - veuillez expliquer, ** en détail **, ce que vous entendez par là. – CommonsWare

+0

Dans le code, je suis en mesure d'afficher la notification. Comment faire pour envoyer cette notification n'est pas un défi si je suis en mesure d'exécuter ce service en arrière-plan. Ce que je veux dire de la fermeture de l'application est lorsque je fais simplement glisser l'application à partir des applications récentes ou appuyez sur X pour le fermer, la notification disparaît de la barre de notification. –

Répondre

0

1) Ajouter l'autorisation au manifeste:

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

2) Ajouter un récepteur au manifeste pour exécuter au démarrage:

<receiver android:name="com.example.MyBroadcastReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver> 

En MyBroadcastReceiver.java:

package com.example; 

public class MyBroadcastReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Intent startServiceIntent = new Intent(context, MyService.class); 
     context.startService(startServiceIntent); 
    } 
}