web-dev-qa-db-fra.com

Ouvrir un lien Facebook par l'application Facebook native sur iOS

Si l'application Facebook native est installée sur l'iPhone. Comment puis-je ouvrir un lien Facebook dans l'application Facebook native depuis mon application? Dans le cas d'une ouverture par Safari, le lien est le même que:

http://www.facebook.com/AlibabaUS

Je vous remercie.

60
vietstone

Voici quelques exemples d'utilisation de l'application Facebook. Il y en a bien plus sur le lien source:

Exemple

NSURL *url = [NSURL URLWithString:@"fb://profile/<id>"];
[[UIApplication sharedApplication] openURL:url];

Schémas

fb: // profile - Ouvre une application Facebook au profil de l'utilisateur.

fb: // friends - Ouvre l'application Facebook dans la liste d'amis

fb: // notifications - Ouvrez l’application Facebook dans la liste des notifications (REMARQUE: il semble y avoir un bogue avec cette URL. La page Notifications s’ouvre. Il n’est toutefois pas possible de naviguer ailleurs dans l’application Facebook)

fb: // feed - Ouvre l'application Facebook dans le fil d'actualité

fb: // events - Ouvre l'application Facebook sur la page Events

fb: // request - Ouvre l'application Facebook dans la liste Requests.

fb: // notes - Ouvre l'application Facebook sur la page Notes

fb: // albums - Ouvre l'application Facebook dans la liste des albums photo

Si, avant d'ouvrir cette URL, vous souhaitez vérifier si l'utilisateur utilise l'application facebook, vous pouvez procéder comme suit (comme expliqué dans une autre réponse ci-dessous):

if ([[UIApplication sharedApplication] canOpenURL:nsurl]){
    [[UIApplication sharedApplication] openURL:nsurl];
}
else {
    //Open the url as usual
}

La source

http://wiki.akosma.com/IPhone_URL_Schemes#Facebook

132
WrightsCS

Utilisez simplement https://graph.facebook.com/(your_username ou le nom de la page) pour obtenir votre identifiant de page et après vous pourrez voir tout le contenu et votre ID

après dans votre IOS application, utilisez: 

 NSURL *url = [NSURL URLWithString:@"fb://profile/[your ID]"];
 [[UIApplication sharedApplication] openURL:url];
27
Romano401

Pour ajouter le commentaire de yonix comme réponse, l’ancienne URL fb://page/… ne fonctionne plus. Apparemment, il a été remplacé par fb://profile/…, même si une page n'est pas un profil.

26
zoul

Je l'ai fait dans MonoTouch avec la méthode suivante, je suis sûr qu'une approche basée sur Obj-C ne serait pas trop différente. J'ai utilisé cela dans une classe qui changeait parfois d'URL, c'est pourquoi je ne l'ai pas simplement insérée dans une instruction if/elseif.

NSString *myUrls = @"fb://profile/100000369031300|http://www.facebook.com/ytn3rd";
NSArray *urls = [myUrls componentsSeparatedByString:@"|"];
for (NSString *url in urls){
    NSURL *nsurl = [NSURL URLWithString:url];
    if ([[UIApplication sharedApplication] canOpenURL:nsurl]){
        [[UIApplication sharedApplication] openURL:nsurl];
        break;
    }
}

La pause n'est pas toujours appelée avant que votre application ne passe à Safari/Facebook. Je suppose que votre programme s’arrêtera là et l’appellera lorsque vous y reviendrez.

10
Brad Moore

Je sais que la question est ancienne, mais à l’appui des réponses ci-dessus, je souhaitais partager mon code de travail . Il suffit d’ajouter ces deux méthodes à la classe de votre choix.Le code vérifie si l’application Facebook est installée, sinon installée; l’URL est ouverte dans un navigateur.Et si des erreurs se produisent lors de la recherche de l'ID de profil, la page sera ouverte dans un navigateur. Il suffit de passer l’URL (exemple, http://www.facebook.com/AlibabaUS ) pour ouvrir openUrl: et cela fera toute la magie. J'espère que ça aide quelqu'un!.

NOTE: UrlUtils était la classe qui avait le code pour moi, vous devrez peut-être le changer pour quelque chose d'autre pour répondre à vos besoins.

+(void) openUrlInBrowser:(NSString *) url
{
    if (url.length > 0) {
        NSURL *linkUrl = [NSURL URLWithString:url];
        [[UIApplication sharedApplication] openURL:linkUrl];
    }
}
+(void) openUrl:(NSString *) urlString
{

    //check if facebook app exists
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fb://"]]) {

        // Facebook app installed
        NSArray *tokens = [urlString componentsSeparatedByString:@"/"];
        NSString *profileName = [tokens lastObject];

        //call graph api
        NSURL *apiUrl = [NSURL URLWithString:[NSString stringWithFormat:@"https://graph.facebook.com/%@",profileName]];
        NSData *apiResponse = [NSData dataWithContentsOfURL:apiUrl];

        NSError *error = nil;
        NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:apiResponse options:NSJSONReadingMutableContainers error:&error];

        //check for parse error
        if (error == nil) {

            NSString *profileId = [jsonDict objectForKey:@"id"];

            if (profileId.length > 0) {//make sure id key is actually available
                NSURL *fbUrl = [NSURL URLWithString:[NSString stringWithFormat:@"fb://profile/%@",profileId]];
                [[UIApplication sharedApplication] openURL:fbUrl];
            }
            else{
                [UrlUtils openUrlInBrowser:urlString];
            }

        }
        else{//parse error occured
            [UrlUtils openUrlInBrowser:urlString];
        }

    }
    else{//facebook app not installed
        [UrlUtils openUrlInBrowser:urlString];
    }

}
8
HussoM

Swift 3

if let url = URL(string: "fb://profile/<id>") {
        if #available(iOS 10, *) {
            UIApplication.shared.open(url, options: [:],completionHandler: { (success) in
                print("Open fb://profile/<id>: \(success)")
            })
        } else {
            let success = UIApplication.shared.openURL(url)
            print("Open fb://profile/<id>: \(success)")
        }
 }
3
iParesh

Si l'application Facebook est connectée, la page sera ouverte lors de l'exécution du code suivant. Si l'application Facebook n'est pas connectée lors de l'exécution du code, l'utilisateur sera alors redirigé vers l'application Facebook pour se connecter. Une fois connecté, Facebook ne sera pas redirigé vers la page!

NSURL *fbNativeAppURL = [NSURL URLWithString:@"fb://page/yourPageIDHere"] [[UIApplication sharedApplication] openURL:fbNativeAppURL]
1
user3012572

Cela ouvrira l'URL dans Safari:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.facebook.com/comments.php?href=http://wombeta.jiffysoftware.com/ViewWOMPrint.aspx?WPID=317"]];

Pour l'iphone, vous pouvez lancer l'application Facebook si elle est installée à l'aide d'une URL commençant par fb: //

Plus d'informations peuvent être trouvées ici: http://iphonedevtools.com/?p=302 aussi ici: http://wiki.akosma.com/IPhone_URL_Schemes#Facebook

Volé du site ci-dessus:

fb://profile – Open Facebook app to the user’s profile
fb://friends – Open Facebook app to the friends list
fb://notifications – Open Facebook app to the notifications list (NOTE: there appears to be a bug with this URL. The Notifications page opens. However, it’s not possible to navigate to anywhere else in the Facebook app)
fb://feed – Open Facebook app to the News Feed
fb://events – Open Facebook app to the Events page
fb://requests – Open Facebook app to the Requests list
fb://notes - Open Facebook app to the Notes page
fb://albums – Open Facebook app to Photo Albums list

Pour lancer les URL ci-dessus:

NSURL *theURL = [NSURL URLWithString:@"fb://<insert function here>"];
[[UIApplication sharedApplication] openURL:theURL];
0
Saad