wake-up-neo.net

Hinzufügen des Like-Buttons von Facebook in einer iPhone-App

Weiß jemand, wie ich einen Facebook-Like-Button in eine iPhone-App aufnehmen würde. Ich habe versucht, den iframe in einer UIWebView aufzurufen, aber das funktioniert nicht.

25
schwabr

Sehen Sie sich diesen schönen Code an: http://angelolloqui.blogspot.com/2010/11/facebook-like-button-on-ios.html

Fügen Sie der Sicht die Variable FBLikeButton hinzu:

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

Vielen Dank Angel García Olloqui

EDIT: Schön hinzuzufügen ... Für Bonuspunkte:
Wenn Sie die obige Methode verwenden, ist die Webseite für ein iPhone nicht gut formatiert. Sie können JavaScript-Code ausführen, um alle störenden Divs zu entfernen. Verwenden Sie diesen Satz (langer Satz):

  [_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);"]];

Sie können es in der Delegatenmethode webViewDidFinishLoad aus der FBDialog-Facebook-Klasse platzieren.

13
Ben Groot

Fb like Widget kann in unsere Anwendung eingebettet werden. Sie müssen lediglich ein WebView hinzufügen und den HTML-Code/die URL des Fb Like Widget hier herunterladen.

in ViewController.h wo Sie den fb like button hinzufügen möchten:

#import <UIKit/UIKit.h>

@interface TestViewController : UIViewController <UIWebViewDelegate>

@property (strong, nonatomic) UIWebView * fbLikeWebView;

-(void)embedFBLikeButton;

@end

in 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;
        }
    }
}

rufen Sie dann in der ViewWillAppear-Methode die enbeddFBLikeButton-Methode auf, um die Schaltfläche fbLike in der Webansicht hinzuzufügen:

-(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]]];
}

Sie konformen UIWebViewDelegate nun die Definition der edelegate-Methode hier:

#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];
}

Diese Methode zum Anmelden des Nutzers bei Facebook-Konto:

- (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
        }
    }];
}
2
iProgrammer

Es ist eine alte Frage, aber wir haben nur die Antwort bekommen

Mit fb sdk können wir einfach den Like-Button hinzufügen

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

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

2
Clement Prem

Einige der oben genannten Lösungen (z. B. @floorjiann, @fabiobeta, @ Stephen-Darlington, @scott) setzen voraus, dass die iPhone-Anwendung auch eine Facebook-Anwendung ist (mit einer eigenen ID). 

Wenn Ihre iPhone-Anwendung jedoch nur eine Fanseite hat, ist dies nicht der Fall.

1
Sjors Provoost

Sie können es in eine UIWebView aufnehmen, stellen Sie sicher, dass es sich in <html><body> befindet. Wenn der Benutzer auf die Schaltfläche klickt, wird das UIWebView möglicherweise auf ein Anmeldeformular umgeleitet. Sie müssen es daher groß genug machen, damit es in dieses Objekt passt. 

Viel Spaß beim Erstellen eines Designs, das den Button auf sinnvolle Weise präsentiert.

0
Mihai Damian

Überprüfen Sie zunächst Ihre Authentifizierung auf Facebook, und verwenden Sie anschließend URL-Code anstelle von iFrame wie folgt:

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];
0
Rahul Verma
0
florianbuerger

Hier gehts - mit dem Quellcode ... genießen - und bitte einen Kommentar hinterlassen, wenn es nützlich ist.

http://nowbranded.com/blog/adding-a-facebook-like-button-to-an-iphone-application/

0
Scott

Facebook hat kürzlich sein iPhone Facebook Connect-Framework aktualisiert, um mit der Graph-API zu arbeiten. Dies ist die API, die Sie benötigen, um Objekte auf Facebook zu "mögen".

0

Sie können das Open Source-Plugin für SOOMLA-Profile verwenden: https://github.com/soomla/ios-profile

Es gibt Codebeispiele für viele Facebook-bezogene Aktionen (Anmelden, wie Freigeben des Status, Hochladen von Bildern, Abrufen von Kontakten, Einladen usw.). Siehe: https://github.com/soomla/ios-profile/blob/master/SoomlaiOSProfileExample/SoomlaiOSProfileExample/ViewController.m

0
Gur Dotan