ios facebook 升级到最新版本 17.0.0

项目由 Objective-C 写成,而 facebook 新 sdk 由 swift 写的。

需要用到混编。

官网地址:Facebook-ios-sdk

1. 导入库

按官网文档说的做就行。

填入地址:GitHub - facebook/facebook-ios-sdk: Used to integrate the Facebook Platform with your iOS & tvOS apps.。

添加目标要选,不然不能用。如果没有选,重新加也就可以。

添加成功后,这里可以看到。需要删除也在这里删除。

2.项目设置

建一个空的 .swift 文件,让项目支持 swift 混编。

facebook 用到的 framework 给加上:

AuthenticationServices.framework、SafariServieces.framework

解决引用错误:

3.加代码

引用头文件,AuthenticationServices,SafariServices 需要先加,不然 sdk 编译报错。FBSDKAccessToken.h, FBSDKAuthenticationToken.h 需要用 include,不然找不到。

复制代码
#import <AuthenticationServices/AuthenticationServices.h>
#import <SafariServices/SafariServices.h>
#import <FBSDKCoreKit/FBSDKCoreKit-Swift.h>
#import <FBSDKLoginKit/FBSDKLoginKit-Swift.h>
#include <FBSDKCoreKit/FBSDKAuthenticationToken.h>
#include <FBSDKCoreKit/FBSDKAccessToken.h>

初始化 sdk:

复制代码
- (void)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[FBSDKApplicationDelegate sharedInstance] application:application
                             didFinishLaunchingWithOptions:launchOptions];
    
    [FBSDKApplicationDelegate.sharedInstance initializeSDK];
    ...
}

+(NSString*) getPushKeyDeviceToken{
    return [TxApnsProxy getDeviceToken];
}
- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
            options:(nonnull NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
    ...
    if ([[FBSDKApplicationDelegate sharedInstance] application:application openURL:url options:options]) {
      return YES;
    }
    return YES;
}

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(nullable NSString *)sourceApplication
         annotation:(nonnull id)annotation
{
    ...
    [[FBSDKApplicationDelegate sharedInstance] application:application
                                                   openURL:url
                                         sourceApplication:sourceApplication
                                                annotation:annotation];
    return YES;
}

登录调用:

注意调用登录模式:

FBSDKLoginConfiguration 中 tracking 为 FBSDKLoginTrackingLimited 时,result.token 会是空的。但是 result.authenticationToken 会有值。

复制代码
@property(nonnull,strong) FBSDKLoginManager* fbLogin;
@synthesize fbLogin = _fbLogin;

-(void) init
{
    // 初始化的时候加
    self.fbLogin = [FBSDKLoginManager new];
}

-(void) login
{
    FBSDKLoginConfiguration *configuration = [[FBSDKLoginConfiguration alloc] initWithPermissions:@[@"public_profile", @"email"]
                                                  tracking:FBSDKLoginTrackingEnabled
                                                     nonce:@"123"];
    [self.fbLogin logInFromViewController:[u8sdk (GetViewController)]
                            configuration:configuration
                               completion:^(FBSDKLoginManagerLoginResult * result, NSError *error) {
      if (!error && !result.isCancelled) {
          // Login successful-把 toekn 给服务器校验
          NSDictionary *callbackDict = [NSDictionary dictionaryWithObjectsAndKeys:result.token.tokenString, @"token", nil];
          [self (eventUserLogin):callbackDict];
      } else {
          NSDictionary *callbackDict = [NSDictionary dictionaryWithObjectsAndKeys:@"1", @"error", nil];
          [self (eventUserLogin):callbackDict];
      }
    }];
}
相关推荐
传奇开心果编程3 小时前
【Flutter踩坑排雷】第7课:巨型 build 函数坑|全部 UI 写在同一个 build,维护难、隐性异常
android·flutter·ios·移动开发·跨平台·dart·声明式ui
瓦瓦gogo7 小时前
第一次了解 iOS 开发:从 Swift、SwiftUI 到公共组件
ios·swiftui·swift
Peter_198 小时前
如何联系 Facebook 支持?商家版有效渠道与申诉指南
facebook
Liben11 小时前
Weex开发踩坑记录
android·前端·ios
season_zhu13 小时前
Skills For Real Engineers 系列之三:需求聊清楚了,怎么一步步走主流程,做到交付?
ios·ai编程
茶底世界之下13 小时前
窗边花瓶太暗?用 Awaking 看提亮室内的代价
ios
2501_9159090614 小时前
Windows 上用 VS Code 调试 iPhone 真机 App,KXBuild 断点、崩溃定位实操
ide·windows·vscode·ios·iphone·个人开发·敏捷流程
2501_916007471 天前
抓包工具功能对比,TraceEagle、Charles、Fiddler、Wireshark、mitmproxy 差别
前端·网络协议·ios·adb·https·fiddler·wireshark
2501_915106321 天前
Windows 上开发 Unity iOS,使用 KXBuild 进行真机调试、性能采样与打包 ipa
windows·vscode·unity·ios·个人开发·swift·敏捷流程
柚鸥ASO优化2 天前
iOS 27.2 更新后,App Store 广告展示逻辑出现新变化
ios