Implementação Swift 2.0

Para integrar a SDK Inngage ao seu aplicativo desenvolvido em Swift siga os passos a seguir.

1. No arquivo **Info.plist** adicione a seguinte seguinte chave **InngageAppToken**. O valor desta chave deverá ser obtido na plataforma Inngage em **Configurações do App > Aplication ID**

1114

🚧

As implementações abaixo deverão ser feitas no arquivo AppDelegate.swift

2. Adicione a importação da biblioteca:

import PushNotificationManager

3. Adicione o código abaixo no corpo do método **didFinishLaunchingWithOptions** (*método existente*): Um erro de compilação será apresentado, mas não se preocupe, criaremos o método **didReceiveRemoteNotification** nos próximos passos.

let settings =
   UIUserNotificationSettings(forTypes:[.Alert, .Badge, .Sound], categories: nil)
UIApplication.sharedApplication().registerUserNotificationSettings(settings)
if let remoteNotification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? NSDictionary {
            
self.application(application, didReceiveRemoteNotification: remoteNotification as! [NSObject : AnyObject])
}
return true

4. Adicione a implementação do método **didRegisterUserNotificationSettings** (*método novo*):

func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) {
         	    PushNotificationManager.sharedInstance.handlePushRegisterForRemoteNotifications(notificationSettings)
}

4. Adicione a implementação do método **didRegisterForRemoteNotificationsWithDeviceToken** (*método novo*):

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
                	 PushNotificationManager.sharedInstance.handlePushRegistration(deviceToken)
}

5. Adicione a implementação do método **didFailToRegisterForRemoteNotificationsWithError** (*método novo*):

func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
        
        PushNotificationManager.sharedInstance.handlePushRegistrationFailure(error)
}

6. Adicione a implementação do método **didReceiveRemoteNotification** (*método novo*):

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
        
PushNotificationManager.sharedInstance.handlePushReceived(userInfo)
}

Geolocalização

📘

Esta configuração é opcional. Todavia, não adicionar o trecho abaixo impedirá a realização de campanhas de push geolocalizadas.

7. No arquivo Info.plist adicione as seguintes chaves: **NSLocationAlwaysUsageDescription** e **NSLocationWhenInUseUsageDescription**.

1616

🚧

As implementações abaixo deverão ser feitas no arquivo ViewController.swift

8. Adicione a importação das seguintes bibliotecas:

import CoreLocation
import PushNotificationManager

9. Adicione na classe ViewController uma extensão da classe **CLLocationManagerDelegate**.

class ViewController: UIViewController, CLLocationManagerDelegate{
...
}

10. Adicione as seguintes variáveis no corpo da classe ViewController:

let locationManager = CLLocationManager()
let status = CLLocationManager.authorizationStatus()
var manager:CLLocationManager!

11. Adicione a seguinte implementação no corpo do método **viewDidLoad()**:

override func viewDidLoad() {        
   super.viewDidLoad()        
   if(status == CLAuthorizationStatus.NotDetermined) {
     self.locationManager.requestAlwaysAuthorization();
   } 
   else {            
    manager = CLLocationManager()
    manager.delegate = self
    manager.desiredAccuracy = kCLLocationAccuracyBest
    manager.startUpdatingLocation()          
    PushNotificationManager.sharedInstance.handleUpdateLocations(manager)
	}
}

🚧

Alteração do Build Options

Antes de fazer a compilação, altere as seguintes propriedades no Build Settings do target do seu app: Embedded Content Contains Swift Code e Enable Bitcode.

1368

📘

Código Fonte

O projeto exemplo utilizado neste guia se encontra disponível em nosso Github.
Fique a vontade para dar um Fork em nosso repositório 😃
https://github.com/inngage/inngage-swift-sample