Facebook 分享 iOS Swift

Posted

技术标签:

【中文标题】Facebook 分享 iOS Swift【英文标题】:Facebook Share iOS Swift 【发布时间】:2016-05-22 16:06:32 【问题描述】:

我正在尝试在我的 ios 应用中使用 Facebook 分享 SDK。

我按照 Facebook 开发者网站中的步骤进行操作。但我有一个问题,问题是 Facebook 没有在我的应用发布的帖子上显示应用名称,如下面的屏幕截图所示。

我在日志中有一些错误:

-canOpenURL:URL 失败:“fbapi20150629:/” - 错误:“此应用不允许查询方案 fbapi20150629”

插件 com.apple.share.Facebook.post 无效

但是照片分享没有任何问题,唯一的问题是分享的帖子上没有应用名称。

但在分享 ContentLink 时,我在帖子上看到了应用名称,但它不适用于照片!!

这是我在 iOS 中分享的代码:

let image = UIImage(data:imageData!)
let content: FBSDKSharePhotoContent = FBSDKSharePhotoContent()
let photo: FBSDKSharePhoto = FBSDKSharePhoto()
photo.image = image
photo.userGenerated = true
content.photos = [photo]
FBSDKShareDialog.showFromViewController(self, withContent: content, delegate: nil)

info.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>fr_FR</string>
    <key>CFBundleExecutable</key>
    <string>$(EXECUTABLE_NAME)</string>
    <key>CFBundleIdentifier</key>
    <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>$(PRODUCT_NAME)</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>1.3.0</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>1</string>
    <key>LSApplicationCategoryType</key>
    <string></string>
    <key>NSAppTransportSecurity</key>

    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    <key>UIAppFonts</key>
    <array>
        <string>master_of_break.otf</string>
    </array>
    <key>UIBackgroundModes</key>
    <array>
        <string>remote-notification</string>
    </array>
    <key>UILaunchStoryboardName</key>
    <string>LaunchScreen</string>
    <key>UIMainStoryboardFile</key>
    <string>Main</string>
    <key>UIRequiredDeviceCapabilities</key>
    <array>
        <string>armv7</string>
    </array>
    <key>UIStatusBarStyle</key>
    <string>UIStatusBarStyleLightContent</string>
    <key>UISupportedInterfaceOrientations</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
    </array>
    <key>UISupportedInterfaceOrientations~ipad</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
        <string>UIInterfaceOrientationPortraitUpsideDown</string>
        <string>UIInterfaceOrientationLandscapeLeft</string>
        <string>UIInterfaceOrientationLandscapeRight</string>
    </array>
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>fb100967589******</string>
            </array>
        </dict>
    </array>
    <key>FacebookAppID</key>
    <string>100967589******</string>
    <key>FacebookDisplayName</key>
    <string>Athéna</string>
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>fbapi</string>
        <string>fb-messenger-api</string>
        <string>fbauth2</string>
        <string>fbshareextension</string>
    </array>
</dict>
</plist>

帖子与应用名称共享(适用于 android

【问题讨论】:

请分享您的 info.plist 文件 【参考方案1】:

为什么不使用 Social Framework 来实现呢?它很容易实现和显示文本、url、照片。

您只需按照以下步骤操作:- 1) 转到您的应用程序 -> 构建阶段

2) 点击 Link Binary with Libraries 并添加 Social framework

3) 在您的视图控制器中导入 &lt;Social/Social.h&gt;

4) 在您的分享操作中编写以下代码:-

if  SLComposeViewController.isAvailableForServiceType(SLServiceTypeFacebook)

    let fbShare = SLComposeViewController(forServiceType: SLServiceTypeFacebook)
    fbShare.setInitialText("Swift programming")
    fbShare.addURL(NSURL(string: filePath)) 
    fbShare.addImage(UIImage(named:"ImageName")) 

    self.presentViewController(fbShare, animated: true, completion: nil)

否则,您可以按照以下链接进行集成:-

http://www.theappguruz.com/blog/facebook-integration-using-swift

要显示您的应用链接,请参考:-

https://developers.facebook.com/docs/applinks/ios

【讨论】:

【参考方案2】:

将以下项目添加到您的 info.plist

【讨论】:

以上是关于Facebook 分享 iOS Swift的主要内容,如果未能解决你的问题,请参考以下文章

从 iOS 在 Facebook 上分享

通过Facebook Native app - iOS Facebook SDK分享时,“引用”缺失

Facebook 分享 iOS Swift

通过 Facebook 分享深度链接到 iOS 应用

iOS Facebook 分享问题

iOS 8 Facebook 分享链接、图片和文字