FACEBOOK.md 2.6 KB

Facebook iOS 接入(Creator 3.8.x)

实现初始化、Limited Login、登出、链接分享、自定义事件、购买事件和事件刷新。 TypeScript 的 FBIOSImpl 与 Android 共用 FBNativeImpl 请求桥;原生由 service/FBWrapper.mm 实现。 AppDelegate 直接持有 FBWrapper 单例,无需在 service.json 再次注册。

在 Mac 上构建

  1. 在 Creator iOS 构建面板的「SDK 管理 → Facebook」勾选启用,填写 App ID、Client Token 和自动事件选项,构建并生成 Xcode 工程。 插件更新源 Info.plist 的凭据、fb URL Scheme 及查询白名单。Xcode 工程生成必须在这些配置写入之后。
  2. 安装 CocoaPods 后,在本目录执行(替换为生成工程的实际绝对路径):

    COCOS_IOS_PROJECT="/absolute/path/game_2c.xcodeproj" pod install
    
  3. 若 target 改名,额外设置 COCOS_IOS_TARGET="实际 target 名"。 SDK 固定为 18.1.1(CoreKit/LoginKit/ShareKit),最低 iOS 12。

    1. 打开生成工程旁的 FacebookGame.xcworkspace,设置签名,在 iPhone 上运行。 Creator 重新生成 Xcode 工程后,重新执行 pod install;不要只打开 xcodeproj。
    2. 在 Meta 后台增加 iOS 平台,Bundle ID 必须与实际包一致;开发模式账号须有应用角色/测试权限。

    当前 Windows 环境未进行 Xcode 编译、CocoaPods 安装或真机验证。

    登录结果与后端

    默认使用 Limited Login,不主动请求 ATT,不开启广告追踪。 成功时 status === 'connected',返回 authenticationToken(JWT)、nonce、tokenType: 'authentication';accessToken 为空。 服务端需要验证 Meta JWT 的签名、issuer、audience(App ID)、有效期和 nonce,并做防重放处理。 不能把 JWT 直接交给现有只接受 Graph API Access Token 的接口;业务登录接口需支持此类令牌后才能完成服务器登录。 当前没有修改业务登录接口或 TrackEvents.ts。

    验证清单

    • 初始化失败能返回配置错误;正常初始化后 isInitialized 为 true。
    • 真机登录成功/取消/失败;浏览器或 Facebook App 返回游戏;登出后可再次登录。
    • 链接分享成功/取消/失败;重复操作被拒绝。
    • Meta 测试事件里检查 logEvent、logPurchase 和 flushEvents;返回 true 仅代表本地 SDK 接受调用。
    • 自动应用事件由 FacebookAutoLogAppEventsEnabled 控制;手动事件仍由业务显式调用。
    • 重复构建及修改 App ID 后检查 Info.plist URL Scheme,其他 SDK Scheme 应保留。

    依赖来源:https://github.com/facebook/facebook-ios-sdk/tree/v18.1.1