69 votes

Ouvrir un lien vers une page Facebook à partir d'une application iOS

Je veux rediriger l'utilisateur vers la page Facebook de mon application, j'ai donc le code suivant :

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

Cela fonctionne très bien, s'il n'y a pas d'application Facebook sur l'appareil. Dans ce cas, le lien s'ouvre dans Safari.

Si l'application Facebook est installée sur l'appareil, après l'exécution du code ci-dessus, l'application Facebook s'ouvre, mais elle affiche la timeline des utilisateurs, et non la page de mon application. J'ai essayé de changer le lien en @"fb://pages/myAppsPage" et à @"fb://profile/myAppsPage mais cela a encore ouvert la ligne de temps des utilisateurs.

Ma question est donc la suivante : comment puis-je ouvrir ma page d'applications dans Safari, s'il n'y a pas d'application Facebook, ou dans l'application Facebook, si elle est installée.

1voto

Javier Amor Penas Points 146

Après de nombreux essais, j'ai trouvé l'une des solutions les plus efficaces :

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

L'ordre des phrases "si autre chose" peut varier à votre guise...

Profitez-en ! :-)

1voto

Cristian Mora Points 795

Swift 2.3

Pour le code, vous pouvez utiliser cet exemple :

Note : Si vous ne trouvez pas l'identifiant du profil facebook, vous pouvez utiliser le site suivant pour le faire ( 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")!)
    }
}

Pour Info.plist, vous devez définir les paramètres suivants :

Note : Pour ouvrir le fichier Info.plist en mode source.

-Allez au fichier Info.plist et cliquez sur le bouton droit de la souris.

-Sélectionnez "Ouvrir sous"

-Sélectionnez "Code source".

-Mettre le code au-dessus d'un autre

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

1voto

Pushker pandey Points 11

// Swift 5, vous pouvez utiliser cette fonction pour ouvrir la page/le profil de fb.

       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)
            }
        }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X