iOS quick start
This guide uses the PusherSwift client API and a selection of Server API libraries. We also have a guide for our JavaScript and Android.
If you have any questions get in touch.
∞ Get your free API keys
Create an account. To get API keys, from the Pusher Dashboard, navigate to App Keys. Make a note of your app_id, key, secret, and cluster.
∞ Install the library
Install using CocoaPods.
pod 'PusherSwift'
Import Pusher into the class that wants to make use of the library.
import PusherSwift
#import "PusherSwift/PusherSwift-Swift.h"
Here is a step-by-step guide on how to install and setup CocoaPods if you are using it for the first time.
∞ Create a connection
let options = PusherClientOptions(
  host: .cluster("YOUR_CLUSTER")
)
let pusher = Pusher(key: "YOUR_APP_KEY", options: options)
pusher.connect()
OCAuthMethod *authMethod = [[OCAuthMethod alloc] initWithAuthEndpoint:@"https://your.authendpoint/pusher/auth"];
OCPusherHost *host = [[OCPusherHost alloc] initWithCluster:@"YOUR_CLUSTER"];
PusherClientOptions *options = [[PusherClientOptions alloc]
                              initWithOcAuthMethod:authMethod
                              attemptToReturnJSONObject:YES
                              autoReconnect:YES
                              ocHost:host
                              port:nil
                              encrypted:YES];
self.pusher = [[Pusher alloc] initWithAppKey:@"YOUR_APP_KEY" options:options];
[self.pusher connect];
For detailed information, refer to Connection and the PusherSwift documentation.
∞ Subscribe to a public channel
let myChannel = pusher.subscribe("my-channel")
PusherChannel *myChannel = [pusher subscribeWithChannelName:@"my-channel"];
∞ Listen for events
Once you have created a channel instance, you can set up event bindings. There is no need to wait for the connection to be established. The following example just receives and prints a “Hello, World!” message.
let _ = myChannel.bind(eventName: "my-event", callback: { (data: Any?) -> Void in
  if let data = data as? [String : AnyObject] {
    if let message = data["message"] as? String {
        print(message)
    }
  }
})
[myChannel bindWithEventName:@"my-event" callback:^void (NSDictionary *data) {
  NSString *message = data[@"message"];
  NSLog(message);
}];
∞ Trigger events from your server
In the examples below, we trigger an event named my-event to Channels on a channel called my-channel. For each example, a server library deals with the server communication.
# First, run 'gem install pusher'
require 'pusher'
pusher = Pusher::Client.new(
  app_id: 'APP_ID',
  key: 'APP_KEY',
  secret: 'APP_SECRET',
  cluster: 'APP_CLUSTER'
)
pusher.trigger('my-channel', 'my-event', {:message => 'hello world'})
// First, run 'npm install pusher'
var Pusher = require("pusher");
var pusher = new Pusher({
  appId: "APP_ID",
  key: "APP_KEY",
  secret: "APP_SECRET",
  cluster: "APP_CLUSTER",
});
pusher.trigger("my-channel", "my-event", { message: "hello world" });
// First, run 'composer require pusher/pusher-php-server'
require __DIR__ . '/vendor/autoload.php';
$pusher = new Pusher\Pusher("APP_KEY", "APP_SECRET", "APP_ID", array('cluster' => 'APP_CLUSTER'));
$pusher->trigger('my-channel', 'my-event', array('message' => 'hello world'));
// First, run 'Install-Package PusherServer'
using PusherServer;
using System.Web.Mvc;
using System.Net;
using Your.Config;
public class HelloWorldController : Controller {
  [httpPost]
  public async Task<ActionResult> HelloWorld() {
    var options = new PusherOptions();
    options.Cluster = 'APP_CLUSTER';
    var pusher = new Pusher('APP_ID', 'APP_KEY', 'APP_SECRET', options);
    var result = await pusher.TriggerAsync("my-channel", "my-event", new { message = "hello world" });
    return new HttpStatusCodeResult((int)HttpStatusCode.OK);
  }
}
# First, run 'pip install pusher'
import pusher
pusher_client = pusher.Pusher(
  app_id=u'APP_ID',
  key=u'APP_KEY',
  secret=u'APP_SECRET',
  cluster=u'APP_CLUSTER'
)
pusher_client.trigger(u'my-channel', u'my-event', {u'message': u'hello world'})
// First, run 'go get github.com/pusher/pusher-http-go'
package main
import "github.com/pusher/pusher-http-go"
func main(){
  pusherClient := pusher.Client{
    AppId: "APP_ID",
    Key: "APP_KEY",
    Secret: "APP_SECRET",
    Cluster: "APP_CLUSTER",
  }
  data := map[string]string{"message": "hello world"}
  pusherClient.Trigger("my-channel", "my-event", data)
}
/*
  Add this Maven dependency:
  <dependency>
    <groupId>com.pusher</groupId>
    <artifactId>pusher-http-java</artifactId>
    <version>1.0.0</version>
  </dependency>
*/
Pusher pusher = new Pusher("APP_ID", "APP_KEY", "APP_SECRET");
pusher.setCluster("APP_CLUSTER");
pusher.trigger("my-channel", "my-event", Collections.singletonMap("message", "Hello World"));
$ pusher channels apps trigger --app-id APP_ID --channel "my-channel" --event "my-event" --message "hello world"
If there isn’t an example in a language that you are familiar with then refer to Channels server libraries page to check if anyone has created one in your language.
∞ Where next?
Find out about all the cool stuff you can do with Channels. Learn how to exclude event recipients when publishing events.