IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Notification Push, ListView et activités


Sujet :

Composants graphiques Android

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Par défaut Notification Push, ListView et activités
    Bonjour Bonsoir,

    Je suis actuellement en train d'essayer de développer un application android dans le cadre de mon projet d'études.
    Le projet étant la mise en place d'un serveur web et d'une application android afin d'envoyer et de stocker des notifications
    Depuis le serveur web, mon client devra avoir accès à deux formulaire, un formulaire afin d'enregistrer son/ses périphérique(s) et un autre afin d'envoyer la notification push aux périphériques sélectionnés.
    L'application elle, devra contenir une page afin d'afficher l'identifiant du périphérique, et une autre qui servira d'historique des notifications reçus.

    Pour mener à bien se projet, j'ai suivi le tutoriel suivant :
    http://hmkcode.com/android-google-cl...ging-tutorial/ (obligation d'utiliser GCM)

    j'ai donc une application me permettant de m’enregistrer auprès de gcm, malheureusement, je n'ai rien trouvé pour mettre en place mon historique.

    J'avais pensé a utiliser une ListView, malheureusement j'ai du faire une erreur car mon appli plante lorsque 'essai d’accéder à la page...
    'ai suivi pour cela ce tutoriel : http://blog.ace-dev.fr/2010/07/21/tu...-les-listview/

    Mes questions sont les suivantes :
    Avez vous des conseils sur comment gérer l'historique des notifications ? ( ou les récupérer, de quelle manière les afficher)

    de plus, je ne sais pas du tout comment envoyer une notifications push a partir d'une requête en php, je n'ai trouvé qu'un lien, mais je n'arrive pas a mettre le tout en oeuvre... http://gonzalo123.com/2013/08/05/sen...-applications/


    Si vous avez déjà été confronté à e genre de problématique, vos conseils seraient le bienvenus, merci d'avance =)

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Commence par utiliser les docs officiels plutôt que je ne sais trop quel article de blog qui n'est sans doute plus à jour.

    Pour GCM : http://developer.android.com/google/gcm/gs.html tous le process est décrit , de la création de l'api jusqu'au serveur.

    Pour ton historique , il suffit dans ton broadcastreicever qui recois les message de les enregistrer par exemple dans une base sqlite et ensuite de lister le contenu de cette base.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Par défaut
    J'ai recommencé l'application en suivant la doc de gcm, et cela correspond bien plus a ce dont j'avais besoin ! =)
    Pour le SQLite, l'historique de notification ne contiendra que la date et'heure de réception, ainsi qu'un tout petit texte, l'utilisation d'une base de donnée est elle la solution la plus adaptée ? N'est il pas plus simple d’écrire/ lire un fichier texte en utilisant la classe Scanner, n'ayant jamais utilisé de ListView, je ne sais pas ce qui est le plus simple/viable.


    Autre petit problème, j'ai rendu le textView contenant le regID sélectionnable, afin de pouvoir le copier, mais la barre affichant "Sélection texte" est blanche, et les icônes 'sélectionner tout' et 'copier' sont également blanches, ce qui les rend invisibles,comment personnaliser ça, ne serait ce que pour rendre la barre grise ?



    Merci d'avance =)

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Au niveau du stockage tu fais comme tu veux. L'avantage de la base sqlite c'est que tu vas pouvoir utiliser un CursorLoader pour remplir ta listview : http://developer.android.com/guide/t...ew.html#Loader
    Mais un fichiers texte peux convenir aussi , c'est au choix.

    Pour tes problème d'affichage ca peut venir de ton thème , essai d'en changer pour voir si ça joue ou pas.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Par défaut
    Effectivement, cela semble plus simple,malheureusement je n'ai pas vraiment compris comment mettre en oeuvre le curseur.

    J'ai créer ma classe BDD qui hérite de SQLiteOpenHelper ainsi que ma classe Notif qui a la structure souhaitée (un string et une date/heure).
    Normalement, je devrait faire appel au curseur lors du onCreate de mon activité "Historique" et exécuter une requête d'aout dans la BDD dans le onReceive de ma classe GcmBroadcastReceiver ?

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Par défaut
    Belles et Butes a écrit:

    Désolé pour le doublon, mais je n'ai toujours trouvé aucune solution,

    j'ajoute le code de mes classes afin de vous donner une idée de ce que j'ai fait, sachant que l'appli plante au moment d'acceder à l'historique

    Ma Classe Notification
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    package pck.bcdpush;
     
    public class Notif {
    private Integer id;
    private String date;
    private String heure;
    private String Libelle;
     
    public Notif(){};
     
    public Notif(Integer i, String d, String h, String s){
    	this.id = i;
    	this.date=d;
    	this.heure=h;
    	this.Libelle=s;
    }
     
    public Integer getId(){
    	return this.id;
    }
     
    public void setId(Integer i){
    	this.id=i;
    }
     
    public String getDate() {
    	return date;
    }
     
     
    public void setDate(String date) {
    	this.date = date;
    }
     
     
    public String getHeure() {
    	return heure;
    }
     
     
    public void setHeure(String heure) {
    	this.heure = heure;
    }
     
     
    public String getLibelle() {
    	return Libelle;
    }
     
     
    public void setLibelle(String libelle) {
    	Libelle = libelle;
    }
     
     
     
    }
    Ma classe Base De données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    package pck.bcdpush;
     
    import java.util.LinkedList;
    import java.util.List;
     
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    import android.database.sqlite.SQLiteOpenHelper;
     
     
    public class BaseDeNotif extends SQLiteOpenHelper {
     
     
    	private static final String TABLE_NOTIF = "table_notifications";
    	private static final String COL_ID = "ID";
    	private static final String COL_DATE= "Date";
    	private static final String COL_HEURE = "HEURE";
    	private static final String COL_LIBELLE = "LIBELLE";
     
    	private static final String CREATE_BDD = "CREATE TABLE " + TABLE_NOTIF + " ("
    	+ COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_DATE + " TEXT NOT NULL, "
    	+ COL_HEURE + " TEXT NOT NULL, " + COL_LIBELLE + "TEXT NOT NULL) ;";
     
    	public BaseDeNotif(Context context) {
    		super(context, TABLE_NOTIF,null, 1);
    	}
     
    	@Override
    	public void onCreate(SQLiteDatabase db) {
    		//on créé la table à partir de la requête écrite dans la variable CREATE_BDD
    		db.execSQL(CREATE_BDD);
    	}
     
    	@Override
    	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    		db.execSQL("DROP TABLE " + TABLE_NOTIF + ";");
    		onCreate(db);
    	}
     
     
     
    	public void addNotif(Notif notif){
    // 1. get reference to writable DB
    SQLiteDatabase db = this.getWritableDatabase();
    // 2. create ContentValues to add key "column"/value
    ContentValues values = new ContentValues();
    values.put(COL_DATE, notif.getDate().toString()); // get title 
    values.put(COL_HEURE, notif.getHeure().toString()); // get author
    values.put(COL_LIBELLE, notif.getLibelle());
    // 3. insert
    db.insert(TABLE_NOTIF,null,values);
    // 4. close
    db.close(); 
    }
     
    	public List<Notif> getAllNotif() {
            List<Notif> notifs = new LinkedList<Notif>();
     
            // 1. build the query
            String query = "SELECT  * FROM " + TABLE_NOTIF ;
     
            // 2. get reference to writable DB
            SQLiteDatabase db = this.getWritableDatabase();
            Cursor cursor = db.rawQuery(query, null);
     
            // 3. go over each row, build notif and add it to list
            Notif notif = null;
            if (cursor.moveToFirst()) {
                do {
                    notif = new Notif();
                    notif.setId(Integer.parseInt(cursor.getString(0)));
                    notif.setDate(cursor.getString(1));
                    notif.setHeure(cursor.getString(2));
                    notif.setHeure(cursor.getString(3));
     
     
                    // Add notif to notifs
                    notifs.add(notif);
                } while (cursor.moveToNext());
            }
     
            // return notifs
            return notifs;
        }
     
     
     
    }
    Mon Adapter de Notification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    package pck.bcdpush;
     
    import java.util.List;
     
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.TableLayout;
    import android.widget.TextView;
     
    public class NotifAdapter extends BaseAdapter {
     
    	private Context context;
    	private LayoutInflater layoutInflater;
    	private List<Notif> listeDeNotifs;
     
    	public NotifAdapter(Context c, List<Notif> l){
    		this.context=c;
    		this.listeDeNotifs= l;
    		this.layoutInflater = LayoutInflater.from(context);
    	}
     
    	@Override
    	public int getCount() {	
    		return this.listeDeNotifs.size();
    	}
     
    	@Override
    	public Object getItem(int position) {		
    		return this.listeDeNotifs.get(position);
    	}
     
    	@Override
    	public long getItemId(int position) {	
    		return position;
    	}
     
    	@Override
    	public View getView(int position, View convertView, ViewGroup parent) {
    	TableLayout tLayoutItem;
    	if (convertView==null){
    		tLayoutItem =(TableLayout) this.layoutInflater.inflate(R.layout.notifitem,parent);
    	}else{
    		tLayoutItem=(TableLayout) convertView;
    	}
    		TextView texteContenu= (TextView) tLayoutItem.findViewById(R.id.txtnotifdh);
    		String s = this.listeDeNotifs.get(position).getDate().toString() +"  " + this.listeDeNotifs.get(position).getHeure().toString();
    		texteContenu.setText(s);
    		TextView texteContenu2= (TextView) tLayoutItem.findViewById(R.id.txtnotifl);
    		String s2 = this.listeDeNotifs.get(position).getLibelle().toString();
    		texteContenu2.setText(s2);
    		return tLayoutItem;
    	}
     
    }
    et mon activité Historique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    package pck.bcdpush;
     
    import java.util.List;
     
    import android.app.Activity;
    import android.database.sqlite.SQLiteDatabase;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.ListView;
     
     
    // TODO: Auto-generated Javadoc
    /**
     * The Class HistoryActivity.
     */
    public class HistoryActivity extends Activity implements OnClickListener {
     
    	Button gth;	
    	ListView histodesnotifs;
    	List<Notif> listedn;
     
    	 /* load every view from xml layout
     	 *
     	 */
     	protected void onCreate(Bundle savedInstanceState) {
    	        super.onCreate(savedInstanceState);
    	        setContentView(R.layout.actvity_history);
    	       gth = (Button) findViewById(R.id.ReturnToMain);
    	       BaseDeNotif bdn =new BaseDeNotif(this);
    	       SQLiteDatabase db;
    	       db = bdn.getWritableDatabase();
    	     bdn.onCreate(db); 
    	       Notif alberta = new Notif(1,"lol","lol","lol");
    	       bdn.addNotif(alberta);
    	       listedn=bdn.getAllNotif();
    	       /* can intercept click on gth button */
    	       gth.setOnClickListener(this);
    	       NotifAdapter adapter = new NotifAdapter(this, listedn);
    	       this.histodesnotifs = (ListView) findViewById (R.id.listView1);
    	       this.histodesnotifs.setAdapter(adapter);
    	 }
     
     
    	/* 
    	 * Close the android window and back to the Main Activity
    	 */
    	@Override
    	public void onClick(View v) {
    		// TODO Auto-generated method stub
    		finish();
    	}
    }
    J'ai également la classe main acitivity servant a s'enregistrer aupres de gcm, la classe gcmrecevier pour recevoir des notifications push et la classe gcmintentservice, qui traite les notificatiosn recues, et dans laquelle je devrait faire en sorte d'ajouter les notifications à l'historique !

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    sachant que l'appli plante au moment d'acceder à l'historique
    Message d'erreur dans le logcat et code correspondant ?

    Sans ça on peut pas t'aider.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Par défaut
    Mon LogCat est vide, je ne comprend pas T_T
    j'ai vraiment besoin de faire marcher cet historique, ça deviens urgent...

  9. #9
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Ça a beau être urgent sans message d'erreur on est pas magicien ...

    Si ton logcat est vide c'est que ton téléphone n'est plus reconnu correctement par ton ide et adb.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Notification (push ?) avec RichFaces
    Par Pignoufy dans le forum JSF
    Réponses: 7
    Dernier message: 16/02/2012, 19h45
  2. Firefox : Mozilla travaille sur un système de notifications Push
    Par Hinault Romaric dans le forum Firefox
    Réponses: 4
    Dernier message: 07/02/2012, 03h43
  3. Réponses: 4
    Dernier message: 01/02/2012, 16h16
  4. Notifications push Android
    Par guigs06 dans le forum Android
    Réponses: 6
    Dernier message: 03/08/2011, 15h53
  5. Notification Push avec wp7
    Par moezBH dans le forum Windows Phone
    Réponses: 9
    Dernier message: 01/05/2011, 21h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo