9

iOS アプリはほぼ完成しましたが、追加する必要があるのは次の 2 つのボタンだけです。

  • フェースブックでフォローして
  • Twitterでフォローします

ここにいくつかの簡単な例があると思っていましたが、これに対する答えが (まだ) まったく見つからないことに驚きました。

私はそれを理解するために今後数時間を費やすことができると確信していますが、時間を節約するための助けを求めて手を差し伸べようと思いました.

ビューコントローラーのボタンの背後にあるコードを探しているだけです(XCode 4.5.1、iOS 6)。

私が提供する必要がある唯一の変数は、会社の facebook アカウント名だと思います。

助言がありますか?(前もって感謝します!)

4

4 に答える 4

16

まず、Facebook の URL スキーム: fb://profile/<yourpageid>( source )。この構造の URL は、Facebook アプリがインストールされている場合に開きます。

iOS URL スキームの詳細

ボタンがタップされると、Facebook がインストールされているかどうかを確認できます。

-(IBAction)fbButtonTap:(id)sender {
    NSURL *fbURL = [[NSURL alloc] initWithString:@"fb://profile/<yourpageid>"];
    // check if app is installed
    if ( ! [[UIApplication sharedApplication] canOpenURL:fbURL] ) {
        // if we get here, we can't open the FB app.
        fbURL = ...; // direct URL on FB website to open in safari 
    }

    [[UIApplication sharedApplication] openURL:fbURL];
}

Twitter の場合も、基本的な手順は同じです。iOS の Twitter URL スキームはtwitter://user?id=12345or twitter://user?screen_name=yourname( source ) です。繰り返しますが、Twitter アプリがインストールされていない場合は、Safari で Twitter プロファイルを開いています。

デバイスにインストールされている他のアプリケーションについての固有の知識がないため、直接的なアクションを取ることはできないと思います。あなたにできる最善の方法は、ユーザーをそれぞれのアカウントに誘導することです。

于 2013-03-04T03:40:19.600 に答える
1

SLRequestを使用して、誰かにフォローしてもらうことができます。ただし、これは iOS 6 でのみ機能し、iOS 5 では Twitter は機能しますが、Facebook は機能しません。

誰かが Twitter であなたをフォローするための SLRequest の例です。これがバックグラウンド スレッドで呼び出されていることを確認してください。

ACAccountStore *accountStore = [[ACAccountStore alloc] init];
    ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];

    [accountStore requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted, NSError *error) {

        if (granted) {

            // Get the list of Twitter accounts.
            NSArray *accountsArray = [accountStore accountsWithAccountType:accountType];

            // For the sake of brevity, we'll assume there is only one Twitter account present.
            // You would ideally ask the user which account they want to tweet from, if there is more than one Twitter account present.
            if ([accountsArray count] > 0) {
                // Grab the initial Twitter account to tweet from.
                ACAccount *twitterAccount = [accountsArray objectAtIndex:0];

                NSMutableDictionary *tempDict = [[NSMutableDictionary alloc] init];
                [tempDict setValue:@"Your twitter name" forKey:@"screen_name"];
                [tempDict setValue:@"true" forKey:@"follow"];

                SLRequest *followRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodPOST URL:[NSURL URLWithString:@"https://api.twitter.com/1/friendships/create.json"] parameters:tempDict];

                [followRequest setAccount:twitterAccount];
                [followRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
                    NSString *output = [NSString stringWithFormat:@"HTTP response status: %i", [urlResponse statusCode]];
                    NSLog(@"%@", output);
                    if (error) {
                        dispatch_async(dispatch_get_main_queue(), ^{
                            //Update UI to show follow request failed
                        });
                    }
                    else {
                        dispatch_async(dispatch_get_main_queue(), ^{
                            //Update UI to show success
                        });
                    }
                }];  
            }
        }
    }];

Facebook の場合は、その一部を変更し、API を見て、リクエスト URL を変更するだけです。

于 2013-03-09T22:26:04.087 に答える
0

これがあなたが探しているものかどうかはわかりませんが、別のスレッドのスタックオーバーフローで解決策を見つけたと思います。

このスレッドを見てみましょう: iPhone アプリに Facebook のようなボタンを追加する

それがあなたを助けることを願っています!

于 2013-03-09T03:05:00.983 に答える