# Mac OS X

[**تنزيل SDK**](https://github.com/Pushwoosh/pushwoosh-mac-sdk)\
[**مشروع نموذجي**](https://github.com/Pushwoosh/pushwoosh-mac-sdk/tree/master/Samples/Mac)\
[**وثائق SDK API**](https://github.com/Pushwoosh/pushwoosh-mac-sdk/tree/master/Documentation)

## ربط Pushwoosh.framework

أضف `Pushwoosh.framework` إلى مشروعك عبر مدير التبعيات عن طريق وضع الأسطر التالية في `podfile` أو `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>

بدلاً من ذلك، يمكنك ببساطة سحب وإفلات الإطار في **Link Binaries With Libraries** في **Build Phases** لمشروعك.

## إضافة المكتبات

في علامة التبويب **Build Phases** لمشروعك، افتح **Link Binaries With Libraries** وانقر على إضافة عناصر (زر "+"). ابحث عن مكتبتي **libz.tbd** و **libc++.tbd** وأضفهما إلى مشروعك:

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

## ربط التطبيق بـ Pushwoosh Control Panel

في ملف **Info.plist** الخاص بك، أضف مفتاحًا من نوع string باسم `Pushwoosh_APPID` مع Pushwoosh Application Code الخاص بك كقيمة.

## تعديل AppDelegate

أضف الكود التالي إلى AppDelegate الخاص بك:

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

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

// الكثير من كود التهيئة الخاص بك

//-----------جزء PUSHWOOSH-----------

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

// تعيين مندوب مخصص للتعامل مع الإشعارات، في حالتنا - view controller
Pushwoosh.sharedInstance().delegate = self

// التعامل مع الإشعارات عند بدء تشغيل التطبيق
Pushwoosh.sharedInstance().handlePushReceived(aNotification.userInfo)

// التسجيل لتلقي الإشعارات!
Pushwoosh.sharedInstance().registerForPushNotifications()
```
</TabItem>

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

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // الكثير من كود التهيئة الخاص بك

    //-----------جزء PUSHWOOSH-----------

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

    // تعيين مندوب مخصص للتعامل مع الإشعارات، في حالتنا - view controller
    [Pushwoosh sharedInstance].delegate = self;

    // التعامل مع الإشعارات عند بدء تشغيل التطبيق
    [[Pushwoosh sharedInstance] handlePushReceived:[aNotification userInfo]];

    // التسجيل لتلقي الإشعارات!
    [[Pushwoosh sharedInstance] registerForPushNotifications];
 }
```
</TabItem>
</Tabs>

أضف الكود التالي إلى **UIApplicationDelegate** الخاص بك (نفس الملف أعلاه).

<Tabs>
<TabItem label="Swift">
```swift
// رد نداء نجاح تسجيل الإشعارات من النظام، يتم تفويضه إلى PWMessagingDelegate
func application(_ application: NSApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
   Pushwoosh.sharedInstance()?.handlePushRegistration(deviceToken)
}

// رد نداء خطأ تسجيل الإشعارات من النظام، يتم تفويضه إلى PWMessagingDelegate
func application(_ application: NSApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
   Pushwoosh.sharedInstance()?.handlePushRegistrationFailure(error)
}
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// رد نداء نجاح تسجيل الإشعارات من النظام، يتم تفويضه إلى pushManager
- (void)application:(NSApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
  [[Pushwoosh sharedInstance] handlePushRegistration:deviceToken];
}

// رد نداء خطأ تسجيل الإشعارات من النظام، يتم تفويضه إلى pushManager
- (void)application:(NSApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
  [[Pushwoosh sharedInstance] handlePushRegistrationFailure:error];
}
```
</TabItem>
</Tabs>

للتعامل مع الإشعارات، أضف الدالة التالية إلى **UIApplicationDelegate** الخاص بك (نفس الملف المذكور قبل ثلاث خطوات):

<Tabs>
<TabItem label="Swift">
```swift
// يتم إطلاق هذا الحدث عند استلام الإشعار
func pushwoosh(_ pushwoosh: Pushwoosh!, onMessageReceived message: PWMessage!) {
   print("onMessageReceived: \(String(describing: message.payload))")
}

// يتم إطلاق هذا الحدث عندما ينقر المستخدم على الإشعار
func pushwoosh(_ pushwoosh: Pushwoosh!, onMessageOpened message: PWMessage!) {
   print("onMessageOpened: \(String(describing: message.payload))")
}
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
// يتم إطلاق هذا الحدث عند استلام الإشعار
- (void)pushwoosh:(Pushwoosh *)pushwoosh onMessageReceived:(PWMessage *)message {
    NSLog(@"onMessageReceived: %@", message.payload);
}

// يتم إطلاق هذا الحدث عندما ينقر المستخدم على الإشعار
- (void)pushwoosh:(Pushwoosh *)pushwoosh onMessageOpened:(PWMessage *)message {
    NSLog(@"onMessageOpened: %@", message.payload);
}
```
</TabItem>
</Tabs>

## تمكين الإشعارات

اذهب إلى **Signing and** **Capabilities** في هدفك. اضغط على **+ Capability** وأضف **Push Notifications**.

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