10

を使用するSLComposeViewControllerと、画像とURLの両方が存在する場合、Facebookに投稿するときに奇妙な動作に気付きます。具体的には、画像とURLの両方がある場合、次のようにすると、URLがFacebook投稿の本文のビューのSLComposeViewController直後に表示されinitialTextます。

SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];

NSString *text = @"This is a test Facebook post with SLComposeViewController.";
NSURL *url = [NSURL URLWithString:@"http://http://stackoverflow.com/questions/12503287/tutorial-for-slcomposeviewcontroller-sharing"];
UIImage *image = ...;

[controller setInitialText:text];
[controller addURL:url];
[controller addImage:image];

[self presentViewController:controller animated:YES completion:nil];

URLが長い場合、最初のテキストがビューの表示部分から押し出されSLComposeViewController、URLの後半部分しか表示されないため、これは明らかに面倒です。

ここに画像の説明を入力してください

このプロセスを繰り返すと、今回は画像を投稿に追加せずに、URLのテキストが本文にまったく表示されないのが便利です(オンラインでは正しく表示されますが)。

ここに画像の説明を入力してください

結論として、画像があり、URLが投稿の本文に表示される場合のみ。そして、を使用すると、これと同じパターンが表示されますFBNativeDialogs

でその動作を停止してSLComposeViewController、ユーザーをWebサイトの長くて醜いURLにさらすことなく、画像とURLの両方をFacebookの投稿に接続できるようにする方法はありますか?明らかに、私は非SLComposeViewControllerソリューションのいずれかを使用できます(たとえば、Facebookの投稿を作成するための独自のUIの設計、Facebookの非推奨のフィードダイアログの使用など)。私がいくつかの明白なSLComposeViewController解決策を見落としているかどうか疑問に思っています。

4

3 に答える 3

10

結局、私はSLComposeViewController(と同様にFBNativeDialogs)をあきらめました。それらは素晴らしい、統合された感触を示しますが、私の投稿には常に写真とURLの両方が含まれていることを考えると、これは実際には機能しません。その上、投稿が私のアプリからのものであると正しく関連付けられていませんでした。

したがって、最終的には、独自のユーザーインターフェイスを作成し、ここでFBRequestConnection概説するようにFacebookSDK3.1を使用します。ネイティブUIの弱点があるので、私たち全員が独自のUIを作成しなければならないのは少しばかげていると思いますが、それがそれです。

于 2012-10-14T07:08:08.143 に答える
6

新しいダイアログは、提供されたリンクが指すWebサイト上のタグとしてほとんどの共有データを提供するように設計されているようです。このような:

タイトル:

<title>TITLE</title>

説明:

<meta name="description" content="DESCRIPTION">

画像:

<meta property="og:image" content="IMAGE_URL">

アプリID:

<meta property="fb:app_id" content="APP_ID">

この方法では、最初のテキストとURLを指定するだけで済みます。例として、公式のYouTubeアプリがFacebookで共有している様子を見ることができます。

于 2013-03-15T10:06:03.340 に答える
-5
TWTweetComposeViewController *twitter = [[TWTweetComposeViewController alloc] init];
NSString *format = @"“%@” %@ /via @DesignSceneApp";
NSString *message = [NSString stringWithFormat:format, title, url]
NSUInteger idx = title.length;
while (![twitter setInitialText:message]) {
    idx -= 5;
    if (idx > 5) {
        message = [NSString stringWithFormat:format,
            [NSString stringWithFormat:@"%@…", [title substringToIndex:idx]],
            url
        ];
    } else {
        // Give up on the title.
        message = [NSString stringWithFormat:@"%@ /via @DesignSceneApp", url];
        [twitter setInitialText:message];
        break;
    }
}

[self presentViewController:twitter animated:YES completion:nil];
于 2012-11-28T11:03:08.710 に答える