IOS-FaceBook,Twitter分享的问题

重点内容
在做FaceBook和Twitter分享的时候,遇到了几个问题:
1.点击分享,程序闪退。
2.点击分享,没有任何反应,没有任何提示。

经过用国内手机和日本手机的测试,解决了遇到的以上两个问题。解析和总结如下:

SLComposeViewController *vc = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
    [vc setInitialText:body];
    [vc addURL:[NSURL URLWithString:url]];
    vc.completionHandler = ^(SLComposeViewControllerResult result){
        if (result ==SLComposeViewControllerResultDone) {
            .....
        }
    };
       [self.targetVC presentViewController:vc animated:YES completion:nil];

Bug1:出现闪退的情况,我遇到这种情况是用国内手机运行才会出现的,用日本的手机不会出现闪退的情况。
原因:我用国内手机进行debug,发现SLComposeViewController *vc,vc为nil;
用日本手机进行debug, 发现SLComposeViewController *vc,vc不为空;
结果:如果vc为nil则走到[self.targetVC presentViewController:vc animated:YES completion:nil];这就会crash程序就会崩掉。
解决方法:

if (vc) {
        [self.targetVC presentViewController:vc animated:YES completion:nil];
    }

加一个判断,这样保证了用国内手机运行程序,点击分享的时候不会崩溃。

Bug2:正常情况下,如果没有登录facebook或者twitter,或者没有安装等情况,点击分享会有提示,让用户自己配置。但是用国内的手机就是没反应,什么都不提示,用日本手机会提示,所以一开始我认为是国家的问题,不同国家手机不同。后来经过调查发现是因为,加了

if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
.....
SLComposeViewController *vc = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
    [vc setInitialText:body];
    [vc addURL:[NSURL URLWithString:url]];
    vc.completionHandler = ^(SLComposeViewControllerResult result){
        if (result ==SLComposeViewControllerResultDone) {
            .....
        }
    };
       [self.targetVC presentViewController:vc animated:YES completion:nil];
}

如果你的手机没有安装Facebook或者Twitter在外层加了[SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]这个 判断,就不会走判断里面的方法,也就不会有分享功能的一些提示。我把程序外层的这个判断删掉后,用日本手机运行,点击分享,能正确提示alert,提示没有facebook需要下载或者配置。但国内手机依然不行,没有任何提示和反应。

通过日本网站的一些资料最后总结了以下情况会弹出提示框:

*日本手机总结:*

日本手机FaceBook总结表:

手机设定是否登录是否下载FaceBook是否登录手机FaceBookisAvailableForServiceType的值是否能发布
NO不能
YES
YES不能
YES
YES
YES

【情况1会弹出一个alert,内容不在这里说,重点是能弹出提示】
【情况3和情况4也会弹出一个alert,内容不在这里说,重点是能弹出提示】

日本手机Twitter总结表:

手机设定是否登录是否下载Twitter是否登录手机TwitterisAvailableForServiceType的值是否能发布
NO不能
YES
YES不能
YES
YES
YES

【情况1会弹出一个alert,内容不在这里说,重点是能弹】
【情况3也会弹出一个alert,内容不在这里说,重点是能弹】

*国内手机总结:*

国内手机FaceBook总结表:

手机设定是否登录是否下载FaceBook是否登录手机FaceBookisAvailableForServiceType的值是否能发布
NO不能
YES
YES不能
YES
YES
YES

【情况1不会像日本手机那样弹出一个提示,现象没有反应】
【情况3不会像日本手机那样弹出一个提示,现象没有反应】

日本手机Twitter总结表:

手机设定是否登录是否下载Twitter是否登录手机TwitterisAvailableForServiceType的值是否能发布
NO不能
YES
YES不能
YES
YES
YES

【情况1没有反应,不弹出提示】
【情况3没有反应,不弹出提示】

参考:http://dev.classmethod.jp/smartphone/iphone/sl-compose-view-controller/

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值