#ios #swift #facebook #fbsdksharekit
#iOS #swift #Facebook #fbsdksharekit
Вопрос:
Я использую — FBSDKShareKit (4.40.0): я хочу поделиться изображением на facebook. Он должен быть доступен для нажатия и открывать веб-сайт точно так же, как это делает приложение Endomondo.
Я пробовал этот код, но URL-адрес закрывает фотографию, и они не отображаются:
let sharePhoto = FBSDKSharePhoto()
sharePhoto.image = someImage
let content = FBSDKSharePhotoContent()
content.photos = [sharePhoto];
content.contentURL = URL(string: "https://facebook.com")!
FBSDKShareDialog.show(from: self, with: content, delegate: nil)
Как они это делают?
Комментарии:
1. То, на что вы смотрите, изначально не похоже на общий доступ к фотографии — скорее всего, это просто общая ссылка , заголовок, описание и миниатюра которой указаны с помощью мета-тегов OG.
Ответ №1:
Используйте это, чтобы поделиться на Facebook
импорт социальных
func shareToFb(_ yourImage:UIImage!)
{
let facebookURL = URL(string: "fb://")
if (UIApplication.shared.canOpenURL(facebookURL!)) {
let vc = SLComposeViewController(forServiceType:SLServiceTypeFacebook)
vc?.add(yourImage)
vc?.setInitialText("Initial text here.")
self.present(vc!, animated: true, completion: nil)
}
else {
let urlStr = "https://itunes.apple.com/us/app/workplace-by-facebook/id944921229?mt=8"
if #available(iOS 10.0, *) {
UIApplication.shared.open(URL(string: urlStr)!, options: [:], completionHandler: nil)
} else {
UIApplication.shared.openURL(URL(string: urlStr)!)
}
}
}
Ответ №2:
Похоже, что @04FS правильный. Это всего лишь og: изображение. Они отправляют изображение на сервер, а затем генерируют страницу с тегами html meta og. (Между ними есть перенаправление, поэтому для меня это не было очевидно)
<meta property="fb:app_id" content="202423869273" />
<meta property="al:ios:url" content="endoapp://workouts" />
<meta property="al:ios:app_store_id" content="333210180" />
<meta property="al:ios:app_name" content="Endomondo Sports Tracker" />
<meta property="al:android:class" content="com.endomondo.android.EndoSplash" />
<meta property="al:android:package" content="com.endomondo.android" />
<meta property="al:android:app_name" content="Endomondo Sports Tracker" />
<meta property="og:type" content="endoapp:workout" />
<meta property="og:url" content="https://www.endomondo.com/users/11394222/workouts/1278713145?country=plamp;lang=enamp;measure=metric" />
<meta property="og:title" content="0.02 km run" />
<meta property="og:description" content="(brak nazwy) ran 0.02 km using Endomondo." />
<meta property="og:locale" content="en_US" />
<meta property="og:site_name" content="Endomondo" />
<meta property="og:determiner" content="auto" />
<meta property="og:image" content="https://www.endomondo.com/resources/gfx/image/69040478/06074879f4cd011f6b7b8cfa028e146b/big.jpg" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="endoapp:duration" content="38" />
<meta property="endoapp:distance" content="0.02" />
<meta property="endoapp:sport" content="https://www.endomondo.com/facebook/sport/0?country=plamp;lang=enamp;measure=metric" />
<meta property="endoapp:unit" content="km" />
<meta property="endoapp:maxspeed" content="6.4" />
<meta property="endoapp:avgspeed" content="1.5" />
<meta property="endoapp:avg_speed" content="39:16" />
<meta property="endoapp:avg_speed_unit" content="min/km" />
<meta property="endoapp:calories" content="2" />
<meta property="endoapp:route:latitude" content="54.19036" />
<meta property="endoapp:route:longitude" content="16.17868" />
<meta property="endoapp:route:altitude" content="0.01" />
<meta property="endoapp:route:latitude" content="54.19023" />
<meta property="endoapp:route:longitude" content="16.17856" />
<meta property="endoapp:route:altitude" content="0.01" />