# 客户端 FAQ(国内)
# Android 相关
# gradle 版本以及Android 编译版本相关问题:
- AAPT: error: attribute android:requestLegacyExternalStorage not found
- 解决:升级工程的编译版本到>=29
# Unity游戏相关:
游戏拉起登录等弹框后回到后台 或从三方登录取消登录 再切回游戏 游戏黑屏问题解决办法
https://cloud.tencent.com/developer/article/1761950
sdk弹框内的输入框内容在输入时显示不全的问题解决办法:
检查AndroidManifest.xml的主activity是否设置了关闭硬件加速开关。是的话则开启即可:
android:hardwareAccelerated="true"
Unity安卓隐私政策合规修改,如何解决APP一打开,就会自动获取安卓ID的问题?
参考:https://zhuanlan.zhihu.com/p/651879300
# gshare的录屏功能配置项:
在低版本的android工程中编译时有报错:attribute android:foregroundServiceType not found
- 如果游戏使用的targetVersion 版本<=28 则不用设置该项属性
- 如果游戏使用的targetVersion 版本>=29 则修改 compileSdkVersion 版本>=29即可
出包时报错重复库:Duplicate class androidx.XXX found in modules XXX.jar (androidx.XXX) and XXX(android-support-v4.jar)
gradle.properties中关闭androidX :
android.useAndroidX=false
android.enableJetifier=false
# iOS 相关
# 问题1.接口调用之后没有回调
常见原因1
调用接口的对象在调用之后被内存被释放,导致没有回调。建议此类写成单例,以下单例常规写法
static Singleton* _instance = nil;
+ (instancetype)shareInstance {
static dispatch_once_t onceToken ;
dispatch_once(&onceToken, ^{
_instance = [[super allocWithZone:NULL] init] ;
//不是使用alloc方法,而是调用[[super allocWithZone:NULL] init]
//已经重载allocWithZone基本的对象分配方法,所以要借用父类(NSObject)的功能来帮助出处理底层内存分配的杂物
}) ;
return _instance ;
}
//用alloc返回也是唯一实例
+(id) allocWithZone:(struct _NSZone *)zone {
return [Singleton shareInstance] ;
}
//对对象使用copy也是返回唯一实例
-(id)copyWithZone:(NSZone *)zone {
return [Singleton shareInstance] ;//return _instance;
}
//对对象使用mutablecopy也是返回唯一实例
-(id)mutableCopyWithZone:(NSZone *)zone {
return [Singleton shareInstance] ;
}
@end
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 问题2.微信三方登陆过程中,游戏打开微信 微信提示: 微信登录失败,由于应用Universal link校验不通过,无法完成微信登录
常见原因1
微信后台没有正确配置universal link (1.https的链接,以“/”结尾 2.是一个网站根目录 例如 https://https://gpop.sdo.com/)
常见原因2
apple-app-site-association没有正确配置在链接根目录(1.要求打开网站可以直接显示apple-app-site-association文件内容,下载apple-app-site-association文件不行,2.手机打开网站主页会出现app图标以及“打开”字样)
# 问题3.微信三方登陆过程中,游戏打开微信,在微信中点击授权之后返回游戏,游戏停留在登陆页面没有反应
常见原因1
Appdelegate中缺少微信回调的方法
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
return [[GHomeAPI sharedGHome] application:application continueUserActivity:userActivity restorationHandler:restorationHandler];
}
2
3
# 问题4.dyld: Library not loaded: @rpath/ghome_sdk.framework/ghome_sdk
Referenced from: /private/var/containers/Bundle/Application/90A67208-F713-45FC-BEBB-EAF1E8839DD9/ghome-demo.app/ghome-demo
Reason: image not found
常见原因1
Embed属性没有设置成EMbed& Sign (ghome_sdk.framework需要添加进General->Framework, Libraries,and Embedded Content中 并且Embed属性为 Eembed & Sign 参考 3.2)
常见原因2
XCode版本号与GhomeSDK打包使用的XCode版本不一致(sdk打包文件名中有对应的XCode对应版本)
常见原因3
always Embed Swift standard Libraries 属性没有设置成YES (选中 target 中的 一个target 在build settings 中搜索 swift 会出现 always Embed Swift standard Libraries 设置为yes)
常见原因4
ghome_sdk所在目录与游戏项目中所配制路径不相同(一般是脚本拷贝文件时候出错,导致所要使用的sdk版本没有正确复制到对应的目录中)
# 问题5. sdk初始化成功,调用登陆接口,没有弹出登陆框,并且crash
常见原因1
GhomeSDK 所需要的两个bundle文件没有引入到项目中
# 问题6. 已经替换了最新的证书和描述文件,还是报错,找不到匹配的证书
常见原因1
一般是缓存导致(1.重启电脑和XCode , 2 将证书删掉重新安装,3. 手动选择证书)
# Untiy 相关
# Cocos 相关
# 公共
# 隐私政策如何显示更合理?
# 隐私政策显示逻辑简介(同上面截图的这款游戏一致)
# 【不显示隐私条款】
- 当前APP存在登录态(登录态有效能够直接接入游戏),且隐私条款没有修改(即用户登录前同意时的隐私版本一致),则不显示隐私条款同意界面。
重要:前序条件全部为充分且必要条件
# 【显示隐私条款】
- 除上述情况以外,其他情况均会运行后显示隐私条款界面。
# 案例:
- 第1步:用户首次安装后,APP首次运行,【显示】隐私条款界面
- 第2步:用户选择同意,并进行了账号登录,随后关闭APP
- 第3步:用户再次运行APP(假设当前隐私条款内容没有修改),直接进入游戏,【不显示】隐私条款界面
- 第4步:用户游戏界面中,选择退出登录,在回到登录界面之前,【显示】隐私条款界面
- 第5步:用户此时选择关闭APP(没有登录),而后重新开启APP,【显示】隐私条款界面