【问题标题】:Xcode Swift 4 Facebook & Twitter sharing no longer working?Xcode Swift 4 Facebook 和 Twitter 共享不再有效?
【发布时间】:2018-04-06 03:43:53
【问题描述】:

我在我的应用程序中使用 Facebook 和 Twitter 共享,在将 xCode 升级到 9.0.1 Swift 4 后,两者都不起作用,该方法说我的设备上没有 FB 或 Tw 帐户,但它们已经在那里并且是使用 Swift 3 工作正常。

日志:

2017-10-25 09:53:41.619676+0300 jack[2428:926750] [core] isAvailableForServiceType: for com.apple.social.facebook returning NO

这是代码:

if SLComposeViewController.isAvailable(forServiceType: SLServiceTypeFacebook)
            {

                let shareText = "xxx"

                let facebookShare:SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeFacebook)
                    //facebookShare.add(imageView.image!)
                    facebookShare.add(URL(string:self.track.share_url))
                    facebookShare.setInitialText(shareText)

                self.present(facebookShare, animated: true, completion: nil)

            }

if SLComposeViewController.isAvailable(forServiceType: SLServiceTypeTwitter)
            {
                let shareText = "xxx"
                let twitterSheet:SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeTwitter)
                    twitterSheet.add(URL(string : self.track.share_url))
                    twitterSheet.setInitialText( shareText )

                self.present(twitterSheet, animated: true, completion: nil)

            }

【问题讨论】:

    标签: ios xcode facebook twitter


    【解决方案1】:

    这些功能已在 iOS 11 中被禁用。您不应再在 iOS 设置应用中看到 Facebook NOR 推特子菜单。

    我建议您使用常规分享选项或 fb/twitter API。

    文森特

    【讨论】:

      【解决方案2】:

      不再检查它是否可用; isAvailable(forServiceType:),直接运行即可。我自己也遇到过类似的问题

      【讨论】:

        【解决方案3】:

        你必须使用Facebook的SDK分享:FBSDKShareKit

        您可以使用可可豆荚安装它:

        pod 'FBSDKShareKit'
        

        例子

        #import <FBSDKShareKit/FBSDKShareKit.h>
        
        -(IBAction)sharingOnFacebook:(id)sender {
             FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
             content.contentURL = [NSURL URLWithString:@"https://myPageWeb/"];
        
            [FBSDKShareDialog showFromViewController:self withContent:content delegate:nil];
        }
        

        对于 Twitter,步骤类似:TwitterKit

        pod 'TwitterKit'
        

        例子:

        -(IBAction)sharingOnTwitter:(id)sender {
            TWTRComposer *composer = [[TWTRComposer alloc] init];
            [composer setURL:[NSURL URLWithString:@"https://https://myPageWeb/"]];
            [composer showFromViewController:self completion:^(TWTRComposerResult result) {
                /*if (result == TWTRComposerResultCancelled) {
                    NSLog(@"Tweet composition cancelled");
                } else {
                    NSLog(@"Sending Tweet!");
                }*/
            }];
        }
        

        注意:请阅读 Facebook 和 Twitter 文档,因为您之前需要为您的应用执行一些步骤。注册应用,获取AppID...

        Facebook iOS Developers

        Twitter iOS Developers page

        【讨论】:

        • Swift 的代码在 Facebook 或 Twitter 的文档中
        • 嘿 Saul,抱歉,如果这是一个愚蠢的问题,但对我来说,SLComposeViewController 在我的 iOS 12 代码中运行良好,尽管 Xcode 通知我它已被弃用。即使使用不推荐使用的代码是不好的做法,我仍然可以使用 SLComposeViewController 发布我的应用程序吗?还是苹果会拒绝它?
        • 当然可以发布,苹果不应该因为这个原因拒绝应用。但在未来我会很高兴你更新你的代码:)
        • 谢谢你的回答扫罗
        • Twitter 将于 2018 年 10 月 31 日停止对 Twitter Kit 的支持。blog.twitter.com/developer/en_us/topics/tools/2018/…
        猜你喜欢
        • 1970-01-01
        • 2011-06-26
        • 2011-10-18
        • 1970-01-01
        • 1970-01-01
        • 2013-04-13
        • 2014-07-28
        • 1970-01-01
        • 2015-07-05
        相关资源
        最近更新 更多