美文网首页
未安装推特的Twitter分享小结

未安装推特的Twitter分享小结

作者: 叫我李五 | 来源:发表于2018-11-23 17:55 被阅读53次

    Before

    我们的App有面向海外用户作Facebook、Twitter分享内容的需求,而使用的是Facebook、Twitter的自家SDK。

    Confuse

    分享到Facebook的话,项目配置好就可以直接调起SDK使用了,未安装或安装客户端都能跳转。Twitter的话,对于已安装Twitter的设备可以跳转打开,未安装的设备可以调起iPhone内置的Twitter登录分享,但是这是仅限于海外的iPhone设备,对于国行手机却不行(-.-)。

    Solve

    看了Android Twitter的SDK的话,其模块里是作了Intent跳转处理的,即安装Twitter时正常跳转,未安装时跳转到浏览器分享,而iOS却没这样。Google了下,也没怎么找到解决方法,但细看了Twitter Developer文档,看到了Web端的分享是使用Web Intent作分享的,那不如就曲线救国解决一下吧。参考:Twitter for Websites

    // 判断是否已安装了Twitter客户端
    [SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]
    

    已安装Twitter客户端时,使用TWTRComposer类作内容分享。

    未安装Twitter客户端时,通过Web Intent跳转,形如:https://twitter.com/intent/tweet

    也别忘了需要对生成URL转码,参考stackoverflow:sharing-a-urlurl-encode

    最后通过-canOpenURL跳转Safari打开分享。
    - (nullable NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)enc

    // Example
    NSMutableArray *parameter = [NSMutableArray array];
    if (![description isEqualToString:@""]) {
        [parameter addObject:[NSString stringWithFormat:@"text=%@", description]];
    }
    if (![webURL isEqualToString:@""]) {
        [parameter addObject:[NSString stringWithFormat:@"url=%@", webURL]];
    }
    NSString *shareWebLink = [[NSString stringWithFormat:@"https://twitter.com/intent/tweet?%@",
    [parameter componentsJoinedByString:@"&"]]
    stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:shareWebLink]]) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:shareWebLink]];
    }
    

    相关文章

      网友评论

          本文标题:未安装推特的Twitter分享小结

          本文链接:https://www.haomeiwen.com/subject/mpxyoftx.html