最近,当用户使用“立即购买”号召性用语点击某些广告时,我们遇到了崩溃问题。
致命异常:NSInvalidArgumentException 指定的URL具有不受支持的方案。仅支持HTTP和HTTPS URL。
堆栈跟踪
致命异常:NSInvalidArgumentException
0 CoreFoundation 0x183a661c0 __exceptionPreprocess
1 libobjc.A.dylib 0x1824a055c objc_exception_throw
2 CoreFoundation 0x183a66108 - [NSException initWithCoder:]
3 SafariServices 0x191d7020c - [SFSafariViewController initWithURL:enteringReaderIfAvailable:]
4 MyApp 0x100653064 + [FBAdSafariViewController presentSafariViewControllerWithURL:withRootViewController:withDelegate:] (FBAdSafariViewController.m:54) 5 MyApp 0x1005cd9bc - [FBAdCommandProcessor openLinkInApp:] (FBAdCommandProcessor.m:225)
6 MyApp 0x1005ccf04 - [FBAdCommandProcessor processCommand:withExtraData:adDataModel:completionHandler:] (FBAdCommandProcessor.m:128)
7 MyApp 0x1005d9310 - [FBANNativeAdAdapter onClickForViewController:withExtraData:](FBANNativeAdAdapter.m:118)
8 MyApp 0x1005ed058 __46- [FBDisplayAdController notifyAdViewPresented] _block_invoke.145(FBDisplayAdController.m:321)
9 MyApp 0x100646c30 - [FBNativeAdhandleTap:withEvent:](FBNativeAd.m:662)
当它尝试使用非http(s)方案的URL打开SFSafariViewController时,它显然会崩溃。
堆栈跟踪来自结构。我无法在调试器中捕获异常(因为它出现在特定广告上),因此我实际上无法知道有问题的广告的网址。
此外,URL不是FBNativeAd类的公共属性,因此使用无效的URL方案过滤掉FBNativeAds似乎不是解决方案。