关于iOS 11 beta中的"SLComposeViewController"

huj*_*jie 16 social-media ios slcomposeviewcontroller ios11

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

小智 19

我在iOS 11中遇到了关于SLComposer的问题.但我刚刚删除了检查的行,显然自己的SDK在内部为我提供了有效的问题.

删除此行适用于任何SLServiceType:

if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
Run Code Online (Sandbox Code Playgroud)

所以,发展你的逻辑.就我而言:

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];
Run Code Online (Sandbox Code Playgroud)

我希望我有所帮助!


小智 12

iOS 11通过"设置应用"删除了对第三方帐户(如Facebook和Twitter)的访问权限.我目前正在努力做同样的事情.

您现在必须将功能与来自第三方的SDK集成.Twitter在此处有一个迁移页面,介绍了要采取的步骤: -

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

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

没有更容易开箱即用的社交分享:-(

  • 就像以前一样,SLComposeViewController对我来说很好.看看马修斯发布的答案. (2认同)

小智 6

对于iOS 11这一行:

 ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) 
Run Code Online (Sandbox Code Playgroud)

总是回来 NO

如果用户安装了Facebook应用程序,我将其替换为:

static NSString *const canOpenFacebookURL = @"fbauth2";
Run Code Online (Sandbox Code Playgroud)

+将它添加到LSApplicationQueriesSchemesplist中

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

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

像往常一样,马修斯多明戈斯如何描述.但至少你知道用户已经安装了facebook app.