9

我已经完成了我的 iOS 应用程序,但只需要添加两个按钮:

  • 在脸书上关注我们
  • 在推特上关注我们

我以为我会在这里找到几个简单的例子,但惊讶地发现(还)根本没有答案。

我很确定我可以花接下来的几个小时试图弄清楚,但我想我会寻求一些节省时间的帮助。

只是寻找代码放在视图控制器上的按钮后面(XCode 4.5.1,iOS 6)。

我假设我可能需要提供的唯一变量是公司的 Facebook 帐户名称。

有什么建议么?(提前致谢!)

4

4 回答 4

16

首先,Facebook 的 URL 架构:(fb://profile/<yourpageid>来源。具有这种结构的 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=12345twitter://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

这是我的代码,用于显示人们喜欢我的应用程序的社区页面。

您可以将 _webview 添加到要在代码中显示的位置。

facebook 提供了在 webview 中显示页面的代码。

   -(void)likeus
{



_webview =[[UIWebView alloc] initWithFrame:CGRectMake(14,94, 292, 250)];
AppDelegate *appdelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
//Load web view data
NSString *strWebsiteUlr =@"http://www.facebook.com/plugins/likebox.php?href=https%3A%2F%2Fwww.facebook.com%2Fenbuyukkim&width=292&height=258&show_faces=true&colorscheme=dark&stream=false&border_color&header=false&appId=433294056715040";

// Load URL

//Create a URL object.
NSURL *url = [NSURL URLWithString:strWebsiteUlr];

//URL Requst Object
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

//Load the request in the UIWebView.
[_webview loadRequest:requestObj];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:_webview
           action:@selector(removeFromSuperView)
 forControlEvents:UIControlEventTouchUpInside];
button.frame = CGRectMake(270.0, 80.0, 30.0, 30.0);
[button setBackgroundImage:[UIImage imageNamed:@"cross.png"] forState:UIControlStateNormal];
[_webview addSubview:button];

}
于 2013-03-05T20:53:31.687 回答
0

我不确定这是否是您正在寻找的,但我想我找到了解决方案,这里是另一个线程的堆栈溢出。

看看这个线程: 在 iPhone 应用程序中添加 Facebook 点赞按钮

希望对你有帮助!

于 2013-03-09T03:05:00.983 回答