作者:霍邱宋涛_842 | 来源:互联网 | 2023-01-30 16:51
在我的项目中,我总是使用SLComposeViewController与第三方应用程序共享内容,但现在,当我将我的iPhone更新到iOS 11测试版时,它不再起作用.并且SLComposeViewControllerCompletionHandler总是回调SLComposeViewControllerResultCancelled.为什么?
1> 小智..:
我在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];
我希望我有所帮助!
2> 小智..:
iOS 11通过"设置应用"删除了对第三方帐户(如Facebook和Twitter)的访问权限.我目前正在努力做同样的事情.
您现在必须将功能与来自第三方的SDK集成.Twitter在此处有一个迁移页面,介绍了要采取的步骤: -
https://dev.twitter.com/twitterkit/ios/migrate-social-framework
我还没有找到有关如何迁移其他社交网络的具体说明,但可以肯定地说它需要他们的第三方SDK.
没有更容易开箱即用的社交分享:-(
就像以前一样,SLComposeViewController对我来说很好.看看马修斯发布的答案.
3> 小智..:
对于iOS 11这一行:
([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])
总是回来 NO
如果用户安装了Facebook应用程序,我将其替换为:
static NSString *const canOpenFacebookURL = @"fbauth2";
+将它添加到LSApplicationQueriesSchemes
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 app.