iOS 앱에서 Facebook 페이지 링크 열기
사용자를 내 앱의 Facebook 페이지로 리디렉션하고 싶어서 다음 코드가 있습니다.
[[UIApplication sharedApplication] openURL:
[NSURL URLWithString: @"https://facebook.com/myAppsPage"]];
장치에 Facebook 앱이 없으면 잘 작동합니다. 그런 다음 링크가 Safari에서 열립니다.
기기에 Facebook 앱이 설치된 경우 위의 코드를 실행하면 Facebook 앱이 열리지 만 내 앱 페이지가 아닌 사용자 타임 라인이 표시됩니다. @"fb://pages/myAppsPage"
및에 대한 링크를 변경하려고했지만 @"fb://profile/myAppsPage
사용자 타임 라인이 다시 열렸습니다.
그래서 제 질문은, Facebook 앱이없는 경우 safari에서, 또는 설치된 경우 Facebook 앱에서 내 앱 페이지를 열 수있는 방법입니다.
가상 URL 대신 주어진 페이지에 대한 페이스 북 ID를 사용해야합니다. 페이지 ID를 얻으려면 다음 URL에 페이지의 가상 이름을 입력하고 "id"값을 복사하십시오.
https://graph.facebook.com/yourappspage
ID가 있으면 canOpenURL 메서드를 사용하여 FB가 설치되었는지 확인하고 두 상태에 대해 적절한 콘텐츠를 제공하는 메서드를 설정할 수 있습니다.
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"]];
}
마지막 답변 이후 Facebook이 페이지 구성표를 변경 한 것 같습니다 (프로필은 이전과 동일합니다)
는 page_id
이제 URL 쿼리의 일부입니다. 따라서 fb 앱으로 리디렉션하려면 URL이 다음 형식이어야합니다.
fb://page/?id=your_page_numeric_id
또한 fb
앱에서 스키마 를 허용 해야합니다.Info.plist
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fb</string>
</array>
추가 수정 사항이 있거나 페이스 북 페이지를 모르는 경우 페이스 북 웹 페이지 소스에서 page_id
정확한 iOS fb
URL을 추출 할 수 있습니다 .
- Safari에서 Facebook 페이지 열기
- 오른쪽 클릭-> 요소 검사
- 검색
al:ios:url
다음을 찾을 수 있어야합니다.
<meta property="al:ios:url" content="fb://page/?id='your_page_numeric_id'">
이 URL을 앱에 복사 한 다음 다음을 호출합니다.
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)
}
해야 할 일 ...
나는 skladek의 대답을 찾아서 기뻤습니다. 그래서 여기에 내 기여가 있습니다 : Swift + 다른 소셜 네트워크.
저는 트위터에 슬래시 3 개가 필요하고 Facebook과 Google+에 2 개만 필요하다는 것을 알게되었습니다. 그 이상은 조사하지 않았습니다.
// 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")!)
}
}
리팩토링 시도 :
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()
}
}
이제 다음을 호출 할 수 있습니다.
SocialNetwork.Twitter.openPage()
iOS 9의 경우 Info.plist의 LSApplicationQueriesSchemes 키를 사용하여 앱에서 호출 할 URL을 화이트리스트에 추가해야합니다.
<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>
많은 테스트 후 가장 효과적인 솔루션 중 하나를 찾았습니다.
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]);
}
"다른 경우"문장의 순서는 취향에 따라 다릅니다.
그것을 즐기십시오 !! :-)
스위프트 2.3
코드의 경우 다음 예제를 사용할 수 있습니다.
참고 : 페이스 북 프로필 ID를 찾을 수없는 경우 팔로우 사이트를 사용하여 수행 할 수 있습니다 ( 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")!)
}
}
Info.plist의 경우 다음 매개 변수를 설정해야합니다.
Note: For open the Info.plist on Source Mode
-Go to Info.plist file and click right
-Select "Open As"
-Select "Source Code"
-Put code above of another
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fb</string>
<string>fbapi</string>
<string>fbauth2</string>
<string>fbshareextension</string>
<string>fb-messenger-api</string>
</array>
참고URL : https://stackoverflow.com/questions/16589367/open-link-to-facebook-page-from-ios-app
'Development Tip' 카테고리의 다른 글
파이썬에서 문자가 대문자인지 확인하는 방법은 무엇입니까? (0) | 2020.11.10 |
---|---|
Rails 마이그레이션에서 한 열을 다른 열의 값으로 업데이트 (0) | 2020.11.10 |
{merge : true}를 사용한 세트와 업데이트의 차이점 (0) | 2020.11.09 |
페이지로드 후 jquery 코드를 수행하는 방법은 무엇입니까? (0) | 2020.11.09 |
Mongoid 설치 후 액티브 레코드 생성기를 사용하십니까? (0) | 2020.11.09 |