# فهم معرفات الأجهزة في Pushwoosh

هناك طريقتان لتحديد جهاز معين مسجل في Pushwoosh – معرف الجهاز (HWID) ورمز الدفع (push token).

## HWID

HWID (أو Hardware ID) هو معرف رئيسي يتم تعيينه للجهاز بواسطة Pushwoosh SDK.

#### Android HWID

بالنسبة لأجهزة Android، فإن HWID هو مجموعة عشوائية من الحروف والأرقام يتم إنشاؤها بواسطة أول تطبيق مثبت عليه Pushwoosh SDK على الجهاز. يتم مشاركته لاحقًا مع التطبيقات الأخرى التي تحتوي على Pushwoosh SDK بحيث يكون لجميع هذه التطبيقات نفس HWID نتيجة لذلك.

ومع ذلك، إذا قام المستخدم بحذف جميع التطبيقات التي تحتوي على Pushwoosh SDK ثم أعاد تثبيت بعضها، فسيتم إنشاء HWID جديد مرة أخرى.

مثال على Android HWID: `5dcaed99-e1e0-44dc-bde2-b96188b99e9e`

#### iOS HWID

بالنسبة لأجهزة iOS، يتم استخدام IDFV ([Identifier for Vendor](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor)) كـ HWID للجهاز. لن يتغير طالما يوجد تطبيق واحد على الأقل من نفس المورد مثبتًا على الجهاز.

مثال على iOS HWID (أحرف كبيرة فقط!): `CBAF8ED1-17FB-49A3-73BD-DC79B63AEF93`

## رمز الدفع (Push token)

رمز الدفع (device token) هو مفتاح فريد لمزيج التطبيق والجهاز تصدره بوابات إشعارات الدفع من Apple أو Google. يسمح للبوابات ومقدمي إشعارات الدفع بتوجيه الرسائل وضمان تسليم الإشعار إلى مزيج التطبيق والجهاز الفريد المخصص له.

#### رمز الدفع لـ iOS

رموز الدفع لأجهزة iOS هي سلاسل نصية مكونة من 64 رمزًا سداسيًا عشريًا. مثال على رمز الدفع لـ iOS: `03df25c845d460bcdad7802d2vf6fc1dfde97283bf75cc993eb6dca835ea2e2f`

<Aside type="caution">
تأكد من أن رموز الدفع (push tokens) لنظام iOS التي تستخدمها عند استهداف أجهزة معينة في طلبات API الخاصة بك تكون بـ**أحرف صغيرة**.
</Aside>

#### رمز الدفع لـ Android

يمكن أن تختلف رموز الدفع لأجهزة Android في الطول (عادةً أقل من 255 حرفًا) وعادةً ما تبدأ بـ APA91b…؛ ومع ذلك، قد تحتوي أيضًا على بادئة مفصولة بنقطتين رأسيتين. مثال على رمز الدفع لـ Android: `APA91bFoi3lMMre9G3XzR1LrF4ZT82_15MsMdEICogXSLB8-MrdkRuRQFwNI5u8Dh0cI90ABD3BOKnxkEla8cGdisbDHl5cVIkZah5QUhSAxzx4Roa7b4xy9tvx9iNSYw-eXBYYd8k1XKf8Q_Qq1X9-x-U-Y79vdPq`

<Aside type="caution">
استخدام رموز الأجهزة الأولية لاستهداف أجهزة معينة ليس الطريقة الأكثر موثوقية لأن رموز الدفع (push tokens) الخاصة بـ FCM تميل إلى التغيير من وقت لآخر، ومن الصعب تحديد عدد مرات حدوث ذلك.
</Aside>

## جمع السجلات و HWID ورمز الدفع من جهاز

### iOS

أولاً، إذا كان لديك وصول إلى الكود المصدري لتطبيقك، فتأكد من أن `Pushwoosh_LOG_LEVEL` في تطبيقك مضبوط على `VERBOSE`. للقيام بذلك، تحقق من مفتاح السلسلة النصية `Pushwoosh_LOG_LEVEL` في ملف `Info.plist` الخاص بك. إذا لم يكن كذلك، فانتقل إلى الخطوة التالية. فيما يلي القيم الممكنة لهذا المفتاح:

*   `NONE` - لا توجد سجلات من SDK
*   `ERROR` - عرض الأخطاء فقط في وحدة التحكم
*   `WARNING` - عرض التحذيرات أيضًا
*   `INFO` - إضافة رسائل إعلامية
*   `DEBUG` - إضافة معلومات تصحيح الأخطاء
*   `VERBOSE` - جميع السجلات من SDK

تسمح قيمة المفتاح `VERBOSE` لـ Pushwoosh SDK بعرض معلومات مهمة تتعلق بإجراءات التسجيل.

2. بعد ذلك، قم بتوصيل الجهاز بجهاز Mac الخاص بك وقم بتشغيل Xcode. اذهب إلى Window->Device and Simulators.

<img src="/pushwoosh-knowledge-hub-device-identifiers-1.webp" alt="نافذة أجهزة ومحاكيات Xcode تظهر جهاز iOS متصل"/>

3. في النافذة المفتوحة، حدد جهازك المتصل وانقر على المثلث المتجه لأعلى في أسفل اليسار لرؤية وحدة تحكم الجهاز:

<img src="/pushwoosh-knowledge-hub-device-identifiers-2.webp" alt="عرض وحدة تحكم جهاز Xcode يظهر سجلات الجهاز مع تمييز زر المثلث لأعلى"/>

بدءًا من إصدار Xcode 9.3، تغيرت عملية الحصول على سجل وحدة تحكم الجهاز قليلاً. كل ما عليك فعله هو الذهاب إلى Launchpad الخاص بك وبدء تطبيق "Console". حدد جهازك في الشريط الجانبي الأيسر. هذا كل شيء!

<img src="/pushwoosh-knowledge-hub-device-identifiers-3.webp" alt="تطبيق Console في macOS يظهر جهاز iOS متصل محدد في الشريط الجانبي الأيسر مع عرض سجلات الجهاز"/>

4. بعد ذلك، ابدأ تشغيل تطبيقك على الجهاز وانتظر نافذة الحوار. اسمح بإشعارات الدفع لتطبيقك.

5. بعد هذه الخطوات، حدد سجل الجهاز بالكامل من نافذة وحدة التحكم وانسخه إلى أي محرر نصوص.

طلب Pushwoosh API [`/registerDevice`](/ar/developer/api-reference/device-api/) هو ما تبحث عنه:

<img src="/pushwoosh-knowledge-hub-device-identifiers-4.webp" alt="سجل وحدة تحكم الجهاز يظهر طلب API registerDevice مع ظهور معلمات hwid و push token"/>

إذا تم تسجيل الجهاز بشكل صحيح، فيجب أن يحتوي هذا الطلب على المعلمات التالية، بما في ذلك قيم "hwid" و "push token":

```txt title="مثال"
x
| Pushwoosh request:
| Url: https://D868A-C13C1.api.pushwoosh.com/json/1.3/registerDevice
| Payload: {"request":{"gateway":"production","jailbroken":0,"app_version":"1.9","application":"D868A-C13C1","sounds":["bubble.wav"],"device_type":1,"userId":"1457691684303547","language":"en","hwid":"FBCA07FE-05EE-4770-B4BA-AB6737BC1A98","package":"com.pushwoosh.pushon","timezone":"25200","push_token":"ae784019d1b8c8e38a1ea06f0800c17a4fa986d6e2d346fc79373e92439ff8f7","os_version":"11.2.2","v":"5.5.1","device_model":"iPhone7,1"}}
| Status: "200 no error"
| Response: {"status_code":200,"status_message":"OK","response":{"iosCategories":[{"categoryId":0,"buttons":[{"id":"33389","label":"test","type":"0","startApplication":0},{"id":"1233","label":"ajhdkj","type":"1","startApplication":0}]}]}}
x
```

يجب أن يكون الإشعار الذي يحتوي على رمز الدفع لجهازك موجودًا أيضًا:

```
<Notice>: [PW] [I] -[PWPushNotificationsManagerCommon] Registered for push notifications: ae784019d1b8c8e38a1ea06f0800c17a4fa986d6e2d346fc79373e92439ff8f7
```

### Android

1. إذا كان لديك وصول إلى الكود المصدري للتطبيق، فتأكد من أن مستوى سجل Pushwoosh مضبوط على `NOISE`. للقيام بذلك، أضف بيانات `com.pushwoosh.log_level` الوصفية بالقيمة `NOISE` إلى `AndroidManifest.xml`.

2. بعد ذلك، قم بتشغيل Android Studio على جهاز Mac/PC الخاص بك وانتقل إلى Tools -> Android -> Android Device Monitor.

<img src="/pushwoosh-knowledge-hub-device-identifiers-5.webp" alt="نافذة Android Device Monitor في Android Studio تظهر جهاز Android متصل"/>

3. قم بتوصيل جهازك بجهاز Mac/PC وقم بتشغيل التطبيق. انتظر حوالي 30 ثانية، حدد سجل الجهاز بالكامل من نافذة وحدة التحكم وانسخه إلى أي محرر نصوص.

<img src="/pushwoosh-knowledge-hub-device-identifiers-6.webp" alt="نافذة سجل وحدة تحكم Android Device Monitor تظهر سجلات الجهاز مع ظهور طلب registerDevice"/>

يرجى ملاحظة أنه في أحدث إصدارات Android Studio، يمكنك أيضًا استخدام أداة Logcat للحصول على سجل وحدة تحكم الجهاز. قم بتشغيل Android Studio وانتقل إلى View -> Tool Windows -> Logcat:

<img src="/pushwoosh-knowledge-hub-device-identifiers-7.webp" alt="واجهة Android Studio تظهر نافذة أداة Logcat التي يتم الوصول إليها من قائمة View"/>

بعد ذلك، يمكنك تحديد موقع سجل الجهاز في نافذة Logcat:

<img src="/pushwoosh-knowledge-hub-device-identifiers-8.webp" alt="نافذة Logcat في Android Studio تعرض سجلات الجهاز مع ظهور طلب API registerDevice"/>

إليك المثال أدناه، كيف يبدو طلب Pushwoosh /registerDevice API ضمن سجل وحدة تحكم الجهاز:

<img src="/pushwoosh-knowledge-hub-device-identifiers-9.webp" alt="سجل وحدة تحكم جهاز Android يظهر طلب API registerDevice مع تمييز معلمات hwid و push token"/>

ابحث عن قيمة معلمات "hwid" و "push token" في الطلب:

```txt title="مثال"
[RequestManager]
x
| Pushwoosh request:
| Url: https://D868A-C13C1.api.pushwoosh.com/json/1.3/registerDevice
| Payload: {"request":{"application":"D868A-C13C1","hwid":"fc79efabee7649ec","v":"5.5.2","device_type":3,"userId":"fc79efabee7649ec","device_name":"Phone","language":"en","timezone":25200,"android_package":"com.pushwoosh.pushon","jailbroken":0,"device_model":"Sony F8332","os_version":"8.0.0","idfa":"d43ad490-4e6a-48a8-b8b9-f20b76fbf07b","app_version":"1.5","push_token":"dwMAeCRabUE:APA91bGSk8SqCSycxfltrWCV9KtXGo48-8qvNKfzHn758PW7lLXSi_Wd7y3gqw-lbexsjLwsaXStpELTJUAQVZ3ybNqAUmfw-we-62rTjpNbvBa4oPYTwaPCr3s4M05xNv8jGau-MeA_","sounds":"[]"}}
| Response: {"status_code":200,"status_message":"OK","response":null}
x
[RequestManager] registerDevice response success
```

يتم تضمين رمز الدفع في إشعار تسجيل الجهاز:

```
I/Pushwoosh(12733): [DeviceRegistrar] Registered for pushes: dwMAeCRabUE:APA91bGSk8SqCSycxfltrWCV9KtXGo48-8qvNKfzHn758PW7lLXSi_Wd7y3gqw-lbexsjLwsaXStpELTJUAQVZ3ybNqAUmfw-we-62rTjpNbvBa4oPYTwaPCr3s4M05xNv8jGau-MeA_
03-30 14:45:10.539: D/PushOn(12733): Registered for push notifications
```

### Chrome (سطح المكتب)

1. اذهب إلى موقع الويب الخاص بك.

2. انقر بزر الماوس الأيمن في أي مكان على الصفحة واضغط على "Inspect".

<img src="/pushwoosh-knowledge-hub-device-identifiers-10.webp" alt="أدوات مطوري متصفح Chrome مفتوحة مع ظهور خيار قائمة السياق Inspect Element"/>

3. في النافذة المفتوحة، انتقل إلى علامة التبويب "Application".

4. بعد ذلك، في الشريط الجانبي الأيسر، اختر IndexedDB -> Pushwoosh\_SDK\_Store -> keyValue. هنا، ابحث عن معلمات HWID و push token.

<img src="/pushwoosh-knowledge-hub-device-identifiers-11.webp" alt="علامة تبويب Application في أدوات مطوري Chrome تظهر IndexedDB مع Pushwoosh SDK Store و keyValue الذي يحتوي على HWID و push token"/>

### Chrome (الجوال)

1. قم بتوصيل جهازك المحمول بالكمبيوتر.

2. انتقل إلى chrome://inspect/#devices على متصفح Chrome لسطح المكتب.

3. افتح موقع الويب الخاص بك على متصفح Chrome المحمول.

4. بمجرد فتح موقع الويب على متصفح Chrome المحمول، سترى الصفحة المقابلة داخل صفحة Chrome لسطح المكتب. يرجى إلقاء نظرة على لقطة الشاشة أدناه:

<img src="/pushwoosh-knowledge-hub-device-identifiers-12.webp" alt="صفحة تصحيح الأخطاء عن بعد في Chrome تظهر جهاز جوال متصل مع تمييز زر Inspect"/>

5. اضغط على زر "Inspect" المميز في لقطة الشاشة أعلاه.

6. ستظهر النافذة التالية على متصفح Chrome لسطح المكتب. هناك، ضمن علامة التبويب "Application"، افتح IndexedDB -> PUSHWOOSH\_SDK\_STORE. بعد ذلك، انقر فوق keyValue وافتح قسم API\_PARAMS:

<img src="/pushwoosh-knowledge-hub-device-identifiers-13.webp" alt="علامة تبويب Application في أدوات مطوري Chrome تظهر IndexedDB PUSHWOOSH SDK STORE مع قسم API_PARAMS الذي يحتوي على hwid و push token"/>

في قسم API\_PARAMS، ستجد معلمات "hwid" و "push token" مع قيمها.

### Safari

1. اذهب إلى موقع الويب الخاص بك.
2. انقر بزر الماوس الأيمن في أي مكان على الصفحة وحدد Inspect Element.
3. انتقل إلى علامة التبويب Storage -> Indexed Databases -> PUSHWOOSH\_SDK\_STORE -> keyValue.
4. قم بتوسيع API\_PARAMS وابحث عن قيم "hwid" و "push token" هنا.

<img src="/pushwoosh-knowledge-hub-device-identifiers-14.webp" alt="علامة تبويب Storage في أدوات مطوري Safari تظهر Indexed Databases مع PUSHWOOSH SDK STORE keyValue الذي يحتوي على API_PARAMS مع hwid و push token"/>