私のiOSは8.1.2で、ソーシャル共有にUIActivityViewControllerを使用しています。ボタンをクリックして、UIActivityViewControllerに表示させます
- (IBAction)UIActivityTypeButtonClick:(id)sender {
NSString* text=@"I am sharing this text";
NSArray* sharedArray=@[text];
UIActivityViewController * activityVC=[[UIActivityViewController alloc]initWithActivityItems:sharedArray applicationActivities:nil];
activityVC.excludedActivityTypes=@[];
[self presentViewController:activityVC animated:YES completion:nil];
}
私はこれを手に入れています
メッセージ、Twitter、メール、WhatsAppおよびその他ボタンが表示されます。
クリックするともっと見るこれが表示されます。
[〜#〜] facebook [〜#〜]はどこにありますか。 iPhoneにFacebookアプリがあり、設定でもIDを使用してセットアップされています。しかし、Facebookがここに表示されることはありません。 Twitterはそうします。これはバグですか、それとも何ですか?提案してください
ありがとう
Facebookが4月24日にアプリを更新したときに最初にこれを見ました。 Facebookアプリがインストールされている限り、Facebookへのプレーンテキスト共有は機能しません。削除すると、再び利用できるようになります。
URLまたは画像をプレーンテキストと一緒に共有しようとすると、オプションとしてFacebookが表示されますが、テキストフィールドは空白になります。画像やURLは問題なく添付されます。
この問題を再現するサンプルプロジェクトをgithubに投稿しました。
https://github.com/djr/UIActivityViewController-Facebook
これは答えではありませんが、問題の原因がFacebookアプリであることは明らかです。
編集:
理想的ではありませんが、回避策を作成しました。これを機能させるには、画像またはURLを添付する必要があることを忘れないでください。
ユーザーがFacebookアプリをインストールしているかどうかを検出します。もしそうなら、彼らにある種の情報メッセージを与えてください。
BOOL facebookIsInstalled = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fb://"]];
BOOL isUserLoggedInWithFacebook = [SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook];
if(isUserLoggedInWithFacebook && facebookIsInstalled)
{
// Explain that they have to copy and paste in order to share on Facebook
}
UIActivityItemProviderのサブクラスを作成し、オーバーライドします
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType
{
NSString *stringToShare = @"string to share";
if([activityType isEqualToString:UIActivityTypePostToFacebook] ||
[activityType isEqualToString:@"com.facebook.Facebook.ShareExtension"] ||
[activityType.lowercaseString rangeOfString:@"facebook"].length)
// Because who knows when they are going to change the activityType string?
{
// Automatically copy the text for them
[[UIPasteboard generalPasteboard] setString:stringToShare];
}
return stringToShare;
}
共有するには、Facebookのテキストフィールドに貼り付ける必要があることをユーザーに伝えます。
Facebookでそれを責めなさい。
Facebookはあなたに彼らのSDKを使用してほしいと思っています。彼らは最初のテキストを設定する機能をブロックしました。 (方法はわかりません。)同様の投稿で私の答えを確認してください。
FacebookのUIActivityViewControllerがデフォルトのテキストを表示しない
(Facebookからの)望ましい解決策は、SDKを使用することです。
Djrが報告した内容を確認します-FBアプリのテキストが共有されなくなった場合。 FBアプリを削除し、テキストと画像の両方の作品を共有するようになりました。
NSString* text=@"I am sharing this text";
NSURL *myWebsite = [NSURL URLWithString:@"http://www.website.com/"];
// UIImage * myImage =[UIImage imageNamed:@"myImage.png"];
NSArray* sharedArray=@[text,myWebsite];
UIActivityViewController * activityVC=[[UIActivityViewController alloc]initWithActivityItems:sharedArray applicationActivities:nil];
NSArray *excludedActivities = @[];
activityVC.excludedActivityTypes=excludedActivities;
[self presentViewController:activityVC animated:YES completion:nil];
Facebook共有ボタンを表示するには、アクティビティアイテムの配列に画像を追加する必要があります...これはApple側のバグである可能性がありますが、この問題に関するオープンレーダーは見ていません。
また、iOS 8.3では、何らかの理由でテキストをFacebookに追加できないことに注意してください。テキストを追加すると、空白のテキストフィールドにのみ表示されます。
UIImage *image = [UIImage imageNamed:@"__some_image__file"];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[image]
applicationActivities:nil];
[self presentViewController:activityViewController animated:YES completion:nil];