# Mac OS X

[**Télécharger le SDK**](https://github.com/Pushwoosh/pushwoosh-mac-sdk)\
[**Projet d'exemple**](https://github.com/Pushwoosh/pushwoosh-mac-sdk/tree/master/Samples/Mac)\
[**Documentation de l'API du SDK**](https://github.com/Pushwoosh/pushwoosh-mac-sdk/tree/master/Documentation)

## Lier Pushwoosh.framework

Ajoutez `Pushwoosh.framework` à votre projet via un gestionnaire de dépendances en ajoutant les lignes suivantes dans votre `podfile` ou `cartfile` :

<Tabs>
<TabItem label="Podfile">
```
platform :osx, '10.7'

target 'MyApp' do
	pod 'Pushwoosh_mac'
end
```
</TabItem>

<TabItem label="Cartfile">
```
github "Pushwoosh/pushwoosh-mac-sdk"
```
</TabItem>
</Tabs>

Alternativement, vous pouvez simplement glisser-déposer le framework dans **Link Binaries With Libraries** dans les **Build Phases** de votre projet.

## Ajouter des bibliothèques

Dans l'onglet **Build Phases** de votre projet, ouvrez **Link Binaries With Libraries** et cliquez sur Ajouter des éléments (bouton « + »). Recherchez et ajoutez les bibliothèques **libz.tbd** et **libc++.tbd** à votre projet :

<img src="/pushwoosh-sdk-os-x-1.webp" alt=""/>

## Lier l'application avec le Panneau de Contrôle Pushwoosh

Dans votre **Info.plist**, ajoutez une clé de type chaîne de caractères `Pushwoosh_APPID` avec votre code d'application Pushwoosh comme valeur.

## Modifier l'AppDelegate

Ajoutez le code suivant à votre AppDelegate :

<Tabs>
<TabItem label="Swift">
```swift
import PushKit
import Pushwoosh

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {

// une grande partie de votre code d'initialisation

//-----------PARTIE PUSHWOOSH-----------

NSUserNotificationCenter.default.delegate = Pushwoosh.sharedInstance()?.notificationCenterDelegateProxy

// définir un délégué personnalisé pour la gestion des pushs, dans notre cas - le contrôleur de vue
Pushwoosh.sharedInstance().delegate = self

// gestion du push au démarrage de l'application
Pushwoosh.sharedInstance().handlePushReceived(aNotification.userInfo)

// s'inscrire aux notifications push !
Pushwoosh.sharedInstance().registerForPushNotifications()
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
#import <Pushwoosh/Pushwoosh.h>

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // une grande partie de votre code d'initialisation

    //-----------PARTIE PUSHWOOSH-----------

    [NSUserNotificationCenter defaultUserNotificationCenter].delegate = [Pushwoosh sharedInstance].notificationCenterDelegateProxy;

    // définir un délégué personnalisé pour la gestion des pushs, dans notre cas - le contrôleur de vue
    [Pushwoosh sharedInstance].delegate = self;

    // gestion du push au démarrage de l'application
    [[Pushwoosh sharedInstance] handlePushReceived:[aNotification userInfo]];

    // s'inscrire aux notifications push !
    [[Pushwoosh sharedInstance] registerForPushNotifications];
 }
```
</TabItem>
</Tabs>

Ajoutez le code suivant à votre **UIApplicationDelegate** (même fichier que ci-dessus).

<Tabs>
<TabItem label="Swift">
```swift
// rappel de succès de l'enregistrement des notifications push système, délégué à PWMessagingDelegate
func application(_ application: NSApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
   Pushwoosh.sharedInstance()?.handlePushRegistration(deviceToken)
}

// rappel d'erreur de l'enregistrement des notifications push système, délégué à PWMessagingDelegate
func application(_ application: NSApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
   Pushwoosh.sharedInstance()?.handlePushRegistrationFailure(error)
}
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// rappel de succès de l'enregistrement des notifications push système, délégué à pushManager
- (void)application:(NSApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
  [[Pushwoosh sharedInstance] handlePushRegistration:deviceToken];
}

// rappel d'erreur de l'enregistrement des notifications push système, délégué à pushManager
- (void)application:(NSApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
  [[Pushwoosh sharedInstance] handlePushRegistrationFailure:error];
}
```
</TabItem>
</Tabs>

Pour gérer les notifications push, ajoutez la fonction suivante à votre **UIApplicationDelegate** (le même fichier que trois étapes ci-dessus) :

<Tabs>
<TabItem label="Swift">
```swift
// cet événement est déclenché lorsque le push est reçu
func pushwoosh(_ pushwoosh: Pushwoosh!, onMessageReceived message: PWMessage!) {
   print("onMessageReceived: \(String(describing: message.payload))")
}

// cet événement est déclenché lorsque l'utilisateur appuie sur la notification
func pushwoosh(_ pushwoosh: Pushwoosh!, onMessageOpened message: PWMessage!) {
   print("onMessageOpened: \(String(describing: message.payload))")
}
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// cet événement est déclenché lorsque le push est reçu
- (void)pushwoosh:(Pushwoosh *)pushwoosh onMessageReceived:(PWMessage *)message {
    NSLog(@"onMessageReceived: %@", message.payload);
}

// cet événement est déclenché lorsque l'utilisateur appuie sur la notification
- (void)pushwoosh:(Pushwoosh *)pushwoosh onMessageOpened:(PWMessage *)message {
    NSLog(@"onMessageOpened: %@", message.payload);
}
```
</TabItem>
</Tabs>

## Activer les notifications Push

Allez dans **Signing and** **Capabilities** dans votre cible. Appuyez sur **+ Capability** et ajoutez **Push Notifications**.

<img src="/pushwoosh-sdk-os-x-2.webp" alt=""/>