# كيفية إعداد الأحداث

تُستخدم **الأحداث** لتتبع الإجراءات المختلفة التي يقوم بها المستخدمون في التطبيق. يتم تخزين البيانات من الأحداث تاريخيًا، مما ينشئ جدولًا زمنيًا لسلوك المستخدم. يمكن تمرير جميع المعلومات السياقية حول الحدث كمجموعة من السمات وقيمها.

بمجرد جمع هذه البيانات بشكل صحيح، يمكن استخدامها في:

*   إطلاق رسائل قائمة على السلوك؛
*   تعديل تدفق تواصل المستخدم داخل Customer Journey بناءً على سلوكه؛
*   بناء شرائح من المستخدمين الذين يقومون بإجراء معين في التطبيق؛
*   الحصول على رؤى حول تدفق المستخدم ومقاييس الاستخدام والبيانات الإحصائية الأخرى.

## أنواع الأحداث

هناك نوعان من الأحداث في Pushwoosh:
- الأحداث الافتراضية
- الأحداث المخصصة

### الأحداث الافتراضية
الأحداث الافتراضية هي تفاعلات أساسية يقوم بها المستخدمون في التطبيقات أو مواقع الويب بغض النظر عن صناعتها أو وظائفها. تشكل إجراءات المستخدم الرئيسية هذه جوهر تواصل العملاء ويمكن الاستفادة منها لأي منتج وعميل في أي مرحلة من دورة حياة العميل.
تتوفر الأحداث الافتراضية بشكل جاهز مع أحدث إصدارات SDK ولا تتطلب أي إعداد إضافي، باستثناء [PW_InAppPurchase](/ar/product/audience-data-and-segmentation/events/default-events#pw_inapppurchase).

تعرف على المزيد حول [الأحداث الافتراضية](/ar/product/audience-data-and-segmentation/events/default-events)

### الأحداث المخصصة
على عكس الأحداث الافتراضية، التي تكون عالمية عبر العديد من التطبيقات والقطاعات، فإن الأحداث المخصصة هي الأحداث التي تنشئها خصيصًا لتطبيقك. تتتبع هذه الأحداث إجراءات محددة فريدة لاحتياجاتك، مثل إكمال تمرين رياضي أو تمديد اشتراك، وتساعدك على فهم كيفية تفاعل المستخدمين مع ميزاتك المحددة.

تتطلب الأحداث المخصصة منك تنفيذها من جانبك.

## تنفيذ الأحداث المخصصة

### 1. إنشاء الأحداث وتعيين السمات

يجب إنشاء جميع الأحداث التي يرسلها تطبيقك في Pushwoosh أولاً مع مجموعة السمات وأنواعها؛ وإلا، فلن يتعرف عليها Pushwoosh.

يمكنك أن تطلب من فريق التسويق الخاص بك إنشاء الأحداث مباشرة في [لوحة تحكم Pushwoosh](/ar/product/audience-data-and-segmentation/events#1-create-events-in-pushwoosh-control-panel) أو استخدام طريقة [createEvent](/ar/developer/api-reference/events#createevent) API. يتضمن ذلك تحديد اسم الحدث وأي بيانات مرتبطة ترغب في تتبعها.

### 2. استدعاء /postEvent API

عندما يحدث حدث ترغب في تتبعه في تطبيقك، استدعِ [`/postEvent`](/ar/developer/api-reference/user-centric-api#postevent) API لإرسال هذا الحدث إلى Pushwoosh.

#### iOS

استدعِ [`postEvent`](/ar/developer/api-reference/user-centric-api#postevent) لإرسال حدث إلى Pushwoosh:

<Tabs>
<TabItem label="Swift">
```swift
PWInAppManager.shared().postEvent("eventName", withAttributes: nil)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
[[PushNotificationManager pushManager] postEvent:@“eventName” withAttributes:@{}];
```
</TabItem>
</Tabs>

لإضافة تفاصيل حول الحدث (بالإشارة إلى السمات)، استخدم معامل السمات كما يلي:

<Tabs>
<TabItem label="Swift">
```swift
let attributes: [String : Any] = ["AttributedString" : "someString",
                                  "AttributeInt" : 42,
                                  "AttributeList" : [123, 456, "someString"],
                                  "AttributeBool" : true,
                                  "AttributeDate" : NSDate()]

PWInAppManager.shared().postEvent("eventName", withAttributes: attributes)
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
NSDictionary *attributes = @{ 
  @"AttributeString" : @"someString",
  @"AttributeInt" : @(42),
  @"AttributeList" : @[ @(123), @(456), @"someString" ],
  @"AttributeBool" : @YES,
  @"AttributeDate" : [NSDate date] 
};

[[PushNotificationManager pushManager] postEvent:@“eventName” withAttributes:attributes];
```
</TabItem>
</Tabs>

#### Android

عندما يحدث حدث في تطبيق Android الخاص بك، استخدم الإرشادات التالية لإرسال هذا الحدث إلى Pushwoosh.

استدعِ [`postEvent`](/ar/developer/api-reference/user-centric-api#postevent) لإرسال حدث إلى Pushwoosh:

```java
PushwooshInApp.getInstance().postEvent("eventName");
```

لإضافة تفاصيل حول الحدث (بالإشارة إلى السمات)، استخدم معامل السمات كما يلي:

```java
TagsBundle attributes = new TagsBundle.Builder()
				.putInt("AttributeInt", 17)
				.putString("AttributeString", "str")
				.putDate("AttributeDate", new Date())
				.putBoolean("AttributeBool", true)
				.putList("AttributeList", Arrays.asList("item1", "item2", "item3"))
				.build();

PushwooshInApp.getInstance().postEvent("eventName", attributes);
```

<Aside type="note">
يمكنك أيضًا إرسال الأحداث من [**In-App Javascript**](/ar/developer/guides/messaging-channels/inapp-with-javascript/).
</Aside>