تُعد الجلسات أساس Picker API، فهي توفّر طريقة آمنة ومحكمة للمستخدمين لاختيار الصور والفيديوهات من مكتبتهم في "صور Google". يوضّح هذا الدليل كيفية إنشاء جلسات استطلاع وإدارتها واستخدامها بفعالية من أجل إتاحة اختيار الصور بسلاسة في تطبيقك.
قبل البدء
- ضبط تطبيقك: فعِّل واجهة برمجة التطبيقات وأعِدّ المصادقة. راجِع مقالة ضبط تطبيقك للحصول على خطوات تفصيلية.
- فهم مسار العمل: راجِع دليل البدء في استخدام Picker API للحصول على نظرة عامة على عملية اختيار الصور بأكملها.
- مراجعة نطاقات الأذونات المطلوبة: يتطلّب العمل مع الجلسات النطاق
photospicker.mediaitems.readonly
. لمزيد من المعلومات حول النطاقات، يُرجى الاطّلاع على نطاقات التفويض.
مراحل نشاط الجلسة
توفّر واجهة برمجة التطبيقات Picker API طرقًا لإنشاء الجلسات واسترداد المعلومات عنها وحذفها. بعد مصادقة المستخدمين، يمكنك استخدام الجلسات لإدارة دورة حياة اختيار الصور.
- إنشاء جلسة للسماح للمستخدم باختيار عناصر الوسائط
- إجراء استطلاع للجلسة لمعرفة الوقت الذي انتهى فيه المستخدم من اختيار عناصر الوسائط
- عرض عناصر الوسائط واسترجاعها
- تنظيف الجلسة عن طريق حذفها
إنشاء جلسات
يمكنك إنشاء جلسة ليتمكّن المستخدمون من اختيار الصور بأمان مباشرةً من تطبيق "صور Google" ومشاركتها مع تطبيقك.
تنشئ sessions.create
جلسة جديدة، وتعرض pickerUri
فريدًا يمكنك تقديمه للمستخدمين. تظل الجلسة نشطة إلى أن يختار المستخدم ملفات وسائط بنجاح أو تنتهي مهلة الجلسة. بالنسبة إلى التطبيقات المستندة إلى الويب، يمكنك إضافة /autoclose
إلى pickerUri
لإغلاق نافذة "صور Google" أو علامتها تلقائيًا بعد أن يكمل المستخدم عملية الاختيار. يمكنك الاطّلاع على اختيار الصور: ما يراه المستخدمون للحصول على التفاصيل.
حدود الجلسات
انتبه إلى حدود الجلسة. تفرض واجهة برمجة التطبيقات Picker API حدودًا على عدد الجلسات التي يمكنك إنشاؤها لضمان الاستخدام المسؤول ومنع إساءة الاستخدام. في الظروف العادية، من غير المرجّح أن تبلغ هذه الحدود. ومع ذلك، عليك تتبُّع الجلسات وتنظيفها بشكل استباقي لتجنُّب أي مشاكل.
استطلاعات الرأي وجلسات المراقبة
بعد إنشاء جلسة، يمكنك إجراء طلب بحث بشكل دوري إلى نقطة النهاية sessions.get
للحصول على حالة الجلسة. تعرض السمة mediaItemsSet
في الردّ القيمة true
عندما يكمل المستخدم اختياره.
احرص على استخدام الاستقصاء الفعّال. يتضمّن الردّ sessions.get
العنصر pollingConfig
. استخدِم الحقول التالية لمساعدتك في تجنُّب المكالمات غير الضرورية وتقديم تجربة سلسة للمستخدم:
pollInterval
: فواصل الاقتراع المثاليةtimeoutIn
: مدة المهلة
يمكنك الاطّلاع على مثال على عملية الاقتراع لمزيد من التفاصيل.
حذف الجلسات وتنظيفها
يزيل sessions.delete
جلسة، ويُستخدم عادةً للتنظيف بعد أن ينتهي المستخدم من اختيار الوسائط أو إذا انتهت مهلة الجلسة.
من أفضل الممارسات حذف الجلسات بعد أن يختار المستخدم عناصر الوسائط ويسترد تطبيقك وحدات بايت الخاصة بعنصر الوسائط.
مثال على عملية الاقتراع
هذا مثال على إنشاء جلسة واستطلاعها. بعد إثبات هوية المستخدم لأول مرة، أنشئ جلسة جديدة.
- إنشاء جلسة: اتّصِل بـ
sessions.create
لبدء جلسة جديدة والحصول علىpickerUri
. - اعرض
pickerUri
للمستخدم: اعرض عنوان URL أو أنشئ رمز استجابة سريعة ليتمكن المستخدم من مسحه ضوئيًا. يمكنك الاطّلاع على نظرة عامة حول تجربة المستخدم في اختيار المنتجات. - إجراء استطلاع في الجلسة:
- استخدِم قيمة pollInterval المقترَحة من
pollingConfig
. - تحقَّق مما إذا كانت القيمة
mediaItemsSet
صحيحة.- إذا كانت القيمة
true
، انتقِل إلى إدراج ملفات الوسائط المحدّدة. - إذا كانت القيمة
false
، استمر في الاستطلاع إلى أن تصل إلىtimeoutIn
.
- إذا كانت القيمة
- التعامل مع المهلات وعمليات الإلغاء بشكل سليم
- استخدِم قيمة pollInterval المقترَحة من
GET https://photoslibrary.googleapis.com/v1/sessions/{sessionId}
في ما يلي مثال على الردّ:
{
"id": string,
"pickerUri": string,
"pollingConfig": {
object (PollingConfig)
},
"mediaItemsSet": boolean
}
اعرض pickerUri
للمستخدم، ثم ابدأ في استطلاع الجلسة.
تحقَّق من الردّ بحثًا عمّا يلي:
-
mediaItemsSet
: تكون القيمة true إذا انتهى المستخدم من اختيار ملفات الوسائط -
pollingConfig.pollInterval
: الوقت المقترَح للانتظار قبل إجراء الاستطلاع التالي -
pollingConfig.timeoutIn
: إجمالي الوقت الذي يجب انتظاره قبل انتهاء المهلة
إذا كانت قيمة mediaItemsSet
هي false ولم يتم الوصول إلى قيمة timeoutIn
، انتظِر إلى أن يحين الوقت pollInterval
ثم أرسِل طلبًا مرة أخرى.
إذا كانت القيمة mediaItemsSet
صحيحة، انتقِل إلى إدراج ملفات الوسائط المحدّدة.
في حال الوصول إلى timeoutIn
، يجب التعامل مع انتهاء المهلة بشكل سليم.