作成中のアプリを使用して、Facebook で写真を共有しようとしています。
ユーザーが自分の iPhone にアプリをインストールしている場合、Web ブラウザーではなくアプリで画像リンクを開いてもらいます。その目的でアプリリンクを使用しています(http://applinks.org/documentation/)
すべて正常に動作します。ただし、ユーザーがアプリをインストールしていない場合、ブラウザーでリンクを開くことはできません。エラーは webParam から発生していると思います (以下を参照)。
何か案は ?
var iosParam = "[{\"url\" : \"\(urlScheme)\",\"app_name\" : \"AppName\"}]"
var webParam = "{\"url\" : \"https://www.facebook.com/myAppName\"}"
var param = [
"name" : "app link host",
"ios" : iosParam,
"web": webParam,
"access_token" : token
]
var fbRequest = FBSDKGraphRequest(graphPath: "/app/app_link_hosts", parameters: parameters, HTTPMethod: "POST")
fbRequest.startWithCompletionHandler { (connection: FBSDKGraphRequestConnection!, result: AnyObject!, error: NSError!) -> Void in
if error == nil{
let id:String = result["id"] as! String
let token:String = parameters["access_token"]! as! String
var param:[String: String] = ["access_token": token]
// get the canonical URL from the app link host ID
var requestCanonicalURL = FBSDKGraphRequest(graphPath: "/\(id)", parameters: param, HTTPMethod: "GET")
requestCanonicalURL.startWithCompletionHandler({ (connection: FBSDKGraphRequestConnection!, result: AnyObject!, error: NSError!) -> Void in
if error == nil {
self.share(result["canonical_url"] as! String)
}else{
NSLog("Error: %@", error)
}
})
}else{
NSLog("Error: %@", error)
}
}
share() 関数のコードの一部を次に示します。
var properties = [
"og:type": "appType:appType",
"og:title": "What do you think?",
"og:description": "This is a description",
"og:url": canonicalURL,
"og:image": [photo]
]
var object = FBSDKShareOpenGraphObject(properties: properties as [NSObject : AnyObject])
var action = FBSDKShareOpenGraphAction()
action.actionType = "appType:share"
action.setObject(object, forKey: "appObject:appObject")
var content = FBSDKShareOpenGraphContent()
content.action = action
content.previewPropertyName = "previewPropertyName:previewPropertyName"
FBSDKShareDialog.showFromViewController(self, withContent: content, delegate: nil)