我正在使用Xcode 7.3.1(Swift)并使用最新的 FB iOS SDK v4.15.1
的修改
同样的情况也发生在
FB iOS SDK v4.14.0
编辑
我在iOS 10设备中遇到一个奇怪的问题,每当我在我的应用程序中登录facebook时,当Facebook关闭的回叫返回时,它只是崩溃应用程序。
登录方案如下: -
BIT CODE - ON
BIT CODE - OFF
所有3个案件都正常运作。
只有问题在于 TestFlight 。休息所有其他分发方式在FB登录中正常工作。我将很快发布到Facebook开发者支持页面。
以下是来自TestFlight的完整崩溃日志报告。
https://www.dropbox.com/sh/1q19939akqmgoa9/AADpW4OGoumGrMO4iYO5cw27a?dl=0
您可以从Dropbox下载这两个文件,然后右键单击 - 显示包内容,导航到日志文件夹,您将在其中找到 .crash 文件
Dropbox链接中还有 crashlytics .txt文件
以下是我的崩溃报告的快速预览
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Triggered by Thread: 0
Thread 0 name:
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x0000000188ff6014 __pthread_kill + 8
1 libsystem_pthread.dylib 0x00000001890bd460 pthread_kill + 112 (pthread.c:1366)
2 libsystem_c.dylib 0x0000000188f6a490 __abort + 144 (abort.c:128)
3 libsystem_c.dylib 0x0000000188f6a400 abort + 152 (abort.c:99)
4 libswiftCore.dylib 0x000000010097c06c swift::fatalError(char const*, ...) + 52 (__hidden#8337_:107)
5 libswiftCore.dylib 0x0000000100961b5c swift::swift_dynamicCastFailure(void const*, char const*, void const*, char const*, char const*) + 72 (__hidden#7547_:398)
6 libswiftCore.dylib 0x0000000100961bec swift::swift_dynamicCastFailure(swift::Metadata const*, swift::Metadata const*, char const*) + 144 (__hidden#7547_:413)
7 libswiftCore.dylib 0x000000010098adbc swift_dynamicCastObjCClassUnconditional + 68 (__hidden#9865_:1000)
8 Thought 0x00000001001e6148 0x1000b8000 + 1237320
9 Thought 0x00000001001b6218 0x1000b8000 + 1040920
10 Thought 0x00000001001f3918 0x1000b8000 + 1292568
11 Thought 0x00000001001f3b44 0x1000b8000 + 1293124
12 Thought 0x00000001001f3c04 0x1000b8000 + 1293316
13 Thought 0x00000001001f3d14 0x1000b8000 + 1293588
14 FBSDKCoreKit 0x00000001004f0108 0x1004c8000 + 164104
15 FBSDKCoreKit 0x00000001004edcec 0x1004c8000 + 154860
16 FBSDKCoreKit 0x00000001004edb38 0x1004c8000 + 154424
17 FBSDKCoreKit 0x00000001004ed5e0 0x1004c8000 + 153056
18 CoreFoundation 0x0000000189f151a4 __53-[__NSArrayM enumerateObjectsWithOptions:usingBlock:]_block_invoke + 132 (NSArray.m:434)
19 CoreFoundation 0x0000000189f15010 -[__NSArrayM enumerateObjectsWithOptions:usingBlock:] + 168 (NSArray.m:451)
20 FBSDKCoreKit 0x00000001004ed374 0x1004c8000 + 152436
21 FBSDKCoreKit 0x00000001004ec830 0x1004c8000 + 149552
22 FBSDKCoreKit 0x00000001004ea9fc 0x1004c8000 + 141820
23 FBSDKCoreKit 0x0000000100505368 0x1004c8000 + 250728
24 FBSDKCoreKit 0x00000001005052c0 0x1004c8000 + 250560
25 FBSDKCoreKit 0x0000000100505734 0x1004c8000 + 251700
26 CFNetwork 0x000000018a86576c __65-[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:]_block_invoke + 80 (NSURLConnectionInternal.mm:124)
27 CFNetwork 0x000000018a8656fc -[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:] + 200 (NSURLConnectionInternal.mm:121)
28 CFNetwork 0x000000018a865870 -[NSURLConnectionInternal _withActiveConnectionAndDelegate:] + 56 (NSURLConnectionInternal.mm:139)
29 CFNetwork 0x000000018a78c788 ___ZN27URLConnectionClient_Classic26_delegate_didFinishLoadingEU13block_pointerFvvE_block_invoke + 96 (URLConnectionClient.cpp:2135)
30 CFNetwork 0x000000018a78a678 ___ZN27URLConnectionClient_Classic18_withDelegateAsyncEPKcU13block_pointerFvP16_CFURLConnectionPK33CFURLConnectionClientCurrent_VMaxE_block_invoke_2 + 108 (URLConnectionClient.cpp:1899)
31 libdispatch.dylib 0x0000000188eb11c0 _dispatch_client_callout + 16 (object.m:455)
32 libdispatch.dylib 0x0000000188ebcb24 _dispatch_block_invoke_direct + 376 (queue.c:2872)
33 CFNetwork 0x000000018a842e98 RunloopBlockContext::_invoke_block(void const*, void*) + 36 (CoreSchedulingSet.mm:361)
34 CoreFoundation 0x0000000189f019a8 CFArrayApplyFunction + 68 (CFArray.c:650)
35 CFNetwork 0x000000018a842d7c RunloopBlockContext::perform() + 136 (CoreSchedulingSet.mm:315)
36 CFNetwork 0x000000018a8440a4 MultiplexerSource::perform() + 312 (CFNRunLoopMultiplexer.c:282)
37 CFNetwork 0x000000018a843e10 MultiplexerSource::_perform(void*) + 64 (CFNRunLoopMultiplexer.c:47)
38 CoreFoundation 0x0000000189fd6278 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24 (CFRunLoop.c:1943)
39 CoreFoundation 0x0000000189fd5bc0 __CFRunLoopDoSources0 + 524 (CFRunLoop.c:1989)
40 CoreFoundation 0x0000000189fd37c0 __CFRunLoopRun + 804 (CFRunLoop.c:2821)
41 CoreFoundation 0x0000000189f02048 CFRunLoopRunSpecific + 444 (CFRunLoop.c:3113)
42 GraphicsServices 0x000000018b985198 GSEventRunModal + 180 (GSEvent.c:2245)
43 UIKit 0x000000018fedb818 -[UIApplication _run] + 684 (UIApplication.m:2649)
44 UIKit 0x000000018fed6550 UIApplicationMain + 208 (UIApplication.m:4091)
45 Thought 0x000000010018e230 0x1000b8000 + 877104
46 libdyld.dylib 0x0000000188ee45b8 start + 4
Thread 1:
0 libsystem_pthread.dylib 0x00000001890b8db0 start_wqthread + 0
Thread 2:
0 libsystem_kernel.dylib 0x0000000188ff6a88 __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x00000001890b936c _pthread_wqthread + 1452 (pthread.c:2205)
2 libsystem_pthread.dylib 0x00000001890b8db4 start_wqthread + 4
Thread 3:
0 libsystem_pthread.dylib 0x00000001890b8db0 start_wqthread + 0
Thread 4 name:
Thread 4:
0 libsystem_kernel.dylib 0x0000000188fd816c mach_msg_trap + 8
1 libsystem_kernel.dylib 0x0000000188fd7fdc mach_msg + 72 (mach_msg.c:103)
2 CoreFoundation 0x0000000189fd5cec __CFRunLoopServiceMachPort + 192 (CFRunLoop.c:2527)
3 CoreFoundation 0x0000000189fd3908 __CFRunLoopRun + 1132 (CFRunLoop.c:2870)
4 CoreFoundation 0x0000000189f02048 CFRunLoopRunSpecific + 444 (CFRunLoop.c:3113)
5 Foundation 0x000000018aa10b1c -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 304 (NSRunLoop.m:367)
6 Foundation 0x000000018aa3160c -[NSRunLoop(NSRunLoop) runUntilDate:] + 96 (NSRunLoop.m:411)
7 UIKit 0x0000000190850e6c -[UIEventFetcher threadMain] + 136 (UIEventFetcher.m:279)
8 Foundation 0x000000018ab0e50c __NSThread__start__ + 1024 (NSThread.m:1163)
9 libsystem_pthread.dylib 0x00000001890bb860 _pthread_body + 240 (pthread.c:697)
10 libsystem_pthread.dylib 0x00000001890bb770 _pthread_start + 284 (pthread.c:744)
11 libsystem_pthread.dylib 0x00000001890b8dbc thread_start + 4
Thread 5 name:
Thread 5:
0 libsystem_kernel.dylib 0x0000000188fd816c mach_msg_trap + 8
1 libsystem_kernel.dylib 0x0000000188fd7fdc mach_msg + 72 (mach_msg.c:103)
2 Thought 0x0000000100218538 0x1000b8000 + 1443128
3 libsystem_pthread.dylib 0x00000001890bb860 _pthread_body + 240 (pthread.c:697)
4 libsystem_pthread.dylib 0x00000001890bb770 _pthread_start + 284 (pthread.c:744)
5 libsystem_pthread.dylib 0x00000001890b8dbc thread_start + 4
Thread 6:
0 libsystem_pthread.dylib 0x00000001890b8db0 start_wqthread + 0
Thread 7 name:
Thread 7:
0 libsystem_kernel.dylib 0x0000000188fd816c mach_msg_trap + 8
1 libsystem_kernel.dylib 0x0000000188fd7fdc mach_msg + 72 (mach_msg.c:103)
2 CoreFoundation 0x0000000189fd5cec __CFRunLoopServiceMachPort + 192 (CFRunLoop.c:2527)
3 CoreFoundation 0x0000000189fd3908 __CFRunLoopRun + 1132 (CFRunLoop.c:2870)
4 CoreFoundation 0x0000000189f02048 CFRunLoopRunSpecific + 444 (CFRunLoop.c:3113)
5 CFNetwork 0x000000018a6efcec +[NSURLConnection(Loader) _resourceLoadLoop:] + 336 (NSURLConnection.mm:364)
6 Foundation 0x000000018ab0e50c __NSThread__start__ + 1024 (NSThread.m:1163)
7 libsystem_pthread.dylib 0x00000001890bb860 _pthread_body + 240 (pthread.c:697)
8 libsystem_pthread.dylib 0x00000001890bb770 _pthread_start + 284 (pthread.c:744)
9 libsystem_pthread.dylib 0x00000001890b8dbc thread_start + 4
Thread 8:
0 libsystem_pthread.dylib 0x00000001890b8db0 start_wqthread + 0
Thread 9:
0 libsystem_kernel.dylib 0x0000000188ff5e1c __psynch_cvwait + 8
1 libsystem_pthread.dylib 0x00000001890ba9d0 _pthread_cond_wait + 640 (pthread_cond.c:536)
2 libc++.1.dylib 0x00000001889e53ec std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 56 (condition_variable.cpp:44)
3 JavaScriptCore 0x000000018e7aa548 void std::__1::condition_variable_any::wait<std::__1::unique_lock<bmalloc::Mutex> >(std::__1::unique_lock<bmalloc::Mutex>&) + 112 (condition_variable:202)
4 JavaScriptCore 0x000000018e7aa4bc bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::threadRunLoop() + 168 (condition_variable:211)
5 JavaScriptCore 0x000000018e7aa39c bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::threadEntryPoint(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*) + 12 (AsyncTask.h:106)
6 JavaScriptCore 0x000000018e7aa64c void* std::__1::__thread_proxy<std::__1::tuple<void (*)(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*), bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*> >(void*) + 92 (__functional_base:416)
7 libsystem_pthread.dylib 0x00000001890bb860 _pthread_body + 240 (pthread.c:697)
8 libsystem_pthread.dylib 0x00000001890bb770 _pthread_start + 284 (pthread.c:744)
9 libsystem_pthread.dylib 0x00000001890b8dbc thread_start + 4
Thread 10:
0 libsystem_kernel.dylib 0x0000000188ff6a88 __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x00000001890b936c _pthread_wqthread + 1452 (pthread.c:2205)
2 libsystem_pthread.dylib 0x00000001890b8db4 start_wqthread + 4
这是Facebook登录的代码。
我的助手课程
class FBManager: NSObject {
class func fbInfo(completion:((response: AnyObject?, error: NSError?) -> Void)?) {
let fbLogin = FBSDKLoginManager();
fbLogin.logOut()
fbLogin.logInWithReadPermissions(permissions, fromViewController: nil) { (result: FBSDKLoginManagerLoginResult!, error: NSError?) -> Void in
if (error != nil) {
if let block = completion {
block(response: nil, error: error)
}
} else if result.isCancelled {
let err = NSError(domain: "502", code: 501, userInfo: NSDictionary(object: "message", forKey: "User Cancelled!") as [NSObject : AnyObject])
// call your own block code.
if let block = completion {
DDLogVerbose("error \(err)")
block(response: nil, error: err)
}
} else {
if result.grantedPermissions.contains("email") {
DDLogVerbose("granted...")
FBManager.userInfo({ (response, error) -> Void in
FBManager.userInfo(completion)
})
}
}
}
}
class func userInfo(completion:((response: AnyObject?, error: NSError?) -> Void)?) {
// got login....
let param = NSMutableDictionary()
param.setObject(loginParams, forKey: "fields")
let fbRequest = FBSDKGraphRequest(graphPath:"me", parameters: param as [NSObject : AnyObject]);
fbRequest.startWithCompletionHandler { (connection : FBSDKGraphRequestConnection!, result : AnyObject!, error : NSError!) -> Void in
// check the email existence...
// call your own block code.
if let block = completion {
DDLogVerbose("FB result \(result)")
block(response: result, error: error)
}
}
}
}
我的调用代码来自 LoginViewController
func login() {
weak var weakSelf = self
FBManager.fbInfo { (response, error) -> Void in
if (response != nil){
DDLogVerbose("FB Info \(response)")
if error == nil {
if response != nil {
let dict:NSMutableDictionary = response as! NSMutableDictionary
DDLogVerbose("User facebook Information : \(dict)")
} else {
CommonClass.alertTitle("Facebook", messsage: facebookdatafetchfailure)
return
}
}
else{
self.makeToast("\(error?.localizedDescription)")
}
}
}
}
修改
在Facebook开发者支持上也发布了这个bug,并在上面提到的Dropbox链接中添加了crashlytics文本文件
https://developers.facebook.com/bugs/1234180366602093/