Application pour un site web

Bonjour tout le monde.



Je viens vers vous aujourd'hui, car pour un projet personnel, j'ai besoin de créer une application pour un site web.

Je parle bien d'application, et pas de version mobile du site. Il y aura bien sûr une application mobile du site, mais celle-ci sera " universelle ", c'est à  dire, pas customisée pour iOS ou Android, ou BlackBerry, ou Windows Phone. Et puis, y'aura pas de notifications, ce qui est l'énorme plus d'une application native, vu le système du site web.

Je connais les développeurs de ce site web, je travaille avec eux, donc pas de soucis sur des parties " obscures du site web ".



Mon soucis, c'est que je ne parle pas du tout web (exit de m'expliquer le php, le css, et cie.). Par contre, le dév' iOS, je connais un peu.



Le site, et par conséquent l'application sont relativement complexes.



Les personnes sur le site peuvent avoir un compte et être logguées, accéder à  divers contenus (niouzes, forums, etc.).

En bref, l'application sera dans le même genre que FaceBook, Mac4Ever, MacG, Google+, etc.



Je ne vous ai pas perdus encore, j'espère.



Je pense que certains d'entre vous ont dû déjà  travaillé sur des applications de ce genre-là  (plus limitées, plus complexes, etc.)



Le projet n'est pas encore en place, mais j'aimerais me renseigner en amont sur ce sur quoi je vais devoir plancher, et les technos que je vais devoir apprendre, et je l'espère maà®triser.



Si j'ai bien tout suivi, exit les NSStream comme j'ai pu le faire précédemment pour une petite application qui ne demandait pas grand chose, et bienvenu AFNetworking.



Pour la question de login, j'ai vu qu'il valait mieux faire de la shared instance sur je ne sais plus quel objet de AFNetworking afin de ne pas perdre le token.



La question que je me pose, est qu'est-ce qui va devoir être mis en place côté serveur, et potentiellement côté application.



Moi, dans l'idée tout penaude en grand néophyte de ce genre d'application, je pensais que je pourrais faire ainsi :

Je télécharge le code source de la page, je parse, et j'affiche ce dont j'ai besoin. Et je clique " programmatically " sur les boutons " web " en fonction des actions de l'utilisateurs sur mon applications.

En bref, s'il veut aller sur la page forum, je le télécharge le code source de la page forums, je parse, et j'affiche ce dont j'ai besoin.

ça m'a l'air tout " simple ". Mais j'ai l'impression que pas mal de code sur un site web est " caché ". Par exemple, je ne sais pas quels paramètres envoyés (dans la requête POST) si l'utilisateurs veut poster un message. Mais ça, je peux potentiellement le voir avec les développeurs du site web.



Après un peu de lecture à  droite à  gauche, et m'être perdu pas mal de fois (j'ai l'impression d'être comme la première fois où j'ai appris à  programmer, je ne savais pas où donner de la tête, et ne savais pas différencier ce qui est pertinent de ce qui ne l'est pas), il y a les webservices qui sont une bonne option.

En bref là , je saurais que faire pour un GET ou un POST, de manière " customisée ". Mais cela signifie qu'il faut un travail supplémentaire de la part des développeurs, non ?



Donc, qu'est-ce qui est possible, et si vous avez déjà  eu un peu d'expérience dans ce domaine-là , avez-vous des conseils, des recommandations, des types de solutions à  éviter, car vous vous y êtes cassé plus d'une dent et arracher plus d'une fois tous les cheveux de la tête ?



En bref, quelles seraient les grandes étapes, de ce projet " que je trouve énorme en temps et compréhension, mais qui sera très bénéfique pour mon apprentissage, et puis, vu que c'est un projet personnel, c'est toujours sympa à  développer ?



Autre question subsidiaire, un système via Notifications (niveau serveur) est-il difficile à  mettre en place ? Si j'ai bien tout suivi, il faut une implémentation côté serveur, et une autre côté application, non ? ça permet de " joindre " l'utilisateur lorsque l'application n'est pas ouverte.

Réponses

  • CéroceCéroce Membre, Modérateur
    'Larme' a écrit:


    Si j'ai bien tout suivi, exit les NSStream comme j'ai pu le faire précédemment pour une petite application qui ne demandait pas grand chose, et bienvenu AFNetworking.


    En l'occurrence, là  on ne fait pas de la connexion au niveau des sockets, mais en utilisant un protocole de plus haut niveau et client/serveur, j'ai nommé HTTP.

    On pourrait tout à  fait utiliser NSURLConnection pour se faire, mais AFNetworking:

    - simplifie la construction des requêtes HTTP (méthode, contenus des header et body)

    - gère la connexion sous forme de NSOperations, ce qui ouvre beaucoup de possibilités de traitements asynchrones.



    AFNetworking est en fait basé sur NSURLConnection.


    'Larme' a écrit:


    Pour la question de login, j'ai vu qu'il valait mieux faire de la shared instance sur je ne sais plus quel objet de AFNetworking afin de ne pas perdre le token.


    ça ne me dit absolument rien. L'identification dans le protocole HTTPS nécessite l'échange d'un token, mais c'est géré de façon transparente par NSURLConnection qui place un cookie. Peut-être ai-je raté quelque chose.


    'Larme' a écrit:


    Je télécharge le code source de la page, je parse, et j'affiche ce dont j'ai besoin. Et je clique " programmatically " sur les boutons " web " en fonction des actions de l'utilisateurs sur mon applications.

    En bref, s'il veut aller sur la page forum, je le télécharge le code source de la page forums, je parse, et j'affiche ce dont j'ai besoin.

    ça m'a l'air tout " simple ". Mais j'ai l'impression que pas mal de code sur un site web est " caché ". Par exemple, je ne sais pas quels paramètres envoyés (dans la requête POST) si l'utilisateurs veut poster un message. Mais ça, je peux potentiellement le voir avec les développeurs du site web.


    Cette approche est mauvaise pour au moins trois raisons:
    1. Parser du HTML est très complexe !
    2. C'est lent: beaucoup d'éléments de la page web ne sont pas du contenu, mais des éléments de navigation qui ne doivent pas apparaà®tre dans l'appli iPhone, et qu'il n'y a donc aucune raison de charger.
    3. Ton appli doit être modifiée à  chaque changement du site web.


    Certaines applis utilisent une approche hybride, en affichant parfois une page web dans une webview. C'est un compromis, et pour bien faire, il faut au moins retirer les éléments superflus de la page web.


    'Larme' a écrit:


    En bref là , je saurais que faire pour un GET ou un POST, de manière " customisée ". Mais cela signifie qu'il faut un travail supplémentaire de la part des développeurs, non ?


    Oui. Un webservice c'est une sorte d'API. ça dit: si je fais un GET à  telle URL, ça me renvoie la liste des articles dans tel format.

    Donc, il faut définir ce que renvoie chaque requête à  telle URL avec telle méthode HTTP et tels paramètres.


    'Larme' a écrit:


    Donc, qu'est-ce qui est possible, et si vous avez déjà  eu un peu d'expérience dans ce domaine-là , avez-vous des conseils, des recommandations, des types de solutions à  éviter


    Utilise AFNetworking, ça fait gagner beaucoup de temps, et c'est très fiable.

    Utilisez le format JSON pour les échanges. C'est plus facile à  parser que le XML.


    'Larme' a écrit:


    Autre question subsidiaire, un système via Notifications (niveau serveur) est-il difficile à  mettre en place ? Si j'ai bien tout suivi, il faut une implémentation côté serveur, et une autre côté application, non ? ça permet de " joindre " l'utilisateur lorsque l'application n'est pas ouverte.


    Côté application, ce n'est pas très compliqué. En gros une méthode déléguée de UIApplication est appelée pour te donner un token que tu devras renvoyer (via le webservice) au serveur.



    Côté serveur, il doit s'interfacer avec le serveur d'Apple (Apple Push Notification service). Ce n'est pas non plus trop complexe, mais le serveur doit s'identifier auprès de l'APS, ce qui veut dire qu'il y a échange de certificats. Or, il y a deux types de certificat: développement et production, et il faut, ben... utiliser le bon. Il y a également deux ports HTTP suivant qu'on est en dév et en prod, et il faut... utiliser le bon. Si l'équipe web est ordonnée et suit tes consignes, on y parvient vite. Sinon, on échange 20 e-mails...



    L'autre difficulté est que le serveur demande l'envoi de notifications et doit donc détecter qu'une telle notification est nécessaire. Ce n'est pas toujours simple.
  • LarmeLarme Membre
    mars 2013 modifié #3
    Ok.

    Merci beaucoup pour ces réponses générales. Elles vont m'aider pas mal dans mes recherches.



    Je me demande, si d'ailleurs, quelques tutos/grandes lignes de ce genre d'applications ne serait pas mal sur PommeDev...

    Une l'application terminée, je pense que je rédigerais un p'tit truc. Succinct, mais pour reprendre les grandes lignes qui ont été posées ici en les explicitant un peu plus. ça pourrait aider plus d'un.
Connectez-vous ou Inscrivez-vous pour répondre.