Pertanyaan Umum & Pemecahan Masalah Facebook SDK untuk iOS

Anda dapat menggunakan ID aplikasi Facebook di beberapa aplikasi iOS, misalnya, antara versi berbayar dan versi gratis aplikasi Anda.

Tentukan parameter akhiran skema URL, FacebookUrlSchemeSuffix, di file .plist aplikasi Anda.

Catatan: Akhiran hanya berfungsi dengan karakter alfa.

Zip SDK mencakup FacebookSDKStrings.bundle yang berisi string yang dilokalkan untuk sumber daya SDK. Sertakan paket di aplikasi Anda dan [aktifkan Internasionalisasi Dasar] (https://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPInternational/InternationalizingYourUserInterface/InternationalizingYourUserInterface.html#//apple_ref/doc/uid/10000171i-CH3-SW4) sebagaimana dideskripsikan di dokumentasi Apple.

Karena dialog bagikan native merupakan bagian dari aplikasi iOS Facebook, maka itu tidak dapat dijalankan di simulator. Gunakan perangkat fisik untuk menguji dialog bagikan native. Kami sedang mencari cara untuk memungkinkan pengujian dialog bagikan native di simulator.

Pastikan Anda memiliki pernyataan impor yang benar di bagian atas masing-masing file tempat Anda mencoba menggunakan kelas SDK Facebook. Misalnya:

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

Saat menggunakan framework di Objective-C, kelas yang menggunakan kategori untuk memperluas kelas yang ada tidak dimuat secara otomatis.

Saat Anda mencoba untuk memanggil metode yang diperpanjang di kelas-kelas ini, Anda akan mendapatkan pesan kesalahan pemilih yang tidak dikenal dikirim ke instance. Kelas yang digunakan dari builder antarmuka Xcode juga tidak dimuat secara otomatis, misalnya saat Anda menambahkan FBSDKLoginButton ke antarmuka Anda dengan menata tampilan di file .xib Anda lalu mengaturnya sebagai FBSDKLoginButton dari UI builder antarmuka. Jadi, saat Anda mencoba untuk memanggil metode di dalamnya, Anda akan mendapatkan pesan kesalahan pemilih yang tidak dikenal dikirim ke instance. Anda memiliki dua opsi untuk memecahkan masalah ini.

Anda dapat memuat kelas secara manual di application:didFinishLaunchingWithOptions: delegasi aplikasi Anda, dengan cara memanggil:

[FBSDKLoginButton class];

Atau, Anda dapat menambahkan bendera linker -ObjC. Bendera akan memberi tahu linker untuk memuat setiap file objek di SDK yang menentukan kelas Objective-C atau kategori. Pendekatan ini akan membuat kelas-kelas kami dapat bekerja secara maksimal, namun ini akan meningkatkan ukuran yang dapat dijalankan dari aplikasi Anda (disebabkan oleh kode objek tambahan yang dimuat ke dalam aplikasi).

Untuk menambahkan bendera -ObjC, klik target proyek dan pilih tab "Pengaturan Build". Selanjutnya, di bagian "Menautkan", klik dua kali "Bendera Linker Lainnya" untuk menambahkan -ObjC.

FBSDKRequestConnection menggunakan NSURLConnection yang membutuhkan [RunLoop] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSRunLoop_Class/Reference/Reference.html) aktif. Jika Anda menggunakannya di luar utas utama, maka Anda harus mengelolanya sendiri.

Atau, Anda dapat mengatur properti delegateQueue di FBSDKRequestConnection.

Terjadi kesalahan konfigurasi di .plist adalah hal yang umum. Pastikan .plist menyertakan baris untuk FacebookAppID dan FacebookDisplayName, dan entri Jenis URL untuk fb{app-id}.

Jika Anda menerima hasil yang tidak diharapkan saat membuat permintaan API Graf, aktifkan mode debug dengan cara menambahkan kode ini sebelum permintaan:

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

Gunakan FBSDKLoggingBehaviorGraphAPIDebugWarning jika Anda ingin menekan pesan level info dan hanya menyimpan peringatan.

Tindakan mengaktifkan perilaku pencatatan ini akan menambahkan parameter debug ke semua permintaan API Graf dan menghasilkan masalah yang muncul di konsol.

Anda dapat membaca selengkapnya tentang Mode Debug API Graf di sini.

SDK akan melaporkan pembatalan jika pengguna secara eksplisit mengetuk tombol batalkan di dialog masuk, atau jika mereka secara manual beralih kembali ke aplikasi Anda (dikenal sebagai pembatalan implisit). Anda harus memastikan bahwa Anda tidak memulai alur masuk sebagai bagian dari lifecycle delegasi aplikasi Anda (seperti memulai masuk di dalam application:openURL:sourceApplication:annotation:) karena tindakan tersebut akan menyerupai pembatalan implisit. Jika memang harus, kirimkan inisiasi masuk nanti ke antrean utama agar lifecycle delegasi aplikasi selesai terlebih dahulu.

  • SDK Facebook mencakup kode untuk mengakses Pengidentifikasi Iklan Apple (IDFA), namun kode tersebut hanya dieksekusi dalam situasi tertentu.
  • SDK Facebook untuk iOS hanya mengakses IDFA dalam skenario berikut: 1) jika aplikasi Anda menyajikan iklan di dalam aplikasi melalui Audience Network Facebook, atau 2) jika aplikasi Anda mencatat pemasangan aplikasi atau Peristiwa Aplikasi seluler lainnya untuk mengatribusikan peristiwa tersebut ke kampanye iklan Anda.
  • Jika Anda tidak melakukan pencatatan Peristiwa Aplikasi (melalui kelas FBSDKAppEvents), maka SDK Facebook tidak mengakses IDFA. Selain itu, SDK Facebook tidak memerlukan AdSupport.framework untuk disertakan di dalamnya.
  • Jika Anda ingin melacak Peristiwa Aplikasi tanpa mengumpulkan IDFA, maka Anda dapat menonaktifkan pengumpulan IDFA di dalam dasbor aplikasi Anda di bagian pengaturan lanjutan.

Dialog Bagikan memberi tahu metode sharer:didCompleteWithResults: dan sharerDidCancel: delegasinya atas tindakan pengguna.

  • sharer:didCompleteWithResults: ketika pengguna berhasil membagikan. Selain itu, juga akan ada kunci postId di kamus results jika pengguna memberikan izin publish_actions pada aplikasi. Jika pengguna itu tidak masuk dengan Facebook Login, maka metode ini juga akan dipanggil jika pengguna mengeklik Cancel.
  • sharerDidCancel: ketika seseorang mengeklik tombol X dialog Bagikan; atau jika mereka sudah masuk dengan Facebook Login dan mengeklik Cancel.

Jika Anda menerima hasil yang tidak diharapkan saat membuat permintaan, nyalakan debug untuk FBSDKGraphRequests. Tambahkan kode ini sebelum permintaan mana saja:

[FBSDKSettings enableLoggingBehavior:FBSDKLoggingBehaviorNetworkRequests];

Anda akan dapat melakukan debug terhadap berbagai masalah dengan melihat permintaan dan tanggapan dari server secara langsung.

Pertimbangkan untuk melihat konstanta FBSDKLoggingBehavior* lainnya seperti yang dijelaskan dalam FBSDKSettings.h untuk hal-hal lain yang dapat Anda catat.