2

iOS アプリに共有機能を追加しています (iOS 4.3 までサポートする必要があります)。Facebook の場合、実装したい動作は次のとおりです。

Facebook アプリが iDevice に存在する場合は、それを開いて、事前に入力されたすべてのものとビューを共有します

それ以外の場合は、www.facebook.com/sharer.php?[etc] を safari (または任意のブラウザー) で開いて、私のページを共有してください。

私はこれを書きました:

    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"fb://publish/profile/me?text=%@", facebookShareLink]];

    if([[UIApplication sharedApplication] canOpenURL:url]) {

        [[UIApplication sharedApplication] openURL:url];

    } else {

        NSString *facebookLink = [NSString stringWithFormat:@"http://www.facebook.com/sharer.php?u=%@&t=%@", facebookShareLink, titleToShare];
        facebookLink = [facebookLink stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:facebookLink]];
    }

Facebook アプリがインストールされていない場合は問題なく動作しますが、インストールされている場合は開きますが、共有ビューには移動しません。

URLスキームがサポートされなくなったことをどこかで読みました(ソースがありません)。本当?

それでは、Facebook iOS SDK を統合せずにこれを行う方法はまだありますか? この SDK を追加したくありません。すべてのグラフ機能ではなく、共有機能が必要なだけです。

編集:自分のアプリをソーシャル メディアで共有したくありませんが、ユーザーにプロンプ​​トを表示して、自分で簡単に実行できるようにします。そのために Facebook アプリや Twitter アプリで認証する必要はないと思います。ユーザーは、アプリまたはモバイル Web サイトで自分自身を認証します。

4

4 に答える 4

3

ユーザーがiOS 6を使用していない場合にWebサイトにフォールバックするiOS組み込みのFacebook共有ダイアログ(SLComposeViewController)を使用して、最終的にソリューションを作成しました

NSString *facebookShareLink = @"some link to share";
NSString *titleToShare = @"some title";

// if we're not on iOS 6, SLComposeViewController won't be available. Then fallback on website.
Class composeViewControllerClass = [SLComposeViewController class];

if(composeViewControllerClass == nil || ![composeViewControllerClass isAvailableForServiceType:SLServiceTypeFacebook]) {

    NSString *facebookLink = [NSString stringWithFormat:@"http://www.facebook.com/sharer.php?u=%@&t=%@", facebookShareLink, titleToShare];
    facebookLink = [facebookLink stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:facebookLink]];

} else {

    SLComposeViewController *composeViewController = [composeViewControllerClass composeViewControllerForServiceType:SLServiceTypeFacebook];
    [composeViewController setInitialText:titleToShare];
    [composeViewController addURL:[NSURL URLWithString:facebookShareLink]];

    [parentController presentModalViewController:composeViewController animated:YES];
}
于 2012-12-12T09:14:07.873 に答える
1

Facebook、Twitter、または uiactivity を使用して電子メールで共有できます

UIImage *image1 = shareimgview.image;
NSString *str1=[@"Brand: " stringByAppendingString:brand_field.text];
NSString *str2=[@"Product: " stringByAppendingString:product_field.text];
NSString *str3=[@"Model: "stringByAppendingString:model_field.text];
NSString *str4=[@"Comment: "stringByAppendingString:status_field.text];
NSArray* dataToShare = @[str1,myurl,str2,str3,str4, image1];
UIActivityViewController *actviewcon = [[UIActivityViewController alloc] initWithActivityItems:dataToShare applicationActivities:nil];
[self presentViewController:actviewcon animated:YES completion:NULL];
于 2014-10-07T19:35:26.430 に答える
1

ShareKit などのサードパーティ コンポーネントを使用できます。
http://getsharekit.com/

于 2012-11-17T11:33:59.343 に答える