ネイティブのFacebookアプリがiPhoneにインストールされている場合。アプリからネイティブFacebookアプリへのFacebookリンクを開くにはどうすればよいですか。 Safariで開く場合、リンクは次と同じです。
ありがとうございました。
以下に、Facebookアプリが使用するスキームをいくつか示します。ソースリンクにはさらに多くのスキームがあります。
NSURL *url = [NSURL URLWithString:@"fb://profile/<id>"];
[[UIApplication sharedApplication] openURL:url];
fb:// profile –ユーザーのプロファイルでFacebookアプリを開きます
fb:// friends – Facebookアプリをフレンドリストに開きます
fb:// notifications – Facebookアプリを通知リストに開きます(注:このURLにバグがあるようです。通知ページが開きます。ただし、他の場所に移動することはできません。 Facebookアプリで)
fb:// feed – Facebookアプリをニュースフィードに開きます
fb:// events –イベントページにFacebookアプリを開きます
fb:// requests – Facebookアプリをリクエストリストに開きます
fb:// notes – Facebookアプリをメモページに開きます
fb:// albums – Facebookアプリを開いてフォトアルバムリストに追加
このURLを開く前に、ユーザーがFacebookアプリを使用しているかどうかを確認する場合は、次のことを実行できます(以下の別の回答で説明します)。
if ([[UIApplication sharedApplication] canOpenURL:nsurl]){
[[UIApplication sharedApplication] openURL:nsurl];
}
else {
//Open the url as usual
}
https://graph.facebook.com/(your_username またはページ名)を使用してページIDを取得し、すべての拘留とIDを確認した後
IOSアプリの使用後:
NSURL *url = [NSURL URLWithString:@"fb://profile/[your ID]"];
[[UIApplication sharedApplication] openURL:url];
Yonixのコメントを回答として追加するために、古いfb://page/…
URLは機能しなくなりました。明らかに、ページはプロファイルではありませんが、fb://profile/…
に置き換えられたようです。
MonoTouchで次の方法でこれを行いました。純粋なObj-Cベースのアプローチでもそれほど違いはないと確信しています。 URLを時々変更するクラス内でこれを使用したため、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;
}
}
アプリがSafari/Facebookに変更される前にブレークが呼び出されるとは限りません。あなたのプログラムはそこで停止し、戻ってきたときに呼び出すと思います。
私は質問が古いことを知っていますが、上記の答えをサポートするために、作業コードを共有したいと思いました。これらの2つのメソッドを任意のクラスに追加するだけで、コードはfacebookアプリがインストールされているかどうかを確認し、インストールされていない場合はURLをブラウザーで開きます。 url(example、 http://www.facebook.com/AlibabaUS )をopenUrl:に渡すだけで、すべての魔法が実行されます。それが誰かを助けることを願っています!.
注:UrlUtilsは私にコードを提供していたクラスでした。ニーズに合わせて別のコードに変更する必要があるかもしれません。
+(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];
}
}
Swift
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)")
}
}
Facebookアプリケーションがログインしている場合、次のコードを実行するとページが開きます。コードの実行時にFacebookアプリケーションがログインしていない場合、ユーザーはFacebookアプリにリダイレクトされてログインし、接続後、Facebookはページにリダイレクトされません!
NSURL *fbNativeAppURL = [NSURL URLWithString:@"fb://page/yourPageIDHere"] [[UIApplication sharedApplication] openURL:fbNativeAppURL]
今日これを確認しましたが、Facebook pageを開こうとしている場合は、 "fb:// page/{Page ID}"
ページIDは、ページの下部にある[概要]セクションにあります。
私のユースケースに固有のXamarin.Formsでは、このスニペットを使用して、利用可能な場合はアプリで、それ以外の場合はブラウザーで開くことができます。
Device.OpenUri(new Uri("fb://page/{id}"));
これにより、SafariでURLが開きます。
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.facebook.com/comments.php?href=http://wombeta.jiffysoftware.com/ViewWOMPrint.aspx?WPID=317"]];
IPhoneの場合、fb://で始まるURLを使用してインストールすると、Facebookアプリを起動できます
詳細についてはこちらをご覧ください: http://iphonedevtools.com/?p=302 こちらもご覧ください: http://wiki.akosma.com/IPhone_URL_Schemes#Facebook
上記のサイトから盗まれた:
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
上記のURLを起動するには:
NSURL *theURL = [NSURL URLWithString:@"fb://<insert function here>"];
[[UIApplication sharedApplication] openURL:theURL];