Docs

  • Channels Channels
  • Beams Beams
  • Developers
  • Support
  • Blog
  • Sign up
    • Search powered by Algolia
    • Sign in
    • Sign up
    • Channels
    • Getting started
      • SDK quick starts
        • JavaScript quick start
        • iOS quick start
        • Android quick start
        • Flutter quick start
        • React Native quick start
      • Use case quick starts
        • Javascript realtime chart
        • Javascript realtime user list
      • Debugging
    • Using channels
      • Client API overview
      • Connection
      • User authentication
      • Watchlist events
      • Functions
      • Authorized connections
      • Channels
      • Public channels
      • Private channels
      • Encrypted channels
      • Presence channels
      • Cache channels
      • Events
      • Global configuration
      • Websocket fallbacks
      • Device compatibility
    • Server api
      • Overview
      • HTTP API interaction
      • Webhooks
      • Authenticating users
      • Authorizing users
      • Sending events to authenticated users
      • Terminating user connections
      • Excluding event recipients
    • Channels libraries
      • API libraries
    • Pusher cli
      • Overview
      • Installation
      • Documentation
    • Miscellaneous
      • Clusters
      • Integrations
      • Resources
    • Library auth reference
      • Authentication and authorization signatures
      • HTTP API reference
      • Pusher Channels Protocol
      • Server library reference specification
      • Logging
    • Beams
    • Pusher lab

    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.

    Contents

    • Get your free API keys
    • Install the library
    • Create a connection
      • Subscribe to a public channel
    • Listen for events
    • Trigger events from your server
    • Where next?

    Spotted something that isn’t quite right? Create an issue on GitHub.

    Copyright © 2024 Pusher Ltd. All rights reserved.

    • Support,
    • Status
    • Follow Pusher on Twitter Twitter
    • Subscribe to Pusher’s channel on YouTube
    • Follow Pusher on LinkedIn
    • Follow Pusher on Github GitHub
    • Follow Pusher on Twitch Twitch
    • Follow Pusher on Discord Discord
    OSZAR »