2016-04-16 16 views
7

Tôi đã tải xuống phiên bản 4.10 của FBSDK và tích hợp chúng vào ứng dụng của tôi bằng cách đặt chúng vào thư mục khung công tác. Nhận thấy rằng những điều này sẽ không được cập nhật theo thời gian, tôi đã xóa chúng hoàn toàn và cố gắng thêm chúng dưới dạng nhóm vào dự án của tôi. Các nhóm được cài đặt thành công, tôi đã nhập chúng một cách chính xác trong tệp tiêu đề bắc cầu của tôi và không có vấn đề nào khác. Các pod cập nhật phiên bản cài đặt 4.11 đã gây cho tôi một số nhức đầu.Ứng dụng gặp sự cố khi sử dụng Facebook Login SDK khi tôi truy cập vào màn hình chính

Tôi đang sử dụng FBSDKLoginKit để đăng nhập người dùng vào tài khoản của họ và truy xuất thông tin từ đó. Tôi có thể lấy lại một từ điển với thông tin người dùng tốt. Sau đó tôi chuyển thông tin này đến ViewController tiếp theo với một segue. Tại bất kỳ thời điểm nào sau này, nếu tôi nhấn nút Home trên iPhone hoặc trình mô phỏng, ứng dụng sẽ bị lỗi. Lỗi tôi nhận được là

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: 
attempt to insert nil object from objects[3]' 

Ngoại lệ này cũng xảy ra nếu tôi cho phép người dùng đăng nhập qua facebook, chuyển sang bộ điều khiển chế độ xem mới, thư giãn với bộ điều khiển xem trước đó, sau đó thử đăng nhập lại. Tôi đã cố gắng để đăng nhập người dùng ra một khi lấy thông tin thích hợp của họ trên màn hình thứ hai, nhưng vẫn còn lỗi.

Tôi đã thấy một câu hỏi tương tự được hỏi khi "giải pháp" là FBSDKLoginKit ghi từ điển đã truy lục vào một biến và nếu từ điển nó đã truy xuất lại có giá trị nil, nó sẽ ném lỗi này.

Tôi có thể làm gì để bắt được điều này trước khi điều đó xảy ra không? Có ai tìm thấy một công việc xung quanh?

Dưới đây là kết quả của tôi từ giả lập khi tôi nhấn nhà:

*** First throw call stack: 
(
0 CoreFoundation      0x0000000106f03d85 __exceptionPreprocess + 165 
1 libobjc.A.dylib      0x000000010643edeb objc_exception_throw + 48 
2 CoreFoundation      0x0000000106e0023e -[__NSPlaceholderDictionary initWithObjects:forKeys:count:] + 318 
3 CoreFoundation      0x0000000106e125bb +[NSDictionary dictionaryWithObjects:forKeys:count:] + 59 
4 APPNAME        0x0000000101607a1e -[FBSDKTimeSpentData instanceSuspend] + 622 
5 APPNAME        0x000000010160766b +[FBSDKTimeSpentData suspend] + 59 
6 APPNAME        0x00000001015b5986 -[FBSDKAppEvents applicationMovingFromActiveStateOrTerminating] + 262 
7 CoreFoundation      0x0000000106ecdc8c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12 
8 CoreFoundation      0x0000000106ecd9cb _CFXRegistrationPost + 427 
9 CoreFoundation      0x0000000106ecd732 ___CFXNotificationPost_block_invoke + 50 
10 CoreFoundation      0x0000000106f161e2 -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1986 
11 CoreFoundation      0x0000000106dc5679 _CFXNotificationPost + 633 
12 Foundation       0x000000010372ccd9 -[NSNotificationCenter postNotificationName:object:userInfo:] + 66 
13 UIKit        0x0000000104a685ad -[UIApplication _deactivateForReason:notify:] + 629 
14 UIKit        0x0000000104a6f1f1 __61-[UIApplication _sceneSettingsPreLifecycleEventDiffInspector]_block_invoke + 104 
15 FrontBoardServices     0x0000000108f88d6c __52-[FBSSettingsDiffInspector inspectDiff:withContext:]_block_invoke27 + 213 
16 Foundation       0x000000010377d5bb __NSIndexSetEnumerate + 1016 
17 BaseBoard       0x000000010901ba8c -[BSSettingsDiff inspectChangesWithBlock:] + 116 
18 FrontBoardServices     0x0000000108f83e4a -[FBSSettingsDiff inspectOtherChangesWithBlock:] + 92 
19 FrontBoardServices     0x0000000108f88b2f -[FBSSettingsDiffInspector inspectDiff:withContext:] + 317 
20 UIKit        0x0000000104a70880 __70-[UIApplication scene:didUpdateWithDiff:transitionContext:completion:]_block_invoke + 127 
21 UIKit        0x0000000104a7052d -[UIApplication scene:didUpdateWithDiff:transitionContext:completion:] + 843 
22 FrontBoardServices     0x0000000108f978c8 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 24 
23 FrontBoardServices     0x0000000108f97741 -[FBSSerialQueue _performNext] + 178 
24 FrontBoardServices     0x0000000108f97aca -[FBSSerialQueue _performNextFromRunLoopSource] + 45 
25 CoreFoundation      0x0000000106e29301 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 
26 CoreFoundation      0x0000000106e1f22c __CFRunLoopDoSources0 + 556 
27 CoreFoundation      0x0000000106e1e6e3 __CFRunLoopRun + 867 
28 CoreFoundation      0x0000000106e1e0f8 CFRunLoopRunSpecific + 488 
29 GraphicsServices     0x0000000108ae7ad2 GSEventRunModal + 161 
30 UIKit        0x0000000104a72f09 UIApplicationMain + 171 
31 APPNAME        0x00000001013a26d2 main + 114 
32 libdyld.dylib      0x0000000107b0d92d start + 1 
33 ???         0x0000000000000001 0x0 + 1 

) libC++ abi.dylib: chấm dứt với ngoại lệ còn tự do kiểu NSException

Chạy bước mã của tôi bước tôi thấy rằng lỗi xảy ra trong phương thức:

fbLoginManager.logInWithReadPermissions(permissionsNeeded, fromViewController: self) { (result, error) -> Void in 
//crashes before it enters this block  
//my code here 
} 

Nó bị treo trước khi tôi thậm chí có thể kiểm tra giá trị lỗi. Tôi sẽ cố gắng để kiểm tra các giá trị bằng cách bước vào phương pháp fbsdk và cập nhật

fbsdk browser permissions login

Ngay sau khi tôi nhấn OK trên màn hình này là lần thứ hai nó bị treo. Làm thế nào tôi có thể gỡ lỗi này? Tác vụ không có trong ứng dụng của tôi, trong trình duyệt của tôi nên tôi không chắc chắn nên đi đâu từ đây ..

+0

kiểm tra phản hồi và tạo từ điển của bạn, có vẻ như bạn đang cố chèn nil – HardikDG

Trả lời

3

Gần đây tôi đã gặp các sự cố này và tôi đã giải quyết vấn đề này bằng cách thêm đoạn mã này vào Appdelegate.m.

- (void)applicationDidBecomeActive:(UIApplication *)application {  

    [FBSDKAppEvents activateApp]; 
} 

Đối với phiên bản Swift 3:

func applicationDidBecomeActive(_ application: UIApplication) { 

    FBSDKAppEvents.activateApp() 
} 
+1

Giải pháp này phù hợp với tôi! Cảm ơn – havak5

0

Mặc dù đây không nhất thiết là giải pháp toàn diện, tôi đã sử dụng hết các phương pháp gỡ lỗi của mình. Tôi đã gỡ bỏ FBSDK từ podfile của tôi, chạy cập nhật pod để loại bỏ chúng khỏi dự án, và cài đặt lại phiên bản 4.10 FBSDK trong thư mục khung công tác của tôi. Tôi sẽ cập nhật câu hỏi này sau khi thử lại khi facebook phát hành phiên bản cập nhật của FBSDK.

+0

Bạn có quản lý để giải quyết theo cách đó không? – khose

1

Update để 4.12, nó sửa chữa vấn đề này theo ghi chú phát hành của họ:

https://developers.facebook.com/docs/ios/change-log-4.x/

Phần nói rằng:

Cố định

  • trường hợp cố định nơi AppEvents có thể sụp đổ vì thiếu phiên id.
  • Sửa lỗi trong một số trường hợp ngày hết hạn mã thông báo truy cập là ngày làm mới.
+0

Điều này thật tuyệt! Cảm ơn các cập nhật – havak5

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