002-pusher
EPISODE #2, 10 Mar 23:12
Pusher est un service permettant via des websockets d'avoir un système de notifications très rapide. Pusher met à disposition un API, ainsi que des librairies réalisés par la communauté dans plusieurs langages, dont l'objective-C.
Duration :

Project : https://github.com/ioslibraries/002-Pusher

Site Web : http://pusher.com/

Github libPusher : https://github.com/lukeredpath/libPusher

Installation

Téléchargez la librairie disponible depuis le github sur le lien : libPusher
Dans le dossier, vous allez trouver des librairies déjà compilées, avec le dossier contenant les headers.
Faites glisser le fichier "libPushe-combined.a" dans votre projet en cochant la case "copiez..."
Allez ensuite dans les settings du projet - build phases, vérifiez que le framework est bien ajouté dans la liste des frameworks pour la target sélectionnée.
Profitez-en pour ajouter les dépendances : Security, CFNetwork, SystemConfiguration, et libicucore.
Dans les settings du build, ajoutez -all_load pour la clé "Other linker flags".
Maintenant, ajoutez le dossier Header dans votre projet, en choisissant toujours l'option de copier les fichiers dans votre répertoire.

Vos identifiants fournis par Pusher à l'inscription.

// .pch 
#define PUSHER_KEY @"b77****************187"
#define PUSHER_SECRET @"c8d*****************d45"
#define PUSHER_APP_ID @"1***3"

Implémentation.

// header 
#import "PTPusher.h"

@class PTPusher, PTPusherChannel;
//....
@property (strong, nonatomic) PTPusher *client;
@property (strong, nonatomic) PTPusherChannel *channel;
// source file
#import "PTPusher.h"
#import "PTPusherEvent.h"
#import "PTPusherChannel.h"
#import "JSONKit.h"
#import "PTPusherAPI.h"

Initialisation des variables de classe (client et channel).

// viewDidLoad
self.client = [PTPusher pusherWithKey:PUSHER_KEY delegate:self encrypted:NO];

    self.channel = [client subscribeToChannelNamed:@"ioslibs"];
    
// Ecoute des messages entrants
    [channel bindToEventNamed:@"chat" handleWithBlock:^(PTPusherEvent *event) {
        // do something with channel event
        NSDictionary* data = event.data;
        [self onMessage:[data objectForKey:@"message"] sendedBy:[data objectForKey:@"username"]];
    }];

Envoi de message.

// A l'envoi
        PTPusherAPI *api = [[PTPusherAPI alloc] initWithKey:PUSHERKEY appID:PUSHERAPPID secretKey:PUSHERSECRET];
        NSDictionary *payload = [NSDictionary dictionaryWithObjectsAndKeys:self.messageTextField.text, @"message", MEN_NICKNAME,  @"username" ,nil];
        [api triggerEvent:@"chat" onChannel:@"ioslibs" data:payload socketID:nil];

blog comments powered by Disqus