上下文
我在我的应用程序中使用 FBSDKLoginButton。我在 Xcode 7.0 上,我的 iPhone 运行的是 iOS 9 beta 3。我按照 Facebook 显示的每个步骤(创建应用程序等)进行操作,并按照 https://developers.facebook.com/docs/facebook-login/ios#login-button 中的步骤添加按钮。 .
因为我在 iOS 9 上,所以我不得不对 info.plist 文件添加一些小改动以启用跨应用打开:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbauth</string>
</array>
并且由于 UIAppDelegate 中的 openURL 方法在 iOS9 上发生了变化,我更改了 Facebook 提供的 openURL 代码片段:
func application(application: UIApplication,
openURL url: NSURL,
sourceApplication: String?,
annotation: AnyObject?) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(
application,
openURL: url,
sourceApplication: sourceApplication,
annotation: annotation)
}
为此:
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool
{
return FBSDKApplicationDelegate.sharedInstance().application(
app,
openURL: url,
sourceApplication: options["UIApplicationOpenURLOptionsSourceApplicationKey"] as? String,
annotation: nil)
}
问题与疑问 所以我这里的问题是,即使一切正常(我的意思是整个登录按钮过程加上从 Facebook 图表获取用户数据)当我从模拟器或直接在我的 iPhone 上从 XCode 运行应用程序时,我做 当我对我的应用程序运行相同的进程时出现问题但这次是从存档安装的。我尝试过使用存档的 IPA 文件从 OTA 应用程序或与 Xcode 管理器一起安装的应用程序。在这两种情况下,当 Facebook 返回我的应用程序时,我都会发生崩溃。因为我不能使用 Xcode 的调试器,所以我只有一个崩溃日志。
Incident Identifier: 842E980C-8DE0-485F-8B3E-8CD889D34B3B
CrashReporter Key: 3e77866746471e437b9174c6082fc9136a18514f
Hardware Model: iPhone7,2
Process: Process Name [1086]
Path: /private/var/mobile/Containers/Bundle/Application/AA43C098-DFC0-483C-A073-C2401078E9FC/Some App.app/someapp
Identifier: fr.someapp.Some-App
Version: 1 (1.0)
Code Type: ARM-64 (Native)
Parent Process: launchd [1]
Date/Time: 2015-07-19 20:18:41.41 +0200
Launch Time: 2015-07-19 20:18:35.35 +0200
OS Version: iOS 9.0 (13A4293g)
Report Version: 105
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x000000010005f6e4
Triggered by Thread: 0
Filtered syslog:
None found
Global Trace Buffer (reverse chronological seconds):
0.228132 AppleJPEG 0x000000018dba5008 [0x13e871e00] Decoding completed without errors
0.250546 AppleJPEG 0x000000018dba31a0 [0x13e871e00] Options: 1080x1920 [FFFFFFFF,FFFFFFFF] 00025060
0.250629 AppleJPEG 0x000000018dba3058 [0x13e871e00] Decoding: C0 0x04380780 0x0044304A 0x22111100 0x00000000 175592
0.256474 AppleJPEG 0x000000018dba5008 [0x13e867200] Decoding completed without errors
0.261051 AppleJPEG 0x000000018dba31a0 [0x13e867200] Options: 750x1334 [FFFFFFFF,FFFFFFFF] 00025060
0.261101 AppleJPEG 0x000000018dba3058 [0x13e867200] Decoding: C0 0x02EE0536 0x002F304A 0x22111100 0x00000000 75882
0.262141 AppleJPEG 0x000000018dba5008 [0x13e85c600] Decoding completed without errors
0.272075 AppleJPEG 0x000000018dba31a0 [0x13e85c600] Options: 750x1334 [FFFFFFFF,FFFFFFFF] 00025060
0.272281 AppleJPEG 0x000000018dba3058 [0x13e85c600] Decoding: C0 0x02EE0536 0x002F304A 0x22111100 0x00000000 108826
0.273070 AppleJPEG 0x000000018dba5008 [0x13f04bc00] Decoding completed without errors
0.283798 AppleJPEG 0x000000018dba31a0 [0x13f04bc00] Options: 750x1334 [FFFFFFFF,FFFFFFFF] 00025060
0.283798 AppleJPEG 0x000000018dba3058 [0x13f04bc00] Decoding: C0 0x02EE0536 0x002F304A 0x22111100 0x00000000 72967
5.783070 CFNetwork 0x0000000186041d44 TCP Conn 0x13e5a1b90 SSL Handshake DONE
5.874750 CFNetwork 0x0000000186041c54 TCP Conn 0x13e5a1b90 starting SSL negotiation
5.875481 CFNetwork 0x00000001860e0e14 TCP Conn 0x13e5a1b90 complete. fd: 6, err: 0
5.876954 CFNetwork 0x00000001860e21e4 TCP Conn 0x13e5a1b90 event 1. err: 0
5.984181 CFNetwork 0x00000001860e22f8 TCP Conn 0x13e5a1b90 started
5.992333 CFNetwork 0x0000000186137140 Creating default cookie storage with default identifier
5.992333 CFNetwork 0x000000018613710c Faulting in CFHTTPCookieStorage singleton
5.992562 CFNetwork 0x0000000186188068 Faulting in NSHTTPCookieStorage singleton
6.189612 AppleJPEG 0x000000018dba234c [0x13e871e00] Created session
6.190797 AppleJPEG 0x000000018dba234c [0x13e867200] Created session
6.192109 AppleJPEG 0x000000018dba234c [0x13e85c600] Created session
6.197484 AppleJPEG 0x000000018dba234c [0x13f04bc00] Created session
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 Some app 0x000000010005f6e4 function signature specialization <Arg[0] = Owned To Guaranteed, Arg[1] = Owned To Guaranteed, Arg[2] = Owned To Guaranteed and Exploded, Arg[3] = Dead> of Some_App.AppDelegate.application (Some_App.AppDelegate)(ObjectiveC.UIApplication, openURL : ObjectiveC.NSURL, options : [Swift.String : Swift.AnyObject]) -> Swift.Bool (AppDelegate.swift:100)
1 Some_app 0x000000010005e7a8 @objc Some_App.AppDelegate.application (Some_app.AppDelegate)(ObjectiveC.UIApplication, openURL : ObjectiveC.NSURL, options : [Swift.String : Swift.AnyObject]) -> Swift.Bool (AppDelegate.swift:0)
2 UIKit 0x000000018c1ee664 0x18bf34000 + 2860644
3 UIKit 0x000000018c1ee168 0x18bf34000 + 2859368
4 UIKit 0x000000018c1f5c30 0x18bf34000 + 2890800
5 UIKit 0x000000018c1fb644 0x18bf34000 + 2913860
6 UIKit 0x000000018c1fa9dc 0x18bf34000 + 2910684
7 UIKit 0x000000018c1e6fd4 0x18bf34000 + 2830292
8 UIKit 0x000000018c1e6eb4 0x18bf34000 + 2830004
9 FrontBoardServices 0x00000001905ffbe0 0x1905d8000 + 162784
10 FrontBoardServices 0x00000001905fff60 0x1905d8000 + 163680
11 CoreFoundation 0x00000001868eb8b4 0x18680c000 + 915636
12 CoreFoundation 0x00000001868eb348 0x18680c000 + 914248
13 CoreFoundation 0x00000001868e901c 0x18680c000 + 905244
14 CoreFoundation 0x00000001868157fc 0x18680c000 + 38908
15 GraphicsServices 0x00000001918a316c 0x191898000 + 45420
16 UIKit 0x000000018bfae5e4 0x18bf34000 + 501220
17 Some app 0x000000010005eaa4 main (AppDelegate.swift:14)
18 libdyld.dylib 0x000000019bb128b4 0x19bb10000 + 10420
似乎当 Facebook 回调我的应用程序时,崩溃发生在我的 AppDelegate 的 openURL 方法中。如上所述,从 iOS9 开始,有两种方法可以对此方法进行编码,我都尝试过。如果我删除方法中的 Facebook 代码,那么我不会崩溃,但我不会登录。所以崩溃的线路是 Facebook 的线路。如果我的应用程序是从存档安装的,它只会崩溃。有任何想法吗?也许 Facebook 的 SDK 在这种特殊情况下存在错误?
最佳答案
我找到了我的答案
看起来这只是 Release模式 的问题。通过启用 Xcode 运行发布版本,我能够调试我的问题。这是由参数 sourceApplication 引起的,在 Release模式下显然需要 unwrapped 。不知道为什么,但至少我让它工作了。
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool
{
return FBSDKApplicationDelegate.sharedInstance().application(
app,
openURL: url,
sourceApplication: options["UIApplicationOpenURLOptionsSourceApplicationKey"] as! String,
annotation: nil)
}
关于ios - 在 openURL : Possible Facebook SDK bug in iOS 9 中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31504765/
为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar
当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少
这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下
我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
print"Enteryourpassword:"pass=STDIN.noecho(&:gets)puts"Yourpasswordis#{pass}!"输出:Enteryourpassword:input.rb:2:in`':undefinedmethod`noecho'for#>(NoMethodError) 最佳答案 一开始require'io/console'后来的Ruby1.9.3 关于ruby-为什么不能使用类IO的实例方法noecho?,我们在StackOverflow上
代码:threads=[]Thread.abort_on_exception=truebegin#throwexceptionsinthreadssowecanseethemthreadseputs"EXCEPTION:#{e.inspect}"puts"MESSAGE:#{e.message}"end崩溃:.rvm/gems/ruby-2.1.3@req/gems/activesupport-4.1.5/lib/active_support/dependencies.rb:478:inload_missing_constant':自动加载常量MyClass时检测到循环依赖稍加研究后,
当我将IO::popen与不存在的命令一起使用时,我在屏幕上打印了一条错误消息:irb>IO.popen"fakefake"#=>#irb>(irb):1:commandnotfound:fakefake有什么方法可以捕获此错误,以便我可以在脚本中进行检查? 最佳答案 是:升级到ruby1.9。如果您在1.9中运行它,则会引发Errno::ENOENT,您将能够拯救它。(编辑)这是在1.8中的一种hackish方式:error=IO.pipe$stderr.reopenerror[1]pipe=IO.popen'qwe'#
当我尝试使用“套接字”库中的方法“read_nonblock”时出现以下错误IO::EAGAINWaitReadable:Resourcetemporarilyunavailable-readwouldblock但是当我通过终端上的IRB尝试时它工作正常如何让它读取缓冲区? 最佳答案 IgetthefollowingerrorwhenItrytousethemethod"read_nonblock"fromthe"socket"library当缓冲区中的数据未准备好时,这是预期的行为。由于异常IO::EAGAINWaitReadab
任何人都可以解释为什么当对方法的调用看起来像这样时我可能会看到这个堆栈(由HTTParty::post请求引起):beginresponse=HTTParty::post(url,options)rescuelogger.warn("Couldnotpostto#{url}")rescueTimeout::Errorlogger.warn("Couldnotpostto#{url}:timeout")end堆栈:/usr/local/lib/ruby/1.8/timeout.rb:64:in`timeout'/usr/local/lib/ruby/1.8/net/protocol.rb