关于「;SLComposeViewController“;在iOS 11beta中

关于「;SLComposeViewController“;在iOS 11beta中,ios,ios11,social-media,slcomposeviewcontroller,Ios,Ios11,Social Media,Slcomposeviewcontroller,在我的项目中,我总是使用SLComposeViewController与第三方应用程序共享内容,但现在,当我将iPhone更新到iOS 11 beta版时,这就不再有效了 SLComposeViewControllerCompletionHandler始终回调SLComposeViewControllerResultCancelled 这是为什么?iOS 11删除了通过设置应用程序访问第三方帐户(如Facebook和Twitter)的权限。我现在也在为同样的事情挣扎 现在必须将该功能与第三方的S

在我的项目中,我总是使用
SLComposeViewController
与第三方应用程序共享内容,但现在,当我将iPhone更新到iOS 11 beta版时,这就不再有效了

SLComposeViewControllerCompletionHandler
始终回调
SLComposeViewControllerResultCancelled


这是为什么?

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

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

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


没有更简单的开箱即用的社交共享:-(

我在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];
我希望我能帮上忙!

对于iOS 11这一行:

 ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) 
总是返回

我将其替换为“检查用户是否安装了Facebook应用程序”:

static NSString *const canOpenFacebookURL = @"fbauth2";
+将其添加到plist中的
LSApplicationQueriesSchemes

-(BOOL)isFacebookAppInstalled {
    NSURLComponents *components = [[NSURLComponents alloc] init];
    components.scheme = canOpenFacebookURL;
    components.path = @"/";
    return [[UIApplication sharedApplication]
            canOpenURL:components.URL];
}
然后只需调用
SLComposeViewController*composeVC=[SLComposeViewController composeviewcontrollerforservice类型:SLServiceTypeFacebook];


和往常一样,Matheus Domingos的描述也是如此。但通过这项检查,至少你知道用户已经安装了facebook应用程序。

SLComposeViewController对我来说工作正常,就像以前一样。请查看Matheus发布的答案。不幸的是,自给出此答案以来,Twitter已经停止了对Twitter工具包的支持,这意味着ns现在更难有一个与Twitter集成的简单最佳实践:。看起来Twitter的API端点现在是预期的替代方案:这很有效-如果用户未登录,编写器仍会弹出,但会在其上显示“您需要登录”警报。此解决方案是否适用于(iPhone)中的用户模拟器何时将部署目标设置为iOS11?它不会崩溃或发生任何事情,但我没有得到iOS10及以下版本的操作表,控制台上显示
viewdide,但远程VC失败,取消了
工作表,调用过早完成
?仍在为我使用twitter,如图所示在iPad Air和iOS 11.2.2上运行。@matheus这不是LinkedIn的工作,我知道还有其他的吗way@SatheeshkumarNaidu您用哪种方式?这是有效的,但是它是否“安全”呢?为什么SLServiceType常量被否决,但SLComposeViewController不推荐?为什么仍然有效