Blog Boreal Business

IOS / Objective C : Gérer les requêtes REST

avril 6th, 2012    Posted in Développement

Voici un exemple de classe permettant d’envoyer des requêtes pour l’architecture REST vers un serveur

Les requêtes REST utilisent le protocole HTTP pour le transport des données

restRequest.h

#import <Foundation/Foundation.h>

@interface restRequest : NSObject <NSURLConnectionDelegate, NSURLConnectionDataDelegate> {
SEL callback; // Selecteur vers la fonction de retour
id delegate; // objet cible pour l'appel de la fonction de retour
int status; // code HTTP
bool done; // true si la requête est terminée

NSMutableString *method;
NSMutableString *url;
NSMutableString *payload;

NSMutableURLRequest *request;
NSURLConnection *connection;
NSMutableData *dta;
NSMutableString *result;
}

@property (nonatomic,retain) NSMutableData *dta;

@property (nonatomic,retain) NSMutableString *method;
@property (nonatomic,retain) NSMutableString *url;
@property (nonatomic,retain) NSMutableString *payload;

@property (nonatomic,retain) NSMutableURLRequest *request;
@property (nonatomic,retain) NSURLConnection *connection;

@property (nonatomic) SEL callback;
@property (nonatomic,assign) id delegate;

@property (nonatomic) int status;
@property (nonatomic) bool done;
@property (nonatomic,retain) NSMutableString *result;

-(id)initWithCallback:(SEL)cal andDelegate:(id)dl;
-(void)start;
-(void)cancel;
@end

restRequest.m

#import "restRequest.h"

@implementation restRequest

@synthesize callback;
@synthesize delegate;

@synthesize url;
@synthesize method;
@synthesize payload;

@synthesize connection;
@synthesize request;
@synthesize dta;
@synthesize status;
@synthesize result;
@synthesize done;

-(id)initWithCallback:(SEL)cal andDelegate:(id)dl {

    self = [super init];
    if(self) {
        callback = cal; // Selecteur vers la fonction de retour
        delegate = [dl retain]; // objet cible de la fonction de retour
        status = -1; // code de retour HTTP
        done = FALSE; // indique si la requête est terminée

        dta = [[NSMutableData alloc] init]; // buffer
        url = [[NSMutableString alloc] init]; // url appelée
        method = [[NSMutableString alloc] initWithString:@"GET"]; // méthode HTTP : GET / POST / PUT, ...
        payload = [[NSMutableString alloc] init]; // contenu de la requete (Body)

        result = [[NSMutableString alloc] init]; // résultat de la requête
    }

    return self;

}
-(void)dealloc {

    [self cancel];

    done = TRUE;

    delegate = nil;
    callback = nil;

    [dta release];
    [url release];
    [method release];
    [payload release];
    [result release];

    if(request){
        [request release];
        request = nil;
    }

    [super dealloc];
}
-(void)start {

    status = 0;

    [dta setLength:0];

        [result setString:@""];
        NSString *full = [NSString stringWithFormat:@"http://%@/%@",@"http://www.url-de-base.com/",url];
        NSURL *myurl = [NSURL URLWithString:full];

        if(request){
            [request release];
            request = nil;
        }

        request = [[NSMutableURLRequest alloc] initWithURL:myurl];
        [request setHTTPMethod:method];
        if([payload length] > 0) [request setHTTPBody:[payload dataUsingEncoding:NSUTF8StringEncoding]];
        //[request setValue:@"application/xml" forHTTPHeaderField:@"Content-Type"]; // spécifie le format du contenu de la requête
        [request setTimeoutInterval:10];

        connection = [NSURLConnection connectionWithRequest:request delegate:self];
      [connection start];

}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [dta appendData:data];
}
-(void)connection:(NSURLConnection *)sconnection didFailWithError:(NSError *)error {
    NSLog(@"Error restRequest %@",[error localizedDescription]);
    [dta setLength:0];

    status = -2;

    if(delegate && [delegate respondsToSelector:callback]) [delegate performSelector:callback withObject:self];

    connection = nil;
    delegate = nil;
    callback = nil;

    done = TRUE;
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    if([response respondsToSelector:@selector(statusCode)]){
        status = [(NSURLResponseInternal *)response statusCode];
    }
}
-(void)connectionDidFinishLoading:(NSURLConnection *)sconnection {

    NSMutableString *res = [[NSMutableString alloc] initWithData:dta encoding:NSUTF8StringEncoding];
    [result setString:res];

    if(delegate && [delegate respondsToSelector:callback]){
        [delegate performSelector:callback withObject:self];
        [delegate release];
    }

    connection = nil;
    delegate = nil;
    callback = nil;
    done = TRUE;

    [res release];
}
-(void)cancel {
    if(connection){
        [connection cancel];
        connection = nil;
    }

    if(request){
        [request release];
        request = nil;
    }

    delegate = nil;
    callback = nil;
    done = TRUE;
}

@end

Pour l’utiliser :

-(void)start_request {

    restRequest *rest = [[restRequest alloc] initWithCallback:@selector(register_response:) andDelegate:self];

    [[(restRequest *)rest url] setString:@"appel/fonction.php"];
    [[(restRequest *)rest method] setString:@"PUT"];
    [[(restRequest *)rest payload] setString:@"contenu xml, json, ..."];

    [(restRequest *)rest start];

}
-(void)register_response:(restRequest *)res {

    if (res.status == 204) {
        // success
        NSString *resultat = res.result;
    }
    else if(res.status == 404){
        // document introuvable ...
    }
    else if(res.status == 500){
        // erreur interne
    }
    else if(res.status == -2){
        // impossible d'établir la connection, probablement un problème de réseau
    }

}

 

Bookmark and Share

Poster un commentaire


Offre d’emploi développeur web et applications mobiles

février 8th, 2012    Posted in Développement

Contexte et missions :
Boréal Business est une jeune entreprise de 5 personnes créée en 2008, implantée à Bourges et Paris.
Notre activité de développement s’articule autour de 3 domaines d’activité stratégiques :

  • Développement d’applications mobiles (smartphones et tablettes tactiles) sur plateformes iPhone / iPad / Android
  • Développement de boutiques en ligne et d’outils e-commerce
  • Développement de solutions web annexes (sites de présentation, back-offices …)

Nous recherchons un développeur web junior, avec intérêt fort ou première expérience autonome dans le développement d’applications mobiles (smartphones et/ou tablettes tactiles). Une culture en e-commerce / e-marketing sera un + appréciable.
Nous sommes intéressés par une personne disponible immédiatement, capable d’intégrer notre équipe jeune (moyenne 25 ans) et motivée pour accompagner l’équipe actuelle de développeurs sur les projets en web et mobile. La croissance rapide de notre structure permettra de responsabiliser rapidement la personne recrutée. L’état d’esprit et la motivation sont prépondérants par rapport à l’expérience et la formation.

Profil recherché :

  • Formation : niveau BTS / Licence ou Autodidacte
  • Environnement LAMP : Linux / Apache / MySql / Php
  • C/C++ et/ou Java
  • Merci de fournir 1 ou plusieurs références de projets consultables.

Modalités :

  • Lieu : Bourges (18)
  • Temps plein 35 heures / semaine
  • CDD 3 mois puis CDI si résultats satisfaisants.
  • Prétentions salariales à préciser.

Pour postuler merci d’envoyer votre CV + lettre de motivation par email à contact@boreal-business.net ou de nous consulter pour un 1er entretien au 01.75.43.03.82
Votre interlocuteur : Romain FROMENTEAU

Bookmark and Share

Poster un commentaire


Spécialisation dans le développement d’applications mobiles professionnelles orientées métiers

octobre 23rd, 2011    Posted in Divers

Depuis quelques mois nous avons travaillé et avons été consultés sur des projets mobiles ayant fait évolué notre positionnement.

Boréal Business sera dorénavant spécialisé (entre autre) dans le développement et la gestion de projets d’applications mobiles professionnelles orientées métiers.

Pour nous cela signifie :
- Vous proposer nos services et vous accompagner sur des problématiques mobiles assez complexes.
- Vous donner les moyens techniques d’accéder à de nouveaux marchés, de compléter ou diversifier concrètement votre offre.
- Vous permettre de réaliser des gains de productivité, d’améliorer vos procédures internes grâce à des applications mobiles performantes et sécurisées.

Ainsi nous souhaitons définitivement dépasser la simple dimension marketing de l’application mobile. Avoir une application iPhone sur l’AppStore qui porte le nom de sa boite c’est très bien, mais si celle-ci permet à vos clients de bénéficier 24h/24 d’un service performant ou si elle permet à vos collaborateurs d’accéder en temps réel à des informations stratégiques c’est encore mieux, et votre image n’en sera que renforcée !

Nous pouvons d’ores et déjà vous fournir des références solides, notamment sur iPad, l’outil qu’il manquait pour envisager de tels projets.

Si vous souhaitez développer une appli métier mobile efficace, n’attendez pas pour nous contacter : 01.75.43.03.82

Nous sommes sérieux et nos tarifs sont attractifs.

Bookmark and Share

Poster un commentaire


Présentation du projet THOONCOUNT

juillet 15th, 2011    Posted in Sortie d'application

THOONCOUNT, projet intégralement développé par Boréal, est la première solution web et mobile de comptage clients en point de vente.

Ce service distribué par la société Thoonsen, basée à Châteauroux et spécialisée dans la lutte contre le vol à l’étalage et la démarque inconnue, est novateur à plusieurs égards :

1/ Les clients de la société Thoonsen dont les points de vente sont équipés d’antennes antivol Thoonsen, pourront avoir accès à cette prestation de comptage sans nouvelle installation matérielle.

2/ THOONCOUNT est la première solution de comptage client disponible sur tous les smartphones et sur le web : espace web + application iPhone + WebApp.
Les applications mobiles sont téléchargeables gratuitement et sécurisées par un simple login (saisie simplifiée).

3/ Il s’agit d’un service multi-magasin, il permet d’afficher plusieurs points de vente sous le même compte utilisateur. Idéal pour garder un œil sur toutes vos boutiques ou que vous soyez.

4/ Les données de comptage sont disponibles quasiment en temps réel, elles sont actualisées toutes les 15 minutes et présentées sous forme de graphiques avec accès à l’historique des entrés et sorties des jours et semaines précédentes dans la formule évoluée de THOONCOUNT.

5/ L’installation est réalisée sous quelques heures et vous avez accès immédiatement à vos données.

Les prestations prises en charge par Boréal dans ce projet sont :

1/ Développement de l’application iPhone, de la WebApp et du back-office web bien entendu.

2/ Développement du logiciel permettant de transférer les données depuis les antennes en magasin vers nos serveurs. Données retraitées et affichées sur les différents supports par la suite.

3/ Installation du logiciel pour chaque nouveau client avec prise en main à distance.

4/ Maintenance et évolution de tout ça.

 

Alors, si vous avez besoin de développements spécifiques et assez poussés pour vos projets iPhone / iPad / Android / mobiles en général : 01.75.43.03.82

Comme pour Thoonsen, nous pouvons nous charger de développer l’application mobile qui vous ouvrira de nouveaux marchés, tout en prenant soin de votre image.

Et si vous voulez lutter efficacement contre le vol à l’étalage et bénéficier en prime du comptage de vos clients :

www.thoonsen.fr

Bookmark and Share

Poster un commentaire


Présentation de ubuy : petites annonces vidéo sur iPhone et Android

juin 20th, 2011    Posted in Sortie d'application

En ce mois de juin 2011, Boréal Business lance ses applications de petites annonces sur mobiles : ubuy (youbuy)
Versions iPhone et Android disponibles depuis quelques jours et développées en interne.
Le concept propose de mettre en avant vos annonces grâce à l’utilisation de vidéos, faciles et rapides à tourner avec vos smartphones.
Ubuy est gratuit pour tout le monde et disponible en plusieurs langues, pas d’inscription nécessaire, vous pouvez publier rapidement vos annonces et enregistrer vos favorites directement sur l’application.

Téléchargez l’application iPhone ici
Téléchargez l’application Android ici

Venez poster un maximum d’annonces et lancez le buzz.

Bookmark and Share

Poster un commentaire


Installer une application «non-Market» sur Android

mai 3rd, 2011    Posted in Développement

Installer une application ne provenant pas du Market peut s’avérer très utile, notamment si vous travaillez avec un développeur d’application. En effet cela vous permettra d’installer l’application avant sa publication, par exemple pour suivre l’avancement du développement.

Comment installer l’application ?

Les applications ont l’extension .apk.

Pour les installer, il faut d’abord autoriser les applications ne provenant pas du Market pour cela, il faut aller dans Menu > Paramètre > Applications puis cocher « Sources inconnues ».

Si l’application se trouve sur votre ordinateur, copiez la sur la carte SD de votre téléphone.

Puis utilisez un gestionnaire de programme, par exemple AppInstaller ; ou un gestionnaire de fichiers par exemple « ES File Explorer » ou « Astro File Manager ». Tous ces gestionnaires sont disponibles gratuitement sur le Market.

Si celle ci se trouve sur internet, entrez l’adresse dans le navigateur et l’application se téléchargera automatiquement. Une fois le téléchargement terminé, sélectionnez la notification du téléchargement (Menu > Notification), Android vous proposera alors d’installer l’application.

Bookmark and Share

Poster un commentaire