# Mac OS X

[**SDK herunterladen**](https://github.com/Pushwoosh/pushwoosh-mac-sdk)\
[**Beispielprojekt**](https://github.com/Pushwoosh/pushwoosh-mac-sdk/tree/master/Samples/Mac)\
[**SDK API-Dokumentation**](https://github.com/Pushwoosh/pushwoosh-mac-sdk/tree/master/Documentation)

## Verknüpfen des Pushwoosh.frameworks

Fügen Sie das `Pushwoosh.framework` über einen Abhängigkeitsmanager zu Ihrem Projekt hinzu, indem Sie die folgenden Zeilen in Ihre `podfile` oder `cartfile` einfügen:

<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>

Alternativ können Sie das Framework einfach per Drag & Drop in **Link Binaries With Libraries** in den **Build Phases** Ihres Projekts ziehen.

## Hinzufügen von Bibliotheken

Öffnen Sie im Tab **Build Phases** Ihres Projekts **Link Binaries With Libraries** und klicken Sie auf „Elemente hinzufügen“ (+-Button). Suchen Sie nach den Bibliotheken **libz.tbd** und **libc++.tbd** und fügen Sie sie zu Ihrem Projekt hinzu:

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

## Verknüpfen der App mit dem Pushwoosh Control Panel

Fügen Sie in Ihrer **Info.plist** einen Schlüssel vom Typ String `Pushwoosh_APPID` mit Ihrem Pushwoosh Application Code als Wert hinzu.

## Ändern des AppDelegate

Fügen Sie den folgenden Code zu Ihrem AppDelegate hinzu:

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

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

//Ihr Initialisierungscode

//-----------PUSHWOOSH-TEIL-----------

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

// benutzerdefinierten Delegaten für die Push-Verarbeitung festlegen, in unserem Fall - View Controller
Pushwoosh.sharedInstance().delegate = self

// Push beim App-Start verarbeiten
Pushwoosh.sharedInstance().handlePushReceived(aNotification.userInfo)

// für Push-Benachrichtigungen registrieren!
Pushwoosh.sharedInstance().registerForPushNotifications()
```
</TabItem>

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

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    //Ihr Initialisierungscode

    //-----------PUSHWOOSH-TEIL-----------

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

    // benutzerdefinierten Delegaten für die Push-Verarbeitung festlegen, in unserem Fall - View Controller
    [Pushwoosh sharedInstance].delegate = self;

    // Push beim App-Start verarbeiten
    [[Pushwoosh sharedInstance] handlePushReceived:[aNotification userInfo]];

    // für Push-Benachrichtigungen registrieren!
    [[Pushwoosh sharedInstance] registerForPushNotifications];
 }
```
</TabItem>
</Tabs>

Fügen Sie den folgenden Code zu Ihrem **UIApplicationDelegate** hinzu (dieselbe Datei wie oben).

<Tabs>
<TabItem label="Swift">
```swift
// Erfolgs-Callback für die Registrierung von System-Push-Benachrichtigungen, delegieren an PWMessagingDelegate
func application(_ application: NSApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
   Pushwoosh.sharedInstance()?.handlePushRegistration(deviceToken)
}

// Fehler-Callback für die Registrierung von System-Push-Benachrichtigungen, delegieren an PWMessagingDelegate
func application(_ application: NSApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
   Pushwoosh.sharedInstance()?.handlePushRegistrationFailure(error)
}
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// Erfolgs-Callback für die Registrierung von System-Push-Benachrichtigungen, delegieren an pushManager
- (void)application:(NSApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
  [[Pushwoosh sharedInstance] handlePushRegistration:deviceToken];
}

// Fehler-Callback für die Registrierung von System-Push-Benachrichtigungen, delegieren an pushManager
- (void)application:(NSApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
  [[Pushwoosh sharedInstance] handlePushRegistrationFailure:error];
}
```
</TabItem>
</Tabs>

Um Push-Benachrichtigungen zu verarbeiten, fügen Sie die folgende Funktion zu Ihrem **UIApplicationDelegate** hinzu (dieselbe Datei wie drei Schritte zuvor):

<Tabs>
<TabItem label="Swift">
```swift
//dieses Ereignis wird ausgelöst, wenn der Push empfangen wird
func pushwoosh(_ pushwoosh: Pushwoosh!, onMessageReceived message: PWMessage!) {
   print("onMessageReceived: \(String(describing: message.payload))")
}

//dieses Ereignis wird ausgelöst, wenn der Benutzer auf die Benachrichtigung tippt
func pushwoosh(_ pushwoosh: Pushwoosh!, onMessageOpened message: PWMessage!) {
   print("onMessageOpened: \(String(describing: message.payload))")
}
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
//dieses Ereignis wird ausgelöst, wenn der Push empfangen wird
- (void)pushwoosh:(Pushwoosh *)pushwoosh onMessageReceived:(PWMessage *)message {
    NSLog(@"onMessageReceived: %@", message.payload);
}

//dieses Ereignis wird ausgelöst, wenn der Benutzer auf die Benachrichtigung tippt
- (void)pushwoosh:(Pushwoosh *)pushwoosh onMessageOpened:(PWMessage *)message {
    NSLog(@"onMessageOpened: %@", message.payload);
}
```
</TabItem>
</Tabs>

## Aktivieren von Push-Benachrichtigungen

Gehen Sie zu **Signing and** **Capabilities** in Ihrem Target. Drücken Sie **+ Capability** und fügen Sie **Push Notifications** hinzu.

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