2017-07-03 72 views
9

在我的项目中,我总是使用SLComposeViewController与第三方应用程序共享内容,但是现在,当我将iPhone更新到iOS 11测试版时,它不再工作。而SLComposeViewControllerCompletionHandler总是回调SLComposeViewControllerResultCancelled。 为什么?关于iOS 11 beta中的“SLComposeViewController”

回答

9

iOS 11通过设置应用删除了第三方帐户(如Facebook和Twitter)的访问权限。我目前正在同样的事情上挣扎。

您现在必须将功能与第三方的SDK集成。推特在这里有一个迁移页关于要采取的步骤: -

https://dev.twitter.com/twitterkit/ios/migrate-social-framework

我还没有找到有关如何迁移的其他社交网络的具体说明,但可以肯定地说,将要求其第三方SDK。

没有更容易出的现成的社交共享:-(

+1

SLComposeViewController对我来说工作得很好,就像以前一样。查看Matheus发布的答案。 – Leon

10

我在iOS中11.关于SLComposer问题,但我只是删除了检查线,显然在自己的SDK使得validacoes 。我在内部

删除此行提供任何SLServiceType

if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { 

所以,发展你的逻辑在我的情况:

SLComposeViewController *mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 

     [mySLComposerSheet setInitialText:@"#myInitialTextIsHere"]; 
     [mySLComposerSheet addURL:[NSURL URLWithString:strURL]]; 

     [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) { 

      switch (result) { 
       case SLComposeViewControllerResultCancelled: 
        NSLog(@"Post Canceled"); 
        break; 
       case SLComposeViewControllerResultDone: 
        NSLog(@"Post Sucessful"); 
        break; 

       default: 
        break; 
      } 
     }]; 

     [self presentViewController:mySLComposerSheet animated:YES completion:nil]; 

我希望我能帮上忙!

+0

这是有效的 - 如果用户没有登录,作曲家仍然会弹出,但随后出现“您需要登录”的提醒。 – davedavedave

+0

在将部署目标设置为iOS11时,此解决方案是否适用于(iPhone)模拟器中的人员?它不会崩溃或任何东西,但我没有得到我得到的IOS10和以下的动作表,并在控制台它说'ViewDidAppear,但远程VC失败,解雇'和'表未呈现,调用过早完成? –

+0

仍在使用我的twitter,如下所示。在iPad Air和iOS 11.2.2上运行。 –

2

对于iOS 11这一行:

([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) 

总是返回NO

我检查更换,如果用户已经安装了Facebook应用程序:

static NSString *const canOpenFacebookURL = @"fbauth2"; 

+将它添加到LSApplicationQueriesSchemes in plist

-(BOOL)isFacebookAppInstalled { 
    NSURLComponents *components = [[NSURLComponents alloc] init]; 
    components.scheme = canOpenFacebookURL; 
    components.path = @"/"; 
    return [[UIApplication sharedApplication] 
      canOpenURL:components.URL]; 
} 

然后只是拨打电话SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];

像往常一样,马修斯多明戈斯如何描述相同。但有了这个检查,至少你知道这个用户已经安装了Facebook应用程序。

相关问题