dekans Posté(e) 26 mai 2010 Share Posté(e) 26 mai 2010 Bah xmpp, ça doit être facile à mettre en place coté serveur. J'ai pas eu l'occasion d'en faire certains seront mieux placés que moi pour en parler. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fluckysan Posté(e) 27 mai 2010 Auteur Share Posté(e) 27 mai 2010 Hum va falloir que j'investisse dans un serveur moip :s Sur un Mutu on peut installer ejjaberd XD ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
naholyr Posté(e) 31 mai 2010 Share Posté(e) 31 mai 2010 Sinon il y a autre chose : utiliser Google Talk :) Bon, par contre ça nécessite d'accéder au login/mot de passe gtalk de l'utilisateur, ce pour quoi ils pourraient à raison rechigner vu les accès que ça offre, mais par contre techniquement c'est fingers in the nose. Côté serveur qui "dispatche" les informations, tu peux utiliser un compte gtalk qui va broadcaster les messages. Bien sûr, ça marche avec n'importe quel serveur XMPP, mais l'avantage ici c'est qu'il y a la puissance d'infrastructure de Google derrière. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fluckysan Posté(e) 1 juin 2010 Auteur Share Posté(e) 1 juin 2010 L'idée et la mise en oeuvre sont intéressantes ! Je ne savais pas qu'il était si simple de mettre en place GTalk dans une appli :) Merci pour le lien Bon ça ne correspond pas tout à fait à ce que je cherche mais on commence à avoir des solutions ;) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dorian73 Posté(e) 2 juin 2010 Share Posté(e) 2 juin 2010 (modifié) pour faire du push tres simplement ( ce que je fait pour moi perso ) un serveur , une socket , un client . J'explique : le client se connecte juste au serveur , une fois connecté il ne fait rien d'autre que de rester connecté ( ne consome rien en data ni en batterie ) , le serveur envoi un packet TCP ( ou udp selon les gouts ) au client contenant les datas .... voilou c'est tout et c'est tres simple a realiser ..... Modifié 2 juin 2010 par dorian73 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
naholyr Posté(e) 2 juin 2010 Share Posté(e) 2 juin 2010 Oui mais il faut un serveur qui tienne X connexions persistantes simultanées, X pouvant potentiellement monter très haut :) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dorian73 Posté(e) 2 juin 2010 Share Posté(e) 2 juin 2010 qui veut tenter le coup ? :) :) :) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Alocaly Posté(e) 2 juin 2010 Share Posté(e) 2 juin 2010 le client se connecte juste au serveur , une fois connecté il ne fait rien d'autre que de rester connecté ( ne consome rien en data ni en batterie ) Je ne comprends toujours pas comment c'est possible d'écouter sur une socket sans consommer de la batterie. Pour savoir si un message est dispo, il faut bien établir un lien entre l'antenne 3G et le téléphone, non ? En temps normal (c'est à dire quand on ne fait pas de requetes data), la 3G n'est même pas active sur le telephone, non ? Si quelqu'un a des infos sur "connection entre un téléphone et le reste du monde pour les nuls", ca m'interesse !! Emmanuel / Alocaly Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dorian73 Posté(e) 3 juin 2010 Share Posté(e) 3 juin 2010 en faite , ca consome , mais tres peu ... un modem consome vachement a la connexion ( en batterie ) mais carrement moin lorsqu'il est connecté . donc suivant l'intervale a laquelle tu veut envoyer ou recevoir des données , il vaut mieu rester connecté plutot que se deconnecter et se reconnecter . j'ai fait le test sur un tatoo en 2.1, je suis resté connecté a un serveur ( sans envoyer de datas , juste en envoyant un signal toutes les minutes pour voir si j'etait bien connecté ) 5 jours sans recharger la batterie ( sans rien faire d'autre non plus sur le telephone ) a l'arrivée , il me restait 15% de batterie . tout ca pour dire que ca consome vraiment rien :) :) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Glasfeu Posté(e) 16 juin 2010 Share Posté(e) 16 juin 2010 Bonjour à vous, Dorian73> La connexion par socket, tu l'as faite avec le wifi ou la 3G ? Parce qu'il me semblait que la socket ne peut pas fonctionner par la 3G ? Et si oui avec quelle librairie ? Merci d'avance ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 16 juin 2010 Share Posté(e) 16 juin 2010 http = socket, non ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Glasfeu Posté(e) 16 juin 2010 Share Posté(e) 16 juin 2010 En wifi nous avons une IP "constante" sur un laps de temps qui permet au serveur de faire du push de données vers le mobile. Les sockets fonctionnent. En 3G, la connexion Internet n'est pas continue et il n'est pas possible de faire du push classique. Ericsson propose pour palier à cela d'envoyer un sms court au téléphone qui donne instruction à une app qui écoute de se connecter à lui. Google, lui, vient de proposer C2ME (Android 2.2) qui permet du push grâce au compte Google. Comment ou grâce à quoi, je ne sais pas encore. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 16 juin 2010 Share Posté(e) 16 juin 2010 tu ré-ouvres quand il se ferme :P mais ça doit pomper la batterie :/ Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fluckysan Posté(e) 17 juin 2010 Auteur Share Posté(e) 17 juin 2010 Sympa la technique du socket mais comment ça se passe à grande échelle comme l'a soulevé Naholyr Pour ce qui est de la connexion permanente, le push doit fonctionner de la même manière, il faut bien que le serveur ait un canal par lequel informer le mobile :o Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Elth Posté(e) 15 février 2011 Share Posté(e) 15 février 2011 Bonjour, Je reprend ce sujet qui traîte du push sous android pour demander un peu d'aide au cas où un développeur ce serait jeté dans la sujet =) J'ai suivi le tutô suivant : http://dmathieu.com/fr/android/notifications-push-avec-android J'ai repris tout ça néanmoins je n'arrive pas à recevoir de réponse du serveur C2DM... Voici mon code :) Intent regIntent = new Intent("com.google.android.c2dm.intent.REGISTER"); regIntent.putExtra("app", PendingIntent.getBroadcast(AmisActivity.this, 0, new Intent(), 0)); regIntent.putExtra("sender", "monAdresse@gmail.com"); // Je précise que j'ai bien remplacer par mon adresse mail // et que j'ai bien enregistré cette adresse à C2DM ComponentName retour = startService(regIntent); System.out.println("retour : " + retour); La variable retour me renvoi bien un ComponentInfo{com.google.android.etc....} Le problème est donc dans la partie suivante je suppose... /* * Méthode de réception de push */ public void onReceive(Context context, Intent intent) { Toast.makeText(this, "PUSH RECU !!!", Toast.LENGTH_LONG).show(); if (intent.getAction().equals("com.google.android.c2dm.intent.REGISTRATION")) { String registration = intent.getStringExtra("registration_id"); if (intent.getStringExtra("error") != null) { // L'enregistrement a échoué. Réessayez plus tard. System.out.println("***erreur push : " + intent.getStringExtra("error")); } else if (registration != null) { // L'enregistrement a correctement été effectué. // Transmettez ici l'identifiant d'enregistrement au serveur Web qui transmettra les messages. System.out.println("***enregistrement réussi : " + registration); } } } Ici, même le Toast du début ne s'affiche pas. Je n'ai donc rien qui rentre dans cette méthode... Est-ce qu'il y à une classe à implémentée ou quelque chose à faire que j'aurai pu oublier ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Elth Posté(e) 16 février 2011 Share Posté(e) 16 février 2011 (modifié) Salut salut amis frandroidien =) J'ai réussi à faire marcher le push donc si jamais ça intéresse quelqu'un je post la façon de faire.... Votre projet doit être en 2.2 minimum (et je crois qu'il faut qu'il ait la librairie Google Apis mais je ne suis pas sûr, je n'ai pas testé sans^^) Commencez par télécharger et placer dans votre dossier les classes C2DMBaseReceiver, C2DMBroadcastReceiver et C2DMessaging du package com.google.android.c2dm. Rajoutez ensuite dans votre manifest les permissions suivantes : <uses-permission android:name="android.permission.INTERNET"></uses-permission> <permission android:name="[b]votre.package.avous[/b].permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="[b]votre.package.avous[/b].permission.C2D_MESSAGE" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> Ensuite, toujours dans le manifest mais cette fois ci entre les balises <application></application> Placez le code suivant : <service android:name=".C2DMReceiver" /> <receiver android:name="com.google.android.c2dm.C2DMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="[b]votre.package.avous[/b]" /> </intent-filter> <intent-filter> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="[b]votre.package.avous[/b]" /> </intent-filter> </receiver> Créez ensuite cette classe : import android.content.Context; import android.content.Intent; import android.util.Log; import com.google.android.c2dm.C2DMBaseReceiver; public class C2DMReceiver extends C2DMBaseReceiver { public C2DMReceiver() { super("[b]votre.mail[/b]@gmail.com"); } @Override public void onRegistrered(Context context, String registrationId) { Log.w("C2DMReceiver-onRegistered",registrationId); } @Override public void onUnregistered(Context context) { Log.w("C2DMReceiver-onUnregistered","got here!"); } @Override public void onError(Context context, String errorId) { Log.w("C2DMReceiver-onError",errorId); } @Override protected void onMessage(Context context, Intent intent) { Log.w("C2DMReceiver", intent.getStringExtra("payload")); } } Il est important que le mail soit enregistré sur C2DM. Pour cela rendez vous à l'adresse suivante : http://code.google.com/intl/fr/android/c2dm/signup.html (Normalement vous recevrez un mail directement pour vous dire que vous êtes bien enregistré avec cette adresse) Il ne vous reste maintenant plus qu'une ligne à écrire dans votre main :) C2DMessaging.register(this, "[b]votre.mail[/b]@gmail.com"); Et normalement vous devriez voir dans votre logCat la ligne vous informant que vous avez bien été enregistré. J'espère en avoir aider certains. Bonne continuation Modifié 16 février 2011 par Elth Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
guigs06 Posté(e) 12 juillet 2011 Share Posté(e) 12 juillet 2011 Commencez par télécharger et placer dans votre dossier les classes C2DMBaseReceiver, C2DMBroadcastReceiver et C2DMessaging du package com.google.android.c2dm. Bonjour, Déjà , merci pour ce code partagé :) Où puis-je trouver les classes citées ? C'est après s'être enregistré sur C2DM qu'on les a ? Car apparemment j'ai vu un message comme quoi C2DM était réservé aux Labs et pas encore aux développeurs... Est-ce gratuit ? Merci bien Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 12 juillet 2011 Share Posté(e) 12 juillet 2011 Tu google "C2DM", et tu cliques sur le 1er site. L'enregistrement est libre et immédiat (il faut bien utiliser une adresse gmail ou google apps (pas un alias)) C'est gratuit. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
guigs06 Posté(e) 13 juillet 2011 Share Posté(e) 13 juillet 2011 (modifié) Bonjour, Je me suis inscrit auprès de C2DM, c'est effectivement gratuit. Par contre je ne trouve pas le package com.google.android.c2dm à télécharger.. Et concernant la partie serveur pour envoyer la notification, auriez-vous un lien avec un tutoriel ? ( le message proposé par Elth nous aide à nous enregistrer, mais quels sont les protocoles pour la suite ? J'ai un serveur pour placer un script donc théoriquement pas besoin de prendre un service ) Merci :) P.S. : désolé ça doit vous paraître basique mais je galère avec ces notifications et je ne suis pas du tout familier avec eclipse du coup j'ai un peu la tête comme une patate à force de faire du google search pour une chose qui semble tellement évidente à faire... Modifié 13 juillet 2011 par guigs06 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 13 juillet 2011 Share Posté(e) 13 juillet 2011 Tout est indiqué sur cette page: http://code.google.com/android/c2dm/index.html Le serveur doit faire une requête http sur les serveurs de google pour effectuer un push. Tout dépend ensuite du langage de programmation employé côté serveur. Tu peux trouver plein de tutos sur le net Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.