在我的项目中,我经常使用 SLComposeViewController
来与第三方应用程序共享内容,但现在,当我将iPhone更新到iOS 11 beta时,这不再起作用。
SLComposeViewControllerCompletionHandler
总是回调 SLComposeViewControllerResultCancelled
。
为什么会这样?
在我的项目中,我经常使用 SLComposeViewController
来与第三方应用程序共享内容,但现在,当我将iPhone更新到iOS 11 beta时,这不再起作用。
SLComposeViewControllerCompletionHandler
总是回调 SLComposeViewControllerResultCancelled
。
为什么会这样?
在iOS 11中,我遇到了关于SLComposer的问题。但我只是删除了检查行,显然SDK会在内部为我进行有效性验证。
删除此行适用于任何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在设置应用中删除了对第三方账户(如Facebook和Twitter)的访问权限。我目前也在为同样的问题苦恼。
现在你必须使用第三方提供的SDK来集成功能。Twitter在这里有一个迁移页面,介绍了需要采取的步骤:
https://dev.twitter.com/twitterkit/ios/migrate-social-framework
我尚未找到关于如何迁移其他社交网络的具体指令,但可以肯定需要他们的第三方SDK。
没有更多简单的即插即用社交分享了 :-(
iOS 11中的这行代码:
([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])
一直返回NO
我用检查用户是否安装了Facebook应用程序替换了它:
static NSString *const canOpenFacebookURL = @"fbauth2";
LSApplicationQueriesSchemes
中-(BOOL)isFacebookAppInstalled {
NSURLComponents *components = [[NSURLComponents alloc] init];
components.scheme = canOpenFacebookURL;
components.path = @"/";
return [[UIApplication sharedApplication]
canOpenURL:components.URL];
}
然后就像Matheus Domingos所描述的那样,只需要调用SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
即可。
但是,使用这个检查至少可以知道用户已经安装了Facebook应用程序。