# إنشاء إشعارات iOS تفاعلية

قدم iOS 8 الإشعارات التفاعلية، مما يسمح للمستخدمين باتخاذ إجراءات مباشرة من بانر الإشعار. تقدم Pushwoosh الآن **فئات iOS (iOS Categories)**، مما يتيح لك إنشاء أزرار مخصصة داخل لوحة تحكم Pushwoosh. [اعرف المزيد](/ar/product/messaging-channels/push-notifications/advanced-push-features/ios-interactive-push)

## API

عندما يستدعي تطبيقك [`registerDevice`](/ar/developer/api-reference/device-api/#registerdevice)، تُرجع Pushwoosh API استجابة تحتوي على قائمة بالفئات (Categories) المتاحة مع معرفاتها (IDs) وتفاصيل كل زر كما يلي:

```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "iosCategories": [
      {
        "categoryId": 65,
        "buttons": [
          {
            "id": 0,
            "label": "Rate",
            "type": "1",
            "startApplication": 1
          },
          {
            "id": 1,
            "label": "Later",
            "type": "0",
            "startApplication": 0
          }
        ]
      }
    ]
  }
}
```

هذه الفئات (Categories) متاحة الآن على الجهاز، بحيث يمكن عرضها بشكل صحيح عند وصول رسالة وتطبيقك لا يعمل في المقدمة.

لإرسال إشعارك مع فئة من Pushwoosh Journey، ما عليك سوى تحديدها في إعدادات منصة iOS أثناء إنشاء رسالتك. في حال كنت ترسل إشعاراتك عن بعد عبر Pushwoosh API، في طلبات [`createMessage`](/ar/developer/api-reference/messages-api/#createmessage) يجب عليك استخدام المعلمة `ios_category` مع معرف الفئة (Category ID) المقابل كقيمة:

```json
{
  "categoryId": 65  // اختياري. قيمة نصية. معرف فئة iOS8 من Pushwoosh
}
```

عندما تصل رسالة إشعار تحتوي على معرف فئة (category ID)، يعرض Pushwoosh SDK الإشعار مع مجموعة الأزرار التي تحتوي عليها هذه الفئة.

## الأزرار والإجراءات في Pushwoosh iOS SDK

لتنفيذ إجراءات مختلفة عند فتح التطبيق، يجب عليك إنشاء تطبيق مخصص لـ `UNUserNotificationCenterDelegate` وتجاوز (override) التابع `didReceiveNotificationResponse` الخاص به:

#### CustomDelegate


```swift
class CustomDelegate: NSObject, UNUserNotificationCenterDelegate {
    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
        let identifier = response.actionIdentifier
        let category = response.notification.request.content.categoryIdentifier

        if category == "10212" {
            if identifier == "1" {
                // DO SOMETHING
            } else {
                // DO SOMETHING ELSE
            }
        }

        completionHandler()
    }
}
```

حيث `identifier` هو معرف الزر، و `category` مشتق من حمولة الإشعار.

بعد ذلك، قم بإنشاء نسخة من هذا الصنف ومررها إلى Pushwoosh SDK باستخدام التابع الوكيل (proxy method):

#### AppDelegate

```swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    Pushwoosh.configure.registerForPushNotifications()

    let customDelegate = CustomDelegate()
    Pushwoosh.configure.addNotificationCenterDelegate(customDelegate)

    return true
}
```

<img src="/messaging-channels-ios-interactive-push-1.png" alt="إشعار iOS تفاعلي مع أزرار إجراءات مخصصة معروضة في بانر الإشعار"/>