it-swarm.com.de

Link zur Facebook-Seite aus der iOS-App öffnen

Ich möchte den Benutzer auf die Facebook-Seite meiner App umleiten, daher habe ich den folgenden Code:

[[UIApplication sharedApplication] openURL:
    [NSURL URLWithString: @"https://facebook.com/myAppsPage"]];

das funktioniert gut, wenn keine Facebook-App auf dem Gerät vorhanden ist. Dann öffnet sich der Link in Safari.

Wenn auf dem Gerät eine Facebook-App installiert ist, wird nach dem Ausführen des obigen Codes die Facebook-App geöffnet. Sie zeigt jedoch die Zeitleiste der Benutzer und nicht die Seite meiner App. Ich habe versucht, den Link zu @"fb://pages/myAppsPage" und zu @"fb://profile/myAppsPage zu ändern, aber dies öffnete die Benutzer-Timeline erneut.

Meine Frage ist also: Wie kann ich meine Apps-Seite in Safari öffnen, wenn keine Facebook-App vorhanden ist, oder in Facebook-App, wenn die App installiert ist.

65
medvedNick

Sie müssen die Facebook-ID für die angegebene Seite anstelle der Eitelkeits-URL verwenden. Um die Seiten-ID zu erhalten, geben Sie den Vanity-Namen Ihrer Seite unter der folgenden URL ein und kopieren Sie den Wert für "ID":

https://graph.facebook.com/yourappspage

Sobald Sie die ID haben, können Sie die Methode einrichten, um zu prüfen, ob der FB mit der Methode canOpenURL installiert ist, und den entsprechenden Inhalt für beide Status bereitzustellen:

NSURL *facebookURL = [NSURL URLWithString:@"fb://profile/113810631976867"];
if ([[UIApplication sharedApplication] canOpenURL:facebookURL]) {
    [[UIApplication sharedApplication] openURL:facebookURL];
} else {
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://facebook.com"]];
}
120
Sean Kladek

Ich habe mich sehr über die Antwort von skladek gefreut, daher hier mein Beitrag: Swift + andere soziale Netzwerke.

Ich fand heraus, dass ich 3 Schrägstriche für Twitter brauchte, und nur 2 für Facebook und Google+. Ich untersuchte nicht mehr als das…

// Go to https://graph.facebook.com/PageName to get your page id
func openFacebookPage() {
    let facebookURL = NSURL(string: "fb://profile/PageId")!
    if UIApplication.sharedApplication().canOpenURL(facebookURL) {
        UIApplication.sharedApplication().openURL(facebookURL)
    } else {
        UIApplication.sharedApplication().openURL(NSURL(string: "https://www.facebook.com/PageName")!)
    }
}

func openTwitterProfile() {
    let twitterURL = NSURL(string: "Twitter:///user?screen_name=USERNAME")!
    if UIApplication.sharedApplication().canOpenURL(twitterURL) {
        UIApplication.sharedApplication().openURL(twitterURL)
    } else {
        UIApplication.sharedApplication().openURL(NSURL(string: "https://Twitter.com/USERNAME")!)
    }
}

func openGooglePlusPage() {
    let googlePlusURL = NSURL(string: "gplus://plus.google.com/u/0/PageId")!
    if UIApplication.sharedApplication().canOpenURL(googlePlusURL) {
        UIApplication.sharedApplication().openURL(googlePlusURL)
    } else {
        UIApplication.sharedApplication().openURL(NSURL(string: "https://plus.google.com/PageId")!)
    }
}

Ein Versuch des Refactorings:

struct SocialNetworkUrl {
    let scheme: String
    let page: String

    func openPage() {
        let schemeUrl = NSURL(string: scheme)!
        if UIApplication.sharedApplication().canOpenURL(schemeUrl) {
            UIApplication.sharedApplication().openURL(schemeUrl)
        } else {
            UIApplication.sharedApplication().openURL(NSURL(string: page)!)
        } 
    }
}

enum SocialNetwork {
    case Facebook, GooglePlus, Twitter, Instagram
    func url() -> SocialNetworkUrl {
        switch self {
        case .Facebook: return SocialNetworkUrl(scheme: "fb://profile/PageId", page: "https://www.facebook.com/PageName")
        case .Twitter: return SocialNetworkUrl(scheme: "Twitter:///user?screen_name=USERNAME", page: "https://Twitter.com/USERNAME")
        case .GooglePlus: return SocialNetworkUrl(scheme: "gplus://plus.google.com/u/0/PageId", page: "https://plus.google.com/PageId")
        case .Instagram: return SocialNetworkUrl(scheme: "instagram://user?username=USERNAME", page:"https://www.instagram.com/USERNAME")
        }
    }
    func openPage() {
        self.url().openPage()
    }
}

Jetzt können Sie anrufen:

SocialNetwork.Twitter.openPage()
29
Nycen

Es scheint, dass Facebook seit der letzten Antwort das Schema für Seiten geändert hat (Profil ist dasselbe wie zuvor). 

page_id ist jetzt Teil der URL-Abfrage . Um zur fb-App umzuleiten, muss die URL im folgenden Format vorliegen:

fb://page/?id='your_page_numeric_id'

Stellen Sie außerdem sicher, dass Sie in Ihren Apps das fb-Schema Info.plist

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>fb</string>
</array>

Falls weitere Änderungen vorgenommen werden oder Sie den page_id Ihrer Facebook-Seite nicht kennen, können Sie die genaue iOS fb-URL aus Ihrer Facebook-Webseitenquelle extrahieren. 

  1. Öffnen Sie Ihre Facebook-Seite in Safari
  2. Rechtsklick -> Element prüfen
  3. Suche nach al:ios:url

Sie sollten finden können:

<meta property="al:ios:url" content="fb://page/?id='your_page_numeric_id'">

Kopieren Sie diese URL in Ihre App und rufen Sie dann auf:

guard let facebookURL = NSURL(string: "fb://page/?id='your_page_numeric_id'") else {
    return
}

if (UIApplication.sharedApplication().canOpenURL(facebookURL)) {
    UIApplication.sharedApplication().openURL(facebookURL)
} else {

    guard let webpageURL = NSURL(string: "http://facebook.com/yourPage/") else {
        return
    }

    UIApplication.sharedApplication().openURL(webpageURL)
}

sollte die Arbeit machen.

23
ambientlight

Für iOS 9 müssen Sie die URLs, die Ihre App mit dem Schlüssel LSApplicationQueriesSchemes in Ihrer Info.plist anruft, auf die Whitelist setzen. 

Überprüfen Sie hier .

<key>LSApplicationQueriesSchemes</key>
    <array>
     <string>fb</string>
     <string>fbapi</string>
     <string>fbauth2</string>
     <string>fbshareextension</string>
     <string>fb-messenger-api</string>
     <string>Twitter</string>
     <string>whatsapp</string>
     <string>wechat</string>
     <string>line</string>
     <string>instagram</string>
     <string>kakaotalk</string>
     <string>mqq</string>
     <string>vk</string>
     <string>comgooglemaps</string>
    </array>
11
Emre

Nach vielen Tests habe ich eine der effektivsten Lösungen gefunden:

NSString *facebookID = @"XXXXXXXXXX";
NSString *facebookURL = @"www.facebook.com/XXXXXXXX";
NSURL *urlModal = [NSURL URLWithString:[NSString stringWithFormat:@"fb://facewebmodal/f?href=%@", facebookURL]];
NSURL *urlWithID = [NSURL URLWithString:[NSString stringWithFormat:@"fb://page/%@", facebookID]]; // or "fb://profile/%@" or another type of ID
NSURL *url = [NSURL URLWithString:facebook_url];


if(facebookID && !facebookID.isEmpty && [[UIApplication sharedApplication] canOpenURL:urlWithID]) {
    // open facebook app with facebookID
    [[UIApplication sharedApplication] openURL:urlWithID];
} else if (facebookURL && !facebookURL.isEmpty && [[UIApplication sharedApplication] canOpenURL:urlModal]) {
    // open facebook app with facebookUrl
    [[UIApplication sharedApplication] openURL:urlModal];
} else if (![[UIApplication sharedApplication] openURL:url]) {
    // somehow open
    NSLog(@"%@%@",@"Failed to open url:",[url description]);
}

Reihenfolge der Sätze "Wenn sonst" variieren nach Ihren Wünschen ...

Geniesse es!! :-)

1

Swift 2.3

Für Code können Sie dieses Beispiel verwenden:

Hinweis: Wenn Sie die Facebook-Profil-ID nicht finden können, können Sie dies mithilfe der Folgeseite tun ( https://findmyfbid.com/ ).

func goFacebook() {
    let profileID = "" //Here put profile id Example:'62260589592'
    let facebookURL = NSURL(string: "fb://profile/\(profileID)")!

    if UIApplication.sharedApplication().canOpenURL(facebookURL) {
        UIApplication.sharedApplication().openURL(facebookURL)
    } else {
        UIApplication.sharedApplication().openURL(NSURL(string: "https://www.facebook.com/PageName")!)
    }
}

Für Info.plist müssen Sie die folgenden Parameter einstellen:

Hinweis: Zum Öffnen der Info.plist im Quellenmodus

- Gehe zur Info.plist-Datei und klicke nach rechts

-Wählen Sie "Öffnen als"

-Wählen Sie "Quellcode"

-Put Code oben von einem anderen setzen 

<key>LSApplicationQueriesSchemes</key>
<array>
 <string>fb</string>
 <string>fbapi</string>
 <string>fbauth2</string>
 <string>fbshareextension</string>
 <string>fb-messenger-api</string>
</array>
0
Cristian Mora