2017-07-03 74 views
9

在我的項目中,我總是使用SLComposeViewController與第三方應用程序共享內容,但是現在,當我將iPhone更新到iOS 11測試版時,它不再工作。而SLComposeViewControllerCompletionHandler總是回調SLComposeViewControllerResultCancelled。 爲什麼?關於iOS 11 beta中的「SLComposeViewController」

回答

9

iOS 11通過設置應用刪除了第三方帳戶(如Facebook和Twitter)的訪問權限。我目前正在同樣的事情上掙扎。

您現在必須將功能與第三方的SDK集成。推特在這裏有一個遷移頁關於要採取的步驟: -

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

我還沒有找到有關如何遷移的其他社交網絡的具體說明,但可以肯定地說,將要求其第三方SDK。

沒有更容易出的現成的社交共享:-(

+1

SLComposeViewController對我來說工作得很好,就像以前一樣。查看Matheus發佈的答案。 – Leon

10

我在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]; 

我希望我能幫上忙!

+0

這是有效的 - 如果用戶沒有登錄,作曲家仍然會彈出,但隨後出現「您需要登錄」的提醒。 – davedavedave

+0

在將部署目標設置爲iOS11時,此解決方案是否適用於(iPhone)模擬器中的人員?它不會崩潰或任何東西,但我沒有得到我得到的IOS10和以下的動作表,並在控制檯它說'ViewDidAppear,但遠程VC失敗,解僱'和'表未呈現,調用過早完成? –

+0

仍在使用我的twitter,如下所示。在iPad Air和iOS 11.2.2上運行。 –

2

對於iOS 11這一行:

([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) 

總是返回NO

我檢查更換,如果用戶已經安裝了Facebook應用程序:

static NSString *const canOpenFacebookURL = @"fbauth2"; 

+將它添加到LSApplicationQueriesSchemes in 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應用程序。

相關問題