Подтвердить что ты не робот

Добавление Facebook Like Button в iPhone App

Кто-нибудь знает, как включить в приложение iphone функцию "like button". Я попытался вызвать iframe внутри UIWebView, но это не работает.

4b9b3361

Ответ 1

Проверьте этот хороший код: http://angelolloqui.blogspot.com/2010/11/facebook-like-button-on-ios.html

Добавьте класс FBLikeButton к вашему представлению:

FBLikeButton *likeButton = [[FBLikeButton alloc] initWithFrame:CGRectMake(0, 372, 320, 44)       
andUrl:@"http://www.facebook.com/pages/De-Zilk/108209735867960"];

Большое спасибо Angel García Olloqui

EDIT: приятно добавить... Для бонусных очков:
Если вы используете метод выше, веб-страница не хорошо отформатирована для iPhone. Что вы можете сделать, так это запустить код JavaScript, чтобы удалить все тревожные div. Используйте это (длинное предложение):

  [_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"javascript:document.getElementsByClassName('uiButton')[2].style.visibility='hidden';var child1 = document.getElementById('standard_status');var parent1 = document.getElementById('login_form');parent1.removeChild(child1);var child2 = document.getElementById('pageheader');var parent2 = document.getElementById('booklet');parent2.removeChild(child2);document.getElementById('loginform').style.width = '200px';var child3 = document.getElementById('reg_btn_link');var parent3 = document.getElementsByClassName('register_link')[0];parent3.removeChild(child3);var child4 = document.getElementById('signup_area');var parent4 = document.getElementById('login_form');parent4.removeChild(child4);var child5 = document.getElementsByClassName('mbm')[0];var parent5 = document.getElementById('loginform');parent5.removeChild(child5);var child6 = document.getElementsByClassName('reset_password form_row')[0];var parent6 = document.getElementById('loginform');parent6.removeChild(child6);var child7 = document.getElementsByClassName('persistent')[0];var parent7 = document.getElementById('loginform');parent7.removeChild(child7);"]];

Вы можете поместить его в метод делегата webViewDidFinishLoad из класса FBDialog Facebook.

Ответ 2

Fb, как Widget, может быть встроен в наше приложение. Вам просто нужно добавить webView и получить Fb Like Widget html code/URL здесь.

в ViewController.h, где вы хотите добавить fb как кнопку:

#import <UIKit/UIKit.h>

@interface TestViewController : UIViewController <UIWebViewDelegate>

@property (strong, nonatomic) UIWebView * fbLikeWebView;

-(void)embedFBLikeButton;

@end

в TestViewController.m

#import "AboutUsViewController.h"

@implementation AboutUsViewController

@synthesize fbLikeWebView = _fbLikeWebView;

- (void)viewDidLoad
{
    [super viewDidLoad];

    //Add this code for FbLike Webview

    self.fbLikeWebView = [[UIWebView alloc] initWithFrame: CGRectMake(100.0, 50.0, 55.0, 70.0)];
    _fbLikeWebView.opaque = NO;
    _fbLikeWebView.backgroundColor = [UIColor clearColor];
    _fbLikeWebView.delegate = self;
    [self.view addSubview:_fbLikeWebView];

    for (UIScrollView *subview in _fbLikeWebView.subviews)
    {
        if ([subview isKindOfClass:[UIScrollView class]]) {
            subview.scrollEnabled = NO;
            subview.bounces = NO;
        }
    }
}

то в методе ViewWillAppear вызовите метод enbeddFBLikeButton, чтобы добавить wigdet кнопки fbLike в веб-представление:

-(void)viewWillAppear:(BOOL)animated
{
    [self embedFBLikeButton];
    [_fbLikeWebView reload];
}

-(void)embedFBLikeButton
{
    NSString *facebookUrl =  //here paste the url you get from fb developer link above;

    [self.fbLikeWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:facebookUrl]]];
}

Теперь вы соглашаетесь с UIWebViewDelegate на свою очередь на определение метода edelegate:

#pragma mark - WebView Delgate Methods

- (BOOL)webView:(UIWebView *)webview shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    if ([request.URL.lastPathComponent isEqualToString:@"login.php"])
    {
        [self login];

        return NO;
    }

    return YES;
}

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    [_fbLikeWebView stopLoading];
}

Этот метод для входа пользователя в учетную запись на facebook:

- (void)login
{
    [FBSession setActiveSession: [[FBSession alloc] initWithPermissions:@[@"publish_actions", @"publish_stream", @"user_photos"]]];

    [[FBSession activeSession] openWithBehavior: FBSessionLoginBehaviorForcingWebView completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
        switch (status) {
            case FBSessionStateOpen:
                // call the legacy session delegate
                //Now the session is open do corresponding UI changes
                if (session.isOpen) {
                    FBRequest *me = [FBRequest requestForMe];

                    [me startWithCompletionHandler: ^(FBRequestConnection *connection,
                                                      NSDictionary<FBGraphUser> *my,
                                                      NSError *error) {
                        if (!my) {
                            NSLog(@"Facebook error:\n%@", error.description);
                            [[[UIAlertView alloc] initWithTitle: @"Error"
                                                        message: @"Facebook Login error."
                                                       delegate: self
                                              cancelButtonTitle: @"Ok"
                                              otherButtonTitles: nil, nil] show];
                            return;
                        }
                    }];

                    [_fbLikeWebView reload];

                    [[[UIAlertView alloc] initWithTitle: @""
                                                message: @"Successfully Login. Please click on like button"
                                               delegate: self
                                      cancelButtonTitle: @"Ok"
                                      otherButtonTitles: nil, nil] show];
                }
                break;
            case FBSessionStateClosedLoginFailed:
            {
                [_fbLikeWebView reload];
            }
                break;
            default:
                break; // so we do nothing in response to those state transitions
        }
    }];
}

Ответ 3

Это старый вопрос, но мы получили ответ

Используя fb sdk, мы можем просто добавить кнопку типа

FBLikeControl *likeButton = [[FBLikeControl alloc] init];
like.objectID = @"http://ihackthati.wordpress.com/photo1/";
[self addSubview:like];

https://developers.facebook.com/docs/ios/like-button/

Ответ 4

Некоторые из вышеперечисленных решений (например, @floorjiann, @fabiobeta, @Stephen-Darlington, @scott) предполагают, что приложение iPhone также является приложением Facebook (с его собственным идентификатором).

Однако, если ваше приложение для iPhone имеет только страницу поклонников, это не так.

Ответ 5

Вы можете включить его в UIWebView, просто убедитесь, что он находится внутри <html><body>. Проблема в том, что, как только пользователь нажимает кнопку, UIWebView может перенаправляться на регистрационную форму, поэтому вам нужно будет сделать ее достаточно большой, чтобы соответствовать этой вещи.

Получайте удовольствие от создания дизайна, который представляет кнопку разумным способом.

Ответ 9

Сначала проверьте свою аутентификацию на Facebook, а затем используйте код URL вместо iFrame следующим образом:

NSURL *url = [NSURL URLWithString:@"http://www.facebook.com/plugins/like.php?href=https%3A%2F%2Fwww.facebook.com%2FRemtechConfessionChambers&width=200&height=80&colorscheme=light&layout=standard&action=like&show_faces=true&send=false"];
NSURLRequest *req = [NSURLRequest requestWithURL:url];

[webViewFb loadRequest:req];

Ответ 10

Вы можете использовать плагин с открытым исходным кодом SOOMLA Profile: https://github.com/soomla/ios-profile

Есть примеры кода для многих связанных с Facebook действий (вход в систему, например, общий статус, загрузка изображения, получение контактов, приглашение и т.д.). Видеть: https://github.com/soomla/ios-profile/blob/master/SoomlaiOSProfileExample/SoomlaiOSProfileExample/ViewController.m

Ответ 11

Я этот момент вовремя не могу. Мобильные API не раскрывают эту возможность. Вы можете использовать некоторое обходное решение, заключающееся в встраивании html-способа сделать это в вашем приложении.

Некоторые подробности обходного пути здесь: http://petersteinberger.com/2010/06/add-facebook-like-button-with-facebook-connect-iphone-sdk/