الأسئلة المتكررة حول مجموعة Facebook SDK لنظام iOS واستكشاف الأخطاء وإصلاحها

يمكنك استخدام معرف تطبيق فيسبوك في تطبيقات iOS متعددة، على سبيل المثالن بين الإصدارات المجانية والمدفوعة لتطبيقك.

حدد معلمة لاحقة مخطط عنوان URL، 'FacebookUrlSchemeSuffix'، في ملف '.plist' في تطبيقك.

ملاحظة: لا يمكن استخدام سوى حروف أبجدية في اللاحقة.

يشتمل ملف SDK المضغوط على 'FacebookSDKStrings.bundle' والتي تحتوي على سلاسل نصية مترجمة لموارد SDK. قم بتضمين الحزمة في تطبيقك مع [تمكين التدويل الأساسي] (https://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPInternational/InternationalizingYourUserInterface/InternationalizingYourUserInterface.html#//apple_ref/doc/uid/10000171i-CH3-SW4) كما هو موضح في وثائق Apple.

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

يجب التأكد من وجود بيانات الاستيراد الصحيحة على رأس كل ملف من الملفات التي تحاول فيها استخدام فئات مجموعة Facebook SDK. على سبيل المثال:

#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKShareKit/FBSDKShareKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>

في حالة استخدام أطر العمل في Objective-C، فإنه لا يتم تحميل الفئات التي تستخدم التصنيفات لتوسيع الفئات الحالية تلقائيًا.

عند محاولة استدعاء طريقة قد تم توسيعها في هذه الفئات، تظهر رسالة الخطأ 'تم إرسال أداة تحديد غير معروفة إلى المثيل'. ولا يتم كذلك تحميل الفئات المستخدمة من منشئ واجهات Xcode تلقائيًا، على سبيل المثال عند إضافة 'FBSDKLoginButton' إلى واجهتك من خلال رسم طريقة عرض في ملف .xib وتعيينها على أنها 'FBSDKLoginButton' من خلال واجهة مستخدم منشئ الواجهات. وبالتالي كما قلنا، عند محاولة استدعاء طرق عليها تظهر رسالة الخطأ 'تم إرسال أداة تحديد غير معروفة إلى المثيل'. يتوفر لحل هذه المشكلة خياران.

يمكنك تحميل الفئة يدويًا في 'application:didFinishLaunchingWithOptions' لتفويض التطبيق من خلال استدعاء:

[FBSDKLoginButton class];

أو يمكنك إضافة إشارة أداة الربط '-ObjC'. توجه الإشارة أداة الربط لتحميل كل ملفات الكائنات الموجودة في مجموعة SDK والتي تحدد الفئة أو التصنيف Objective-C. تؤدي هذه الطريقة إلى أن تعمل كافة الفئات خارج سياقها إلا أنه يترتب عليها زيادة حجم الملف القابل للتنفيذ (وذلك بسبب رمز الكائن الإضافي الذي تم تحميله إلى التطبيق).

لإضافة إشارة '-ObjC'، انقر على هدف المشروع وحدد علامة تبويب "Build Settings" (إعدادات النسخة). وأسفل "Linking" (الربط)، انقر نقرًا مزدوجًا على "Other Linker Flags" (إشارات أداة ربط أخرى) لإضافة '-ObjC'.

يستخدم 'FBSDKRequestConnection' 'NSURLConnection' الذي يتطلب وجود [RunLoop] نشط (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSRunLoop_Class/Reference/Reference.html). وفي حالة استخدامه خارج نطاق السلسلة الأساسي، فيجب عليك إدارة ذلك بنفسك.

أو يمكنك بدلاً من ذلك تعيين خاصية 'delegateQueue' على 'FBSDKRequestConnection'.

من الشائع حدوث أخطاء تكوين في '.plist'. تأكد من اشتمال'.plist' على صفوف 'FacebookAppID' و'FacebookDisplayName' وإدخال نوع عنوان URL لـ 'fb{app-id}'.

في حالة الحصول على أي نتائج غير متوقعة عند تقديم طلبات Graph API، يجب تمكين وضع تصحيح الأخطاء قبل تقديم أية طلبات:

[FBSettings setLoggingBehavior:
    [NSSet setWithObject:FBSDKLoggingBehaviorGraphAPIDebugInfo]];

قم باستخدام 'FBSDKLoggingBehaviorGraphAPIDebugWarning' إذا كنت ترغب في إيقاف رسائل مستوى المعلومات والاحتفاظ برسائل التحذير فقط.

يؤدي تمكين سلوك تسجيل الدخول هذا إلى إضافة معلمة 'debug' لاستدعاء طلبات Graph API وإخراج أي مشكلات موجودة في وحدة التحكم.

يمكنك الاطلاع على المزيد عن وضع تصحيح أخطاء Graph API [هنا] (/docs/graph-api/using-graph-api/v2.3#debugging).

تقوم مجموعة SDK بالإبلاغ عن عملية إلغاء إذا ضغط المستخدم بوضوح على أحد أزرار الإلغاء في مربعات حوار تسجيل الدخول، أو عند القيام يدويًا بالتشغيل مرة أخرى للتطبيق (والذي يعرف باسم الإلغاء الضمني). يجب التأكد من عدم بدء دفق تسجيل دخول كجزء من دورة حياة تفويض التطبيق (مثل بدء عملية تسجيل دخول داخل 'application:openURL:sourceApplication:annotation:') حيث يحاكي ذلك عملية الإلغاء الضمنية. وإذا اقتضت الضرورة، قم بإرسال بدء تسجيل الدخول فيما بعد إلى قائمة الانتظار الرئيسية بحيث تكتمل دورة حياة تفويض التطبيق أولاً.

  • تشتمل Facebook SDK على رمز للوصول إلى IDFA (معرف إعلانات Apple)، ولكن هذا الرمز يتم تنفيذه في مواقف محددة فقط.
  • لا تتمكن Facebook SDK لنظام iOS من الوصول إلى معرف إعلانات Apple إلا في السيناريوهات التالية: 1) إذا كان تطبيقك يقدم الإعلانات داخل التطبيق عبر [Audience Network]من فيسبوك(/products/audience-network/)، أو 2) إذا كان تطبيقك يقوم بتسجيل عمليات التثبيت أو أية أحداث تطبيق هواتف محمولة أخرى من أجل إسناد هذه الأحداث إلى حملاتك الإعلانية.
  • إذا لم تكن تسجل أحداث التطبيق (باستخدام الفئة FBSDKAppEvents)، فلن يتمكن Facebook SDK من الوصول إلى معرفات IDFA. بالإضافة إلى ذلك، لا تطلب Facebook SDK تضمين AdSupport.framework. إذا كنت ترغب في تتبع أحداث التطبيق دون تجميع IDFA، يمكنك تعطيل تجميع IDFA من داخل لوحة معلومات تطبيقك في قسم الإعدادات المتقدمة.

يقوم مربع الحوار "مشاركة" بإبلاغ طريقتي 'sharer:didCompleteWithResults:' و'sharerDidCancel:' للتفويض الخاص به عند اتخاذ المستخدم أحد الإجراءات.

  • يتم استدعاء الطريقة 'sharer:didCompleteWithResults:' عندما ينجح المستخدم في المشاركة. علاوة على ذلك، سيكون هناك أيضًا مفتاح 'postId' في قاموس 'results' في حالة منح المستخدم التطبيق أذونات 'publish_actions'. في حالة عدم تسجيل المستخدم الدحول باستخدام تسجيل دخول فيسبوك، يتم استدعاء هذه الطريقة أيضًا إذا نقر المستخدم على 'Cancel'.
  • يتم استدعاء الطريقة 'sharerDidCancel' عندما ينقر الشخص على زر 'X' بمربع الحوار مشاركة؛ أو عند تسجيله الدخول باستخدام تسجيل دخول فيسبوك والنقر على 'Cancel'.

في حالة الحصول على نتائج غير متوقعة عند تقديم الطلبات، يجب تشغيل تصحيح أخطاء 'FBSDKGraphRequests'. يجب وضع هذا الرمز قبل أي طلب:

[FBSDKSettings enableLoggingBehavior:FBSDKLoggingBehaviorNetworkRequests];

سيصبح بالإمكان تصحيح أخطاء أي مشكلات من خلال عرض الطلبات والاستجابات من الخوادم مباشرة.

ويُنصح بالنظر في ثوابت 'FBSDKLoggingBehavior*' الأخرى المحددة في 'FBSDKSettings.h' بحثًا عن أي أشياء أخرى يمكن تسجيلها.