web-dev-qa-db-ja.com

iOS 11ベータ版の「SLComposeViewController」について

私のプロジェクトでは、常にSLComposeViewControllerを使用してサードパーティアプリとコンテンツを共有しますが、iPhoneをiOS 11ベータ版に更新すると、これは機能しなくなりました。

SLComposeViewControllerCompletionHandlerは常にSLComposeViewControllerResultCancelledをコールバックします。

どうしてこれなの?

16
hujie

私は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];

お役に立てば幸いです!

19

iOS 11は、設定アプリからサードパーティアカウント(FacebookやTwitterなど)へのアクセスを削除しました。私は現在、同じことに苦労しています。

ここで、サードパーティのSDKと機能を統合する必要があります。 Twitterには、実行する手順に関する移行ページがあります。

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

他のソーシャルネットワークを移行する方法に関する具体的な手順はまだ見つけていませんが、サードパーティのSDKが必要になると言っても差し支えありません。

これ以上の簡単なすぐに使えるソーシャル共有はありません:-(

12
user8315745

IOS 11の場合、次の行:

 ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) 

常にNOを返します

ユーザーに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 composeViewControllerForServiceType:SLServiceTypeFacebook];を呼び出すだけです

いつものように、マテウス・ドミンゴスが説明したのと同じ。しかし、少なくともこのチェックでは、ユーザーがFacebookアプリをインストールしていることがわかります。

6
bekzattt