iOS Facebook分享

一、創(chuàng)建Facebook的應(yīng)用
https://developers.facebook.com
1、點(diǎn)擊我的應(yīng)用

image.png

2、點(diǎn)擊創(chuàng)建應(yīng)用
image.png

3、選擇應(yīng)用類型
image.png

4、填寫應(yīng)用名稱,聯(lián)系郵箱
image.png

5、填寫基本信息,隱私權(quán)政策網(wǎng)址,數(shù)據(jù)刪除回調(diào)地址等
image.png

6、添加平臺(tái),是iOS的要選擇iOS,安卓的選擇安卓平臺(tái)
image.png

image.png

7、添加成功后,iOS的需要把Bundle id填寫進(jìn)去,必需要和項(xiàng)目里的填寫一致,然后保存,并且應(yīng)用模式的開關(guān)需要打開
image.png

二、項(xiàng)目配置
1、項(xiàng)目中通過pod集成SDK,手動(dòng)集成也可以

pod 'FBSDKCoreKit'
pod 'FBSDKShareKit'

2、在info.plist文件中添加以下代碼:

<key>FacebookAppID</key>
    <string>應(yīng)用編號(hào)</string>
    <key>FacebookClientToken</key>
    <string>應(yīng)用密鑰</string>
    <key>FacebookDisplayName</key>
    <string>app名稱</string>
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLName</key>
            <string>com.clatia.plamclati</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>fb應(yīng)用編號(hào)</string>
            </array>
        </dict>
    </array>
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>fbapi</string>
        <string>fb-messenger-api</string>
        <string>fb-messenger-share-api</string>
        <string>fbauth2</string>
        <string>fbshareextension</string>
    </array>

3、在Appdelegate中,導(dǎo)入#import <FBSDKCoreKit/FBSDKCoreKit.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
    return YES;
}

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options{
    BOOL result = [[FBSDKApplicationDelegate sharedInstance] application:app openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
    return result;
}

4、在進(jìn)行分享的地方處理邏輯

FBSDKShareLinkContent*linkContent = [[FBSDKShareLinkContent alloc]init];
linkContent.contentURL= [NSURL URLWithString:@"分享鏈接"];
linkContent.quote = @"描述信息";
    
FBSDKShareDialog *shareDialog = [[FBSDKShareDialog alloc]init];
// 需要指定模式,否則會(huì)調(diào)起web分享
shareDialog.mode = FBSDKShareDialogModeNative;
if (![shareDialog canShow]) {
    shareDialog.mode = FBSDKShareDialogModeWeb;
}
shareDialog.shareContent = linkContent;
shareDialog.delegate = self;
shareDialog.fromViewController = self;
[shareDialog show];

5、實(shí)現(xiàn)代理方法
分享后代理方法總是回調(diào)到sharerDidCancel,有知道原因和解決方法的小伙伴麻煩告知下

#pragma mark - FBSDKSharingDelegate
- (void)sharer:(id<FBSDKSharing>)sharer didCompleteWithResults:(NSDictionary<NSString *,id> *)results {
    NSString *postId = results[@"postId"];
    FBSDKShareDialog *dialog = (FBSDKShareDialog *)sharer;
    if (dialog.mode == FBSDKShareDialogModeBrowser && (postId == nil || [postId isEqualToString:@""])) {
        // 如果使用webview分享的,但postId是空的,
        // 這種情況是用戶點(diǎn)擊了『完成』按鈕,并沒有真的分享
        NSLog(@"Cancel");
    } else {
        NSLog(@"Success");
    }
}

- (void)sharer:(id<FBSDKSharing>)sharer didFailWithError:(NSError *)error {
    FBSDKShareDialog *dialog = (FBSDKShareDialog *)sharer;
    if (error == nil && dialog.mode == FBSDKShareDialogModeNative) {
        // 如果使用原生登錄失敗,但error為空,那是因?yàn)橛脩魶]有安裝Facebook app
        // 重設(shè)dialog的mode,再次彈出對話框
        dialog.mode = FBSDKShareDialogModeBrowser;
        [dialog show];
    } else {
        NSLog(@"Failure");
    }
}

- (void)sharerDidCancel:(id<FBSDKSharing>)sharer {
    NSLog(@"Cancel");
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容