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

Android Discussion :

Messagerie instantanée Android


Sujet :

Android

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 273
    Points : 150
    Points
    150
    Par défaut Messagerie instantanée Android
    bonjour

    j'ai développé un système de connexion/inscription utilisateurs sur mon application, l'utilisateur rentre ses informations dans les editText, l'application les récupère au format Json, les transmet a une base de données MySQL via un script php présent sur le serveur ( 1and1 ).

    je voudrai maintenant développer ( en ajout a la connexion/inscription ) un système de messagerie instantanée entre utilisateurs, du genre que l'utilisateur se connecte, puis il accède a une vue avec un editText ou il tape l'adresse mail ( ou le pseudo ) de l'utilisateur, cliquera sur un bouton qui effectuera une recherche dans la base de données contenant les utilisateurs. le résultat s'affichera sur une listView, et il pourra sélectionner parmi la liste et envoyer une demande, puis, une fois la demande accepté, il pourra alors envoyer des messages a l'autre utilisateur, et vice versa.

    mes principales problèmes sont, de savoir en quel langage développer le serveur de messagerie ( peut on utiliser le même système que utilise une messagerie instantanée sur un site en php, le mettre sur le serveur, et qu'il serve de transition pour les messages envoyés ? )
    et de savoir comment effectuer une recherche depuis android vers une base de données MySQL, pour ensuite afficher les résultats sur une listView, et ( via un script php, si possible ), envoyer une demande et des messages.

    Merci d'avance

  2. #2
    Membre éclairé
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Points : 832
    Points
    832
    Par défaut
    Je pense que les scripts PHP est une bonne solution.
    Ton serveur doit envoyer des push lorsqu'il doit informer un tel d'un nouveau message/utilisateur connecté/ ect...
    Lorsque ton tel a besoin d'info (action de l'utilisateur; comme la recherche) tu fais une simple requête http au serveur qui via un script php va faire la requete sur la bdd et répondre au tel (en JSON par exemple).
    "Quand la lune n'est pas là, la nuit mène une existence obscure"

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 273
    Points : 150
    Points
    150
    Par défaut
    Citation Envoyé par LeBzul Voir le message
    tu fais une simple requête http au serveur qui via un script php va faire la requete sur la bdd et répondre au tel (en JSON par exemple).
    si je comprend bien, je peux utiliser la même méthode que j'ai utilisé pour l'inscription/connexion ( requête http qui envoie les données entrées par l'utilisateur, vers un script php redirigeant vers la base de données MySQL en passant par Json ) pour aussi faire des recherche d'utilisateurs ( par d'autres utilisateurs ) dans la base de données, ainsi que les afficher dans une listView ?

  4. #4
    Membre éclairé
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Points : 832
    Points
    832
    Par défaut
    C'est exactement ce que je dis oui

    Pour communiquer de
    Tel -> Serveur :
    Question en : http
    Réponse en : JSON

    Serveur -> Tel
    En push;
    Voir directement la doc google :
    http://developer.android.com/google/gcm/client.html
    http://developer.android.com/google/gcm/server.html
    "Quand la lune n'est pas là, la nuit mène une existence obscure"

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 273
    Points : 150
    Points
    150
    Par défaut
    donc en bref,
    je dois faire :

    un editText avec un bouton
    récupérer le texte entré, le convertir en string
    poster par une requête http, le string en question ( vers un script php )
    faire le script php, qui récupère, les données envoyés, et effectue une recherche vers la base de données indiquée
    récupérer les données correspondantes a la recherche
    les transmettre depuis le script vers android ( sur cette partie je rame un peu )
    puis les afficher dans une vue speciale ( listView ) ( ici aussi je rame un peu )

    dit moi si j'ai raté un truc
    ( et est ce que tu aurai une piste pour le script que je dois developper pour la messagerie instantanée, ainsi que l'affichage des messages sur une listView )

    merci

  6. #6
    Membre éclairé
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Points : 832
    Points
    832
    Par défaut
    les transmettre depuis le script vers android ( sur cette partie je rame un peu )
    Ce n'est pas la partie que je connais le mieux, mais normalement il suffit que le serveur écrive en brut comme dans une page web comme pour un site (sans css et/ou autre).

    Pour envoyer et lire coté android, il te faut quelque choses comme :
    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
     
    public String sendRequete(String urlString,String encodage)
    	{
    	    System.setProperty("http.keepAlive", "false");
    		StringBuffer result = null;
    		URL url = null;
     
    		HttpURLConnection urlConn = null;
            BufferedReader in;
            InputStreamReader inSr;
    			try
    			{
    			    try
    			    {
    	                urlConn = (HttpURLConnection) openConnection(urlString);
    	                urlConn.setRequestProperty("Accept-Encoding", "gzip");
     
    	                urlConn.setReadTimeout(15000);
    	                urlConn.setConnectTimeout(15000);
     
    	                urlConn.connect();
     
    	                if (urlConn.getResponseCode() == HttpURLConnection.HTTP_OK) 
    	                {
    	                	String contentEncoding = urlConn.getHeaderField("Content-Encoding");
     
    	                	if(contentEncoding != null && contentEncoding.equalsIgnoreCase("gzip"))
    	                	{
    	                		GZIPInputStream zin;
     
    		                	try {
    		                	    zin = (GZIPInputStream)urlConn.getInputStream();
    		                	} catch (Exception e) {
    		                	    zin = new GZIPInputStream(urlConn.getInputStream());
    		                	}
     
    		                	Reader decoder = new InputStreamReader(zin, "ISO-8859-1");
    		                	BufferedReader buffered = new BufferedReader(decoder);
     
    		                	 try
    			                 {
    			                        result = new StringBuffer();
    			                        String temp;
    			                        while((temp = buffered.readLine()) != null)
    			                            result.append(temp);
    			                    }
    			                    finally
    			                    {
    			                    	buffered.close();
    			                    	zin.close();
    			                    	zin = null;
    			                    	buffered = null;
    			                    }
    	                	}
    	                } 
    	                else
    	                {
    	                    result = new StringBuffer().append("");
    	                }
    			    }
    			    catch (IOException e) 
    			    {
    			    	result = new StringBuffer().append("");
    	                e.printStackTrace();
    	            }
    			} 
    			finally
    			{
                    urlConn.disconnect();
                    urlConn = null;
                    url = null;
    			}
     
    		if(result == null || result.toString().length()==0)
    		    return new StringBuffer().append("erreur").toString();
    		else
                return result.toString();
    	}
    L'encodage gzip est pas obligatoire. Tu récupères le contenu de la page dans result.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    puis les afficher dans une vue speciale ( listView ) ( ici aussi je rame un peu )
    Il y a pas mal de tuto sur le net qui explique comment faire :
    http://devhacksecure.fr/tutoriaux-de...stom-listview/
    http://www.javacodegeeks.com/2013/06...c-example.html
    "Quand la lune n'est pas là, la nuit mène une existence obscure"

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 273
    Points : 150
    Points
    150
    Par défaut
    Citation Envoyé par LeBzul Voir le message
    Pour envoyer et lire coté android, il te faut quelque choses comme :
    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
     
    public String sendRequete(String urlString,String encodage)
    	{
    	    System.setProperty("http.keepAlive", "false");
    		StringBuffer result = null;
    		URL url = null;
     
    		HttpURLConnection urlConn = null;
            BufferedReader in;
            InputStreamReader inSr;
    			try
    			{
    			    try
    			    {
    	                urlConn = (HttpURLConnection) openConnection(urlString);
    	                urlConn.setRequestProperty("Accept-Encoding", "gzip");
     
    	                urlConn.setReadTimeout(15000);
    	                urlConn.setConnectTimeout(15000);
     
    	                urlConn.connect();
     
    	                if (urlConn.getResponseCode() == HttpURLConnection.HTTP_OK) 
    	                {
    	                	String contentEncoding = urlConn.getHeaderField("Content-Encoding");
     
    	                	if(contentEncoding != null && contentEncoding.equalsIgnoreCase("gzip"))
    	                	{
    	                		GZIPInputStream zin;
     
    		                	try {
    		                	    zin = (GZIPInputStream)urlConn.getInputStream();
    		                	} catch (Exception e) {
    		                	    zin = new GZIPInputStream(urlConn.getInputStream());
    		                	}
     
    		                	Reader decoder = new InputStreamReader(zin, "ISO-8859-1");
    		                	BufferedReader buffered = new BufferedReader(decoder);
     
    		                	 try
    			                 {
    			                        result = new StringBuffer();
    			                        String temp;
    			                        while((temp = buffered.readLine()) != null)
    			                            result.append(temp);
    			                    }
    			                    finally
    			                    {
    			                    	buffered.close();
    			                    	zin.close();
    			                    	zin = null;
    			                    	buffered = null;
    			                    }
    	                	}
    	                } 
    	                else
    	                {
    	                    result = new StringBuffer().append("");
    	                }
    			    }
    			    catch (IOException e) 
    			    {
    			    	result = new StringBuffer().append("");
    	                e.printStackTrace();
    	            }
    			} 
    			finally
    			{
                    urlConn.disconnect();
                    urlConn = null;
                    url = null;
    			}
     
    		if(result == null || result.toString().length()==0)
    		    return new StringBuffer().append("erreur").toString();
    		else
                return result.toString();
    	}
    L'encodage gzip est pas obligatoire. Tu récupères le contenu de la page dans result.
    est ce que tu pourrai ajouter des commentaires a ton code que je puisse bien comprendre chaque partie, si ça ne te derange pas.

    merci d'avance

  8. #8
    Membre éclairé
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Points : 832
    Points
    832
    Par défaut
    J'ai rajouté quelques commentaires, en espérant que ca t'aide.

    En paramètre de la méthode, l'url et le type d'encodage (UTF-8, ISO ect)

    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
    public String sendRequete(String urlString,String encodage)
    	{
    	        System.setProperty("http.keepAlive", "false"); //Permet de ne pas garder en vie la connection http 
    		StringBuffer result = null;  //Contiendra le contenu de la page
    		URL url = null;
     
     
    		HttpURLConnection urlConn = null;
            BufferedReader in;
            InputStreamReader inSr;
    			try
    			{
    			    try
    			    {
    	                urlConn = (HttpURLConnection) openConnection(urlString);//Ouvre la connection http avec l'url fourni
    	                urlConn.setRequestProperty("Accept-Encoding", "gzip");//Permet d'encoder en gzip (pour compresser les données)
     
                            //Gestion des timeout, coupe la connexion à 15s
    	                urlConn.setReadTimeout(15000);
    	                urlConn.setConnectTimeout(15000);
     
    	                urlConn.connect();
     
    	                if (urlConn.getResponseCode() == HttpURLConnection.HTTP_OK) //Si la connexion au serveur à reussi
    	                {
    	                	String contentEncoding = urlConn.getHeaderField("Content-Encoding");
     
    	                	if(contentEncoding != null && contentEncoding.equalsIgnoreCase("gzip")) //Verifie si le contenu est compressé en gzip
    	                	{
    	                		GZIPInputStream zin;
     
    		                	try {
    		                	    zin = (GZIPInputStream)urlConn.getInputStream();
    		                	} catch (Exception e) {
    		                	    zin = new GZIPInputStream(urlConn.getInputStream());
    		                	}
     
    		                	Reader decoder = new InputStreamReader(zin, encodage); //Permet de decoder le gzip
    		                	BufferedReader buffered = new BufferedReader(decoder); //Buffer de lecture de la page
     
    		                	 try
    			                 {
    			                        result = new StringBuffer();
    			                        String temp;
    			                        while((temp = buffered.readLine()) != null) //Lit chaque ligne de la page et l'ajoute dans result
    			                            result.append(temp);
    			                    }
    			                    finally
    			                    {
                                                    //Fermeture du buffer de lecture et du gzip
    			                    	buffered.close();
    			                    	zin.close();
    			                    	zin = null;
    			                    	buffered = null;
    			                    }
    	                	}
    	                } 
    	                else //Echec de la connexion 
    	                {
    	                    result = new StringBuffer().append("");
    	                }
    			    }
    			    catch (IOException e) 
    			    {
    			    	result = new StringBuffer().append("");
    	                e.printStackTrace();
    	            }
    			} 
    			finally
    			{
                    //Fermeture de la connexion 
                    urlConn.disconnect();
                    urlConn = null;
                    url = null;
    			}
     
                    //Si result est vide : retourne erreur , sinon retourne le contenu de la page
    		if(result == null || result.toString().length()==0)
    		    return new StringBuffer().append("erreur").toString();
    		else
                        return result.toString();
    	}
    "Quand la lune n'est pas là, la nuit mène une existence obscure"

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 273
    Points : 150
    Points
    150
    Par défaut
    merci beaucoup pour tes reponses

    ( aurai tu une idée concernant les sockets ? )

  10. #10
    Membre éclairé
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Points : 832
    Points
    832
    Par défaut
    Je pense qu'avec des sockets c'est plus compliqué à mettre en place.
    Je ne m'y connais pas très bien, je sais juste qu'il existe une API qui permet de simplifier un peu cette partie;
    kryonet API : https://github.com/EsotericSoftware/kryonet
    "Quand la lune n'est pas là, la nuit mène une existence obscure"

Discussions similaires

  1. Messagerie instantanée android
    Par Kawther ben smida dans le forum Android
    Réponses: 0
    Dernier message: 04/03/2014, 20h07
  2. Réponses: 1
    Dernier message: 01/08/2009, 12h15
  3. Réponses: 0
    Dernier message: 30/07/2009, 16h27
  4. identification en messagerie instantanée
    Par young077 dans le forum Développement
    Réponses: 2
    Dernier message: 15/01/2007, 11h53
  5. Aide pour logiciel de messagerie instantanée
    Par tibou8985 dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 09/01/2007, 12h36

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