一、问题描述
集成了友盟分享功能,新浪微博的分享方式是:手机上安装了微博APP则以SSO方式打开微博APP进行分享,未安装的以Auth方式跳转至微博网页进行分享。我在初始化的微博平台的时候将redirectURL填写nil,如下
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:Sina_AppKey appSecret:Sina_AppSecret redirectURL:nil];
然后在没有安装新浪微博APP的手机上分享, 点击分享面板上的微博图标然后应用程序崩溃了😖,报错:
WebKit discarded an uncaught exception in the webView:decidePolicyForNavigationAction:request:frame:decisionListener: delegate:-[__NSCFString hasPrefix:]: nil argument
百度,谷歌这个问题,并没有找到解决方法,但是看到外国朋友发问关于分享至Instagram失败导致了相同的报错,于是得到灵感
二、问题解决
自己之前为5、6个APP集成过分享功能,其在各个开发平台上的应用接入是我申请的,也遇到过使用Auth方式分享失败的情况,是回调地址错误导致的,所以我想起了我这次申请的时候没有填写回调地址。
导致崩溃的原因是:使用友盟分享初始化微博平台的时候redirectURL填写nil。
导致分享失败的原因是回调地址在APP上和开放平台上不一致。
解决方法:填写且与开放平台一致,不能为空,这也是新浪分享功能所要求的。