2010-12-29 30 views
5

Tôi muốn đóng gói tất cả các tương tác trên Facebook của mình trong một lớp FacebookFacade để giữ cho mọi thứ sạch sẽ và gọn gàng. Tôi có một phiên bản của lớp Facebook SDK iOS trong số FacebookFacade của mình.FBRequestDelegate chỉ hoạt động trên AppDelegate?

Vấn đề của tôi là khi tôi thực hiện một cuộc gọi API Graph trong mặt tiền, chẳng hạn như:

[self.facebook requestWithGraphPath:@"me" andDelegate:self]; 

Phương pháp duy nhất của FBRequestDelegate đó được gọi là requestLoading: và không có gì khác. Tôi đã thử đặt mã tương tự ở những nơi khác, giống như trong bộ điều khiển và các mô hình khác, và có quá không tất cả các phương pháp FBRequestDelegate được gọi, chỉ requestLoading:.

Thực tế, cách duy nhất tôi có thể nhận được các phương pháp FBRequestDelegate khác được gọi là đặt tất cả logic Facebook của mình vào AppDelegate và làm cho AppDelegate của mình là FBRequestDelegate.

Tại sao lại xảy ra trường hợp này? Am i thiếu cái gì ở đây? Tôi chắc chắn không muốn sử dụng AppDelegate làm FBRequestDelegate vì tôi không muốn nhầm lẫn mục đích của AppDelegate.

Cảm ơn.

Trả lời

1

Đảm bảo rằng đối tượng ban đầu không được nhả ra trong khi facebook đang hoạt động ẩn. Nếu có, khi facebook đi gọi cho đại biểu và tìm thấy nó không hoặc bắt lỗi, nó sẽ không gọi lại.

2

Bạn có thể chia sẻ ứng dụng của bạnDelegate với các bộ điều khiển khác trong ứng dụng của bạn.

tôi giải quyết vấn đề này bằng cách nhập AppDelgate của tôi (mà instantiates và phân bổ đối tượng facebook trong nó) vào giao diện của tôi, tức là

#import "MyAppDelegate.h" 

interface MyViewController: UIViewController <FBRequestDelegate, FBDialogDelegate, FBSessionDelegate> 

Bằng cách này, tôi có thể tạo ra một con trỏ để trỏ đến các đối tượng delegate và sử dụng phương pháp facebook ở nơi tôi cần.

-(void) someFunction{ 
     MyAppDelgate *sharedAppDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate] 
     [sharedAppDelegate.facebook dialog:@"feed" andDelegate:self]; 
} 

Hãy cho tôi biết nếu điều này không làm việc

+0

Tôi đã thử điều này, các đại biểu trong bộ điều khiển chế độ xem của tôi vẫn không được gọi! Làm thế nào chính xác bạn đã thiết lập facebook của bạn trong đại biểu để bạn có thể sử dụng nó trong một bộ điều khiển xem? –

7

Đã cùng một vấn đề chiều nay. Cuối cùng đã giải quyết nó: Bạn phải làm cho FBRequest của bạn từ chủ đề chính. Nếu không thì NSURLConnect cơ bản (trong đối tượng facebook) không bao giờ bắt đầu.

+0

Ôi trời ơi, điều này vừa cứu tôi. Tôi đã dành quá nhiều thời gian để gỡ lỗi yêu cầu facebook này. Tại sao điều này không được đề cập trong tài liệu của họ? –

+0

Tôi nghĩ rằng nó liên quan nhiều hơn đến các vòng lặp NSURLConnection và Run. Nhưng họ nên tư vấn để thực hiện các yêu cầu đồ thị trên chủ đề chính. – ikarius

Các vấn đề liên quan