11/08/2024 16:35:54
Facebook 渠道说明
一、开发者平台配置
1.1 注册账号
1)注册Facebook账号
请到 Facebook官网 注册账号,并根据提示完成账号认证( Email 或者手机认证)。
2)激活开发者账号
有了 Facebook 账号之后,浏览器中打开 Facebook 开发者中心,激活开发者账号。
同意协议并继续:
3)手机验证
4)完成注册
1.2 新建应用
1)点击右上角菜单栏,新增 App
2)使用基础配置
选择 Android 或 iOS 都是可以的,配置方式也基本一致,这里不做叙述
3)填写基本信息
注意 App 类型要选择游戏(Game)
4)完成验证后,就成功创建 App
1.3 配置应用
1)Add Platform
在 Faceboook App 管理端,点击 Settings 菜单,可以看到 App 的基础信息,并点击 “Add Platform” 添加应用平台
新增 Android、iOS 平台(根据需要选择)
2)添加对应的配置
可以直接填写,也可以通过点击平台配置右上角的 “Quick Start” 按照指引进行配置
1.4 添加用户权限
确认(添加)测试权限,在应用发布之前,只有添加到权限列表或测试用户才能有权限使用 Facebook 相关功能
1.5 配置 MSDK 后台
游戏侧 Facebook app 申请完成以后,需要找到 MSDK 后台配置;
二、Android工程配置
2.1 通用工程配置
1)权限配置
在AndroidManifest.xml中新增网络访问权限
<uses-permission android:name="android.permission.INTERNET"/>
2)Activity配置
在Application节点中添加如下配置,其中值为字符串类型
<activity android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name" />
3)APP ID 配置
在工程的 assets/MSDKConfig.ini 文件中添加以下配置
[Facebook 渠道配置]
FACEBOOK_APP_ID = {YOUR_FB_APP_ID}
FACEBOOK_DISPLAYNAME = {YOUR_APP_NAME}
[info] 替换 {YOUR_FB_APP_ID} 为业务申请的 APP ID , {YOUR_APP_NAME} 为应用显示名称。
4)ContentProvider 配置
在 Application 节点下,添加如下 provider 配置
<provider android:authorities="com.facebook.app.FacebookContentProvider{YOUR_FB_APP_ID}"
android:name="com.facebook.FacebookContentProvider"
android:exported="true"/>
[info] {YOUR_FB_APP_ID} 这串数字需要改成 Facebook 的 AppID.
5)【可选配置】Facebook APP ID 配置
默认情况下 MSDK 会读取 MSDKConfig.ini
中的 FACEBOOK_APP_ID
作为 Facebook APP ID,这种方式由业务第一次调用 Facebook 相关服务时进行初始化。
但是默认的方式:
- 使用了 Facebook 不再推荐的初始化方法
- 可能会出现进行 Facebook 登录时,Facebook 未完成初始化,进而导致登录失败
如果游戏希望避免这种问题,并且不介意 Facebook 在游戏启动时就进行初始化。那么可以添加如下配置,并在 strings.xml
中增加 facebook_app_id
元素,facebook_app_id
需要填写为业务申请的 APP ID。
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
三、iOS工程配置
3.1 MSDKConfig 配置文件
在工程中找到 MSDKAppSetting.bundle/MSDKConfig.ini 文件,增加如下配置
[Facebook 渠道配置]
FACEBOOK_APP_ID = {YOUR_FB_APP_ID}
FACEBOOK_DISPLAYNAME = {YOUR_APP_NAME}
[info] 替换 {YOUR_FB_APP_ID} 为业务申请的 APP_ID ,{YOUR_APP_NAME} 为应用显示名称。
3.2 Xcode 工程配置文件 info.plist
找到或新建如下节点:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>Facebook</string>
<key>CFBundleURLSchemes</key>
<array>
<string>fb{your_facebook_app_id}</string>
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fb-messenger-api</string>
<string>fbshareextension</string>
<string>fbauth2</string>
<string>fb-messenger-share-api</string>
<string>fbapi</string>
<string>fb</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>FacebookClientToken</key>
<string>{your_facebook_client_token}</string>
其中,{your_facebook_app_id} 需要修改为游戏申请的 Facebook AppID。{your_facebook_client_token} 需要修改为游戏自己的 Facebook Client token。注意 FacebookClientToken 是必配项,未配置会发生崩溃,
3.3 Unity XUPoter 的 xx.projmods 文件的配置
Unity 导出 XCode 工程时,需要配置 projmods 文件,使得导出的 XCode 工程能得到 3.2 的配置
{
"group": "MSDKFacebook",
"libs": [],
"frameworks": [],
"files": [],
"folders": [],
"excludes": [],
"headerpaths":[],
"build_settings":{},
"system_capabilities": {},
"Info.plist":{
"LSApplicationQueriesSchemes":
[
"fb-messenger-api",
"fbshareextension",
"fbauth2",
"fb-messenger-share-api",
"fbapi",
"fb",
],
"CFBundleURLTypes" :
[
{
"CFBundleTypeRole":"Editor",
"CFBundleURLName":"Facebook",
"CFBundleURLSchemes":["fb{Facebook_APPID}"]
}
]
},
}
其中,{Facebook_APPID} 需要修改为游戏申请的 Facebook AppID
3.4 MSDK V5.15 及之后的版本,需要处理 UnrealEngine 的 Swift 和 Objective-C 混编问题
四、功能说明
4.1 登录功能
Facebook 无需安装 APP 就可以登录
- iOS 登录会拉起 Web 界面,如果有安装 Facebook App,则弹窗提醒使用 APP 进行登录;如果用户取消,或者手机未安装 Facebook App,则继续使用 Web 界面进行登录
- Android 如果有安装 APP,会拉起 APP 进行登录,否则也会拉起 Web 界面进行登录
[info] 由于 Rom 问题 Android 在部分手机上,刚安装 FaceBook 是不会拉起 APP 进行登录的,需要启动一次后再启动游戏解决。
4.2 好友功能
[danger] Facebook 不再支持发送消息到 Messenger,故 MSDK 不再维护 Facebook sendMessage 接口,请项目组谨慎调用。
Facebook 相关文档:https://developers.facebook.com/docs/sharing/messenger
支持类型列表
序号 | 功能 | 必填字段 | 所需APP和登陆状态 |
---|---|---|---|
1 | 发送 - 链接 | link | 不再支持 |
2 | 发送 - 图片 | imagePath | 不再支持 |
3 | 发送 - 游戏邀请 | - | 不再支持 |
4 | 分享 - 链接 | link | 无需下载Facebook,但本地无APP时需登陆 |
5 | 分享 - 图片 | imagePath | 需本地安装Facebook APP |
6 | 分享 - 游戏邀请 | - | - |
[info] 注意
- 图片可以是本地图片和网络图片,网络图片不会保存到本地;
- 游戏邀请时,在拉起的邀请界面只能搜索到非游戏好友;
- Facebook调整了分享链接的策略,发消息和分享链接时,Title、content、imagePath字段均不再生效;
- 因Facebook接口调整及MSDK策略调整,不再支持queryFriends、addFriend、批量邀请非同玩好友等功能;
- 支持批量邀请同玩好友功能,需要在
ExtraJson
中将inviteType
设置为batch
,并将好友 ID 以数组形式填写到userList
中;- 分享链接时链接不可为空;
- 邀请好友时
Title
、Desc
不可以为空;- 邀请好友成功后,用户邀请的好友列表将以数组的形式填入
ExtraJson
,对应的 key 为RequestRecipients
;- 分享时可以指定需要 @ 的好友,需要将需要 @ 的好友以数组形式填入
ExtraJson
中的friends
字段;
4.3 事件上报
- 数据上报请参考 事件上报模块。
4.4 数据查询
上报结果可以在 Facebook 事件上报管理端 上,对应的应用查看。
[info] 注意
- 调用事件上报接口,上报的事件会有一定程度的延迟(跟网络环境、Facebook 侧网络波动等因素有关),所以经常会出现有上报事件名称,但是没有详细数据的情况,这个是正常现象,一般建议收到上报成功的回调后半小时左右再查看。
五、常见问题
5.1 Facebook 的邀请功能(即 GameRequest)注意事项:
- 避免频繁发送邀请,否则可能会导致邀请收不到;
- 有一定的时间延时;
- Facebook 管理端可以屏蔽消息;
- 如果 Facebook App 尚未发布,被邀请人也需要有测试权限才能收到邀请;
- 测试过程中,尽量使用测试号,避免上述问题;
5.2 iOS 更新 Facebook SDK 17.0.1 版本注意事项(重要)
Facebook iOS SDK 升级至 v17.0.1 后,登录逻辑与苹果 ATT 框架绑定,可能会影响到获取用户信息、好友列表等能力,具体情况见说明文档: MSDK 关于升级 Facebook iOS SDK V17.0.1 升级重要变更通知
All rights reserved.