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"]];
Dies funktioniert hervorragend, 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 Ausführung des obigen Codes die Facebook-App geöffnet, die jedoch die Zeitleiste des Benutzers und nicht die Seite meiner App anzeigt. Ich habe versucht, den Link zu @"fb://pages/myAppsPage"
und zu zu ändern @"fb://profile/myAppsPage
, aber dies öffnete erneut die Zeitleiste des Benutzers.
Meine Frage lautet also: Wie kann ich meine Apps-Seite in Safari öffnen, wenn es keine Facebook-App gibt, oder in der Facebook-App, wenn die installiert ist?
fb://profile/xxxxx
dass dies in der aktuellen Version der Facebook-App gut funktioniert. Hatte für eine Lösung über das Internet sucht, der Vorschlag der Verwendung vonfb://page/xxxxx
dem tut nicht arbeitet, wird keine Seite, wahrscheinlich , dass die für die ältere Version von Facebook - App geladen.LSApplicationQueriesSchemes
Denken Sie in iOS 9 daran, das Schema auf die Whitelist zu setzen, indem Sie den Array-Schlüssel in Ihrer Info.plist und das Elementfb
als Zeichenfolgenelement im Array hinzufügen .Es scheint, dass Facebook seit der letzten Antwort das Schema für Seiten geändert hat (Profil ist das gleiche wie zuvor)
Das
page_id
ist jetzt der Teil der URL-Abfrage. Um zur fb-App umzuleiten, muss die URL das folgende Format haben:fb://page/?id=your_page_numeric_id
Stellen Sie außerdem sicher, dass
fb
Ihre Apps eine Whitelist enthaltenInfo.plist
<key>LSApplicationQueriesSchemes</key> <array> <string>fb</string> </array>
Falls es weitere Änderungen gibt oder Sie Ihre Facebook-Seite nicht kennen
page_id
, können Sie die genaue iOS-fb
URL aus Ihrer Facebook-Webseitenquelle extrahieren .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 an:
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 den Job machen ...
quelle
al:ios:url
al:ios:url
Eigenschaft! Ich habe es nur verwendet, um herauszufinden, wie man eine Facebook-Gruppe (keine Seite) entkoppelt. prostIch war froh, die Antwort von Skladek zu finden. Hier ist mein Beitrag: Swift + andere soziale Netzwerke.
Ich fand heraus, dass ich 3 Schrägstriche für Twitter und nur 2 für Facebook und Google+ benötigte. Mehr habe ich nicht untersucht.
// Go to https://graph.facebook.com/PageName to get your page id func openFacebookPage() { let facebookURL = NSURL(string: "fb://profile?id=PageName")! 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()
quelle
Für iOS 9 müssen Sie die URLs auflisten, die Ihre App zur Verwendung des LSApplicationQueriesSchemes-Schlüssels in Ihrer Info.plist aufruft.
Ü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>
quelle
Ich habe gerade dieses URL-Schema gefunden
fb://profile?id={userid/username/pageid}
und es funktioniert ab dem 30. August 2020 einwandfrei.z.B:
fb://profile?id=4
ODERfb://profile?id=zuck
Warnung: Die Verwendung erfolgt auf eigenes Risiko, da dies nicht in der Dokumentation der Facebook-Entwickler dokumentiert ist. Dieses URL-Schema kann in Zukunft von der Facebook-App ohne Vorwarnung und Angabe entfernt werden.
quelle
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]); }
Die Reihenfolge der Sätze "wenn sonst" variiert nach Ihren Wünschen ...
Genieß es!! :-)
quelle
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 auf der folgenden Website 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 Quellmodus
-Gehen Sie zur Datei Info.plist und klicken Sie nach rechts
-Wählen Sie "Öffnen als"
-Wählen Sie "Quellcode"
- Code über einen anderen setzen
<key>LSApplicationQueriesSchemes</key> <array> <string>fb</string> <string>fbapi</string> <string>fbauth2</string> <string>fbshareextension</string> <string>fb-messenger-api</string> </array>
quelle
// Swift 5, mit dieser Funktion können Sie fb Seite / Profil öffnen
func openFacebookPage() { let facebookURL = NSURL(string: "fb://profile/PageId")! if UIApplication.shared.canOpenURL(facebookURL as URL) { UIApplication.shared.open(facebookURL as URL) } else { UIApplication.shared.open(NSURL(string: "https://www.facebook.com/PageName")! as URL) } } //By Using PageId or name only func openFacebookPage(pageID:String) { let facebookURL = NSURL(string: "fb://profile/\(pageID)")! if UIApplication.shared.canOpenURL(facebookURL as URL) { UIApplication.shared.open(facebookURL as URL) } else { UIApplication.shared.open(NSURL(string: "https://www.facebook.com/\ (pageID)")! as URL) } } //By Using Url only func openFacebookPageURL(url:String) { let facebookURL = NSURL(string: url)! if UIApplication.shared.canOpenURL(facebookURL as URL) { UIApplication.shared.open(facebookURL as URL) } else { UIApplication.shared.open(NSURL(string: url)! as URL) } }
quelle