iOS常见问题

来自AnySDK 文档
跳转至: 导航搜索

服务端及客户端常见问题

iOS静态库为什么这么大?会导致打出来的包体积大很多吗?
.a文件的体积(46.8M)= 真机用的.a(28.1M) + 模拟器用的.a(18.7M),当然每个.a文件还支持了不同架构:arm64 armv7 armv7s i386 x86_64。.a的部分都只包含了代码的部分,静态库是在编译时链接二进制代码,对产生的二进制文件的大小并不会有太大的影响,目前iOS的Sample引入AnySDK Framework产生的大小也只有1m。

更新Xcode7后的各种问题
1.编译时报错“/xxxx/libPluginProtocol.a(Util.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. ”或者"clang: error: -fembed-bitcode is not supported on versions of iOS prior to 6.0"

   Xcode7开始加入的bitcode是被编译程序的一种中间形式的代码,在Xcode 7中,我们新建一个iOS程序时,bitcode选项默认是设置为YES的。我们可以在”Build Settings”->”Enable Bitcode”选项中看到这个设置,并且关掉它

Bitcode1.png

2.编译时报错“All interface orientations must be supported unless the app requires full screen.”

   看到这句提示,就是说App默认是有开启了多任务功能,而多任务功能是需要App支持所有方向,如果我们App是有需要支持多任务,则需要开启App对各个方向(上、下、左、右)的支持;如果App不需要开启多任务,则只需要将如下示意图的 requires full screen 勾选上就ok

Xcode7-2.png

3.应用内网络无法连接

   在App的Info.plist里面加入如下信息,或者按图中方法添加
   <key>NSAppTransportSecurity</key>
   <dict>
       <key>NSAllowsArbitraryLoads</key>
       <true/>
   </dict>

Xcode7-3.png

4.UrlSchemes跳转返回失败 在iOS9中,如果使用URL scheme必须在"Info.plist"中将你要在外部调用的URL scheme列为白名单,否则不能使用。
key叫做LSApplicationQueriesSchemes ,键值内容是 LSApplicationQueriesSchemes urlscheme urlscheme2 urlscheme3 urlscheme4
下图仅供参考 目前已知可能需要添加的值:
微信:wechat weixin
QQ:mqq mqqapi mqqapiwallet
支付宝:alipay alipayshare safepay
UrlSchemesWhite.png

5.找不到libsqlite3动态库 更新2.1.0版本打包工具可以解决 不更新工具可以删除原先工程中的libsqlite3.dylib,在Build Phase->Link Binary With Libraries中添加相应的libsqlite3.tbd 如果还报错,删掉libsqlite3.tbd,在build setting的other linker flags增加-lsqlite3,其他dylib也可以类似处理


Info.plist中出现了NSApplication和Main nib file base name这两项原先没有的项
这两项是Mac的Info.plist拷贝过来的,请删除Mac的Target和相关文件夹。如果该Target需要留着,请参考各语言的快速集成指南,按规则拷贝一份.xcodeproj用于AnySDK打包。 如果原工程的配置有改动的话可能需要重新拷贝这份.xcodeproj。

iOS9下使用了- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options 方法导致SDK方法未被调用
iOS9后引入了该方法。若工程的Delegate中有该方法,且设备为iOS9以上,则走该方法,否则走原先的- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 方法

若遇到相关问题,可将- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options 方法删掉试试。如果应用必须使用该方法,则可将 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 处AnySDK添加的代码移到该方法下。

Unity打包碰到了如下提示错误 AttributeError: 'NoneType' object has no attribute 'has_key'
UnityPackageError1.png
目前在多个Target情况下可能报错,需要按文档提示删除Test的Target和相关文件。

UnityPackageError2.jpg

编译时框架与第三方库冲突
如果编译出现,请替换解决冲突后的框架库,该库为兼容性修改,可以直接替换原先框架。根据不同的C++ Standard Library下载不同版本替换 若替换后还存在冲突,请联系开发者 Framework 链接: http://pan.baidu.com/s/1jGkz70M 密码: hdt9

为何Info.plist有正确的ASC_ChannelID,但是调用getChannelID()却读出999999
iOS需要一定的步骤来初始化,getChannelID()调用的是[[NSBundle mainBundle]objectForInfoDictionaryKey:@"ASC_ChannelID"];,如果在iOS初始化之前调用,则取不到正确的值。

编译时有些设备报错,但不连接设备可以正常Build
一些SDK只支持部分指令集,打包时会修改Target的Valid Architectures。而默认工程的Run模式是Debug,Build Active Architectures Only这个选项下Debug的默认值是Yes。比如某个只支持armv7的SDK,可能在调试arm64的包时,就会碰到一些跟指令集相关的编译报错。 解决方法是将Scheme的Run模式改为Release,或者将Build Active Architecture Only的Debug子项值改为No.
关于指令集的问题可以参考:http://www.cocoachina.com/industry/20140527/8566.html http://www.cocoachina.com/ios/20140915/9620.html

Arch1.png Arch2.png Arch3.png

编译时各种std报错
若在编译时碰到如下问题,请确认Build Setting中的C++ Standard Library和你使用的框架的libc++/libstdc++相对应 Stderror.jpg

Stderror2.jpg
渠道要求启动图片要显示3秒以上
在入口文件中(AppDelegate/AppController/UnityAppController)添加以下代码,已有该方法的话就将[NSThread sleepForTimeInterval:3.0];添加到函数最前面。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [NSThread sleepForTimeInterval:3.0];//设置启动页面时间
    return YES;
}

银联要求添加竖屏支持导致的游戏需要在代码中设置横屏的问题
在AppDelegate.mm/AppController.mm/UnityController.mm中添加以下代码 若无效的话在主视图(RootViewController等)中试试

   - (NSUInteger)supportedInterfaceOrientations{
       return UIInterfaceOrientationMaskLandscape;
   }
   - (BOOL)shouldAutorotate {
       return YES;
   }
   - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
       if(UIInterfaceOrientationIsLandscape(interfaceOrientation)) {
           return YES;
           } else {
           return NO;
   }
   -(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
       return UIInterfaceOrientationLandscapeLeft;
   }

要兼容ios8还需要在AppDelegate.mm/AppController.mm/UnityController.mm中加入以下代码

   -(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
       NSString* strSubClass = [NSString stringWithUTF8String:object_getClassName(window.rootViewController.presentedViewController)];
       if ([@"ImgTakeViewController" isEqualToString:strSubClass]) {
           return UIInterfaceOrientationMaskAll;
       }
       return [application supportedInterfaceOrientationsForWindow:window];
   }

如果该渠道不需要勾选银联竖屏的话,只需要前两个方法,而shouldAutorotate设置No即可。

Unity下读不到ChannelID
使用IL2CPP的情况下,若读不到ChannelID,可以以如下方式修改
Channelid il2cpp.png

安卓下能初始化,iOS初始化失败,渠道包登录时弹的母包界面
iOS必须先init初始化再调用loadAllPlugins,调换一下顺序即可

2.1.0版本打包后icon分辨率不全,图标模糊
升级到2.1.1可以解决

添加arm64后,在真机编译出现大量SDK库自身的duplicate symbols for architecture arm64错误,如下图
Duplicate.png 升级Xcode到6.3及以上版本可以解决

Unity更新2.1.1框架,打包后报错"PluginWrapper.h" file not found
将该文件下载解压后添加头文件到工程中,也可添加到打包前的工程中重新打包。后续会在客户端补丁中解决。链接: http://pan.baidu.com/s/1i3SXqO9 密码: a75m

需要安装不低于6.0版本的Xcode

我已经安装了Xcode,但是在iOS打包处还是提示这个错误
iOS的处理流程需要命令行下有Xcode环境,目前设定版本为6.0以上,通过xcodebuild -version检测版本号。若已经安装了6.0以上版本,还是报该错误的话 1.在终端输入命令xcodebuild -version,若能显示版本号且为6.0以上,并且重启后无效,请联系我方 2.若xcodebuild报错,可能是因为之前安装的xcode环境变量没有修改,或者xcode程序被改名,需要配置xcode所在路径。命令为 sudo xcode-select -s (Xcode.app所在路径)/Contents/Developer,例如Xcode安装在应用程序下,则输入 sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

ps:sudo权限需要输入密码,且密码不为空


渠道类SDK

百度91

建议先咨询渠道方是否能使用百度游戏SDK,91被百度并购后基本没有更新,最后更新于14年3月,最后更新是添加了iOS7的适配。

参数名 参数说明 备注
AppId 应用id 百度91 开发者后台进行申请
AppKey 登录或支付时验证 百度91 开发者后台进行申请
Orientation 百度91界面的方向 根据游戏界面的方向设置或随意设置,Xcode6/7下可能有对应不上方向的问题
CheckUpdate 是否强制升级,强制升级就是当升级失败退出游戏 强制升级,没有进行升级或升级失败就会退出游戏。注:自测检测失败是正常。
测试模式 是否为测试模式 测试模式在支付时可以使用后台配置的支付信息。
支付通知地址 当支付完成会通知cp方所配置URL所在的游戏服务器地址。 支付通知可能会有所延时。


91-account.jpeg
上线注意事项

  1. 后台配置服务器IP地址为:211.151.20.127


关于横竖屏的解决方案:
百度91版本过老,在新版本Xcode下,可能出现sdk方向与打包工具中设置的方向不符的情况,竖屏可能可以匹配,而横屏情况下若尝试配置各种旋转方向不能解决: [用户提供解决方法1]下载Xcode5用于编译.
[用户提供解决方法2]
iOS的百度91渠道,使用最新Xcode编译出来界面横竖屏可能会出现问题,是因为百度91的SDK不支持iOS8 SDK编译,若出现问题可通过下面的方法解决:

  • a.下载文件http://yun.baidu.com/share/link?shareid=2845942060&uk=3138331658,其中iPhoneOS7.1.sdk.tar.gz解压后是iOS7.1 SDK,Metal.framework.zip解压后是一个Metal.framework库;
  • b.将解压后的iPhoneOS7.1.sdk放到路径/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs下;
  • c.通过AnySDK打包工具打包生成百度91渠道的Xcode项目,打开他,然后修改对应的Target中的Base SDK设置为7.1;
  • d.编译项目,如果报“framework not found Metal …”,则把刚才下载的Metal.framework加入到连接库中,出现这个的原因是因为用iOS8 SDK编译的一些库会强制连接该库,但是实际并没有用到这个库的内容,这里的Metal.framework实际也是一个空的库;
  • e.再次编译项目;

AppStore

  1. 参数说明-是否允许报备:如果允许报备。插件会在一些重要操作的时候,把一些敏感数据提交到我们的报备服务器上,以方便后期开发人员排查BUG
  2. 新版本请到通用版后台(dev.anysdk.com)的游戏管理->游戏列表->管理商品 界面映射PayForProduct方法中调用的Product_Id与苹果后台的Product ID,价格(单位人民币,统计使用)等之间的关系。
  3. AppStore不要在支付前直接调用resetPayStatus, 会导致连续支付时订单关联出错

注:

  1. 接入苹果AppStore-iap,需要保证自己工程的Bundle identifier与后台的Bundle identifier 是一致的。注意尽量不要填写包名后缀,如果填写,也请修改后台的包名,添加后缀。
  2. 要用真机调试,不能用越狱机,Sandbox测试时记得先在通用->设置里登出本机AppStore账号
  3. 新账号需要先处理iTunesConnect的协议、税务和银行业务信息
  4. 如果使用商品ID支付方式,则在payForProduct时传入后台填写的商品的ProductID
  5. 以上几条如果有问题,会报错Invalid Item Error
  6. 本机账号没有登出,或者苹果的协议更新没有通过,可能导致显示错误:无法连接到iTunes Store
  7. 服务端收到支付成功通知后,请务必再核对通知中ProductID是否正确,可能碰到用其他已经支付过的回执来通过苹果认证的情况。最好再验证一下通知中的时间是否在生成订单时间之前
  8. 专题介绍In-App Purchase



AppStore-IAP:
Appstore id.jpeg

项目里面的Bundle identifier,或者直接选取Info.plist文件修改:
Ios project id.jpeg

心动(非越狱)

参数名 参数说明 备注
AppId 心动应用id 开发者在心动申请到的参数,目前会有两个:appid和secret。

appid对应这里的AppId

AppKey 心动应用key 开发者在心动申请到的参数,目前会有两个:appid和secret。

secret对应这里的AppKey

AppSecret 心动appSecret 心动sdk的保留值,目前还没有使用,可以随意填写。
IsPortrait sdk是否选择竖屏方向 最好根据游戏的方向
  1. Xcode7下需要手动添加libicucore.tbd,否则可能会报各种找不到_ure开头方法的错误。



PP助手

参数名 参数说明 备注
AppID 应用id
AppKey 应用Key
PublicKey 公钥
PPZoneID PP后台分区,后台的自定义编号。没设置分区则为0。
是否新游戏 APP ID>4263(不含4263)的游戏为新游戏 新旧游戏的登陆验证地址和格式不一样,需要区分
支付通知地址 当支付完成会通知cp方所配置URL所在的游戏服务器地址。 支付通知可能会有所延时。


上线注意事项

  1. 关于插件版本号,请更新到最新插件后,将鼠标移至参数管理->版本号上查看,S=静态库,D=动态库,PP两者都有用到

Ppversion.png

  1. 不能在模拟器下运行,只能在真机下运行。
  2. 打包ipa时,请不要使用xcode的archive功能打包,要用itunes导出ipa包的方式打包(否则检测更新时会出错,提示“检测更新失败,服务器呵呵了”)。安装ipa时请用iTunes同步方式,第三方工具可能无法安装,但提交后不会出现问题
  3. 若没有越狱机器测试,需要对bundle重新签名,否则启动时报资源错误下载工具和说明文档
  4. PP助手SDK在余额不足时,需要充值购买,在打开充值界面的时候SDK有一个回调,AnySDK返回的是支付成功的回调,因为PP助手SDK在充值完成后是不会有回调的。
  5. Info.plist的两处版本号要一致,可以在上下两图任意位置修改

PPversion2.png

  1. 横屏游戏需要对启动图片如图处理,可以在/文稿/AnySDKFiles/config/sdk/iOS_PPZhushou/ForSplash下找到相关尺寸文件

PPForIP6.jpg

重签名步骤

  1. GeneralHashCode需要可执行权限,如果下载解压后,文件的可执行权限没有了,在终端中cd到下载文件夹,使用'chmod 755 GeneralHashCode'命令
  2. 按文档说明,在终端中使用'which codesign'命令查看codesign位置,如果不是默认的/usr/bin/codesign,请在Packer.php中修改
  3. 将PPAppPlatformKit.bundle文件拷贝到工具下载同级目录
  4. 重新签名的证书一定要是可用的证书,且跟项目所用证书一致;钥匙串中如果存在多个相同的证书,要清除掉多余的证书,拷贝该证书的名字
  5. 使用命令"php -f Packer.php '证书名称'"若无报错信息,则重签名成功
  6. 将重签名成功的PPAppPlatformKit.bundle覆盖回原先的插件目录,然后重新打包
  7. 必须使用和签名证书匹配的调试证书(Build Settings->Code Signing->Provisioning Profile,在Apple Developer后台生成下载)
  8. 如果之前有对应的旧版的PP渠道应用,必须删除,否则还会报资源问题

PPCodesign1.jpg
PPCodesign2.jpg
若替换后还是失败请检查以下几点

  1. 工程中的bundle是否是重签名后的bundle? 一般建议将重签名成功的bundle覆盖到插件目录(/文稿/AnySDKFiles/config/sdk/iOS_PPZhushou/Resource),并重新打包
  2. 删除设备上原先的app再clean+run/安装,直接run不会替换原先app里的资源文件



爱思

参数名 参数说明 备注
AppID 应用id
AppKey 应用Key
PublicKey 公钥
LogData 是否显示log
CloseRecharge 是否关闭充值
关闭充值提示语 关闭充值提示语
LongComet 是否使用长连接
分区id 需要和开发者后台的分区编号对应,如果没有分区则传入0
支付通知地址 当支付完成会通知cp方所配置URL所在的游戏服务器地址。 支付通知可能会有所延时。


上线注意事项

  1. 爱思sdk本身在微信支付完成后就无法跳转回游戏;
  2. iOS10需在Info.plist加入以下权限选项
<key>NSCameraUsageDescription</key>
<string>爱思助手</string> 
<key>NSPhotoLibraryUsageDescription</key>
<string>爱思助手</string>


同步推

参数名 参数说明 备注
AppID 应用id
AppKey 应用Key
Orientation 初始化界面方向
IsAutoRotation 是否开启自动旋转
IsUseOldPlace 是否使用上次悬浮条位置
IsCleanUserInfo 是否清空用户自动登录信息
IsForceUpdate 是否强制用户更新
支付通知地址 当支付完成会通知cp方所配置URL所在的游戏服务器地址。 支付通知可能会有所延时。


上线注意事项

  1. 记得配置IsAutoRotation,默认值是True,但大部分游戏不会做旋转处理
  2. 渠道支付通知的paydes是客户端支付时传入的Product_Name,不能为中文,不能带有&“‘ (单双引号) % 空格以及其它会被url转义的字符,可为空。
  3. 默认不显示悬浮窗,需要调用showToolBar方法
  4. Xcode7下可能会导致打包时银联要求的竖屏不被添加,横屏游戏请手动在Targets->Deployment Info->Device Orientation勾上Portrait竖屏选项,并在代码中处理横竖屏问题



iTools

参数名 参数说明 备注
AppID 应用id
AppKey 应用Key
Orientation 设置SDK界面方向
CloseLoginPage 设置SDK登录界面是否可关闭
AutoLogin 设置SDK是否自动登录
支付通知地址 当支付完成会通知cp方所配置URL所在的游戏服务器地址。 支付通知可能会有所延时。


上线注意事项

  1. sdk并没有支付成功的回调,有个支付视图关闭的回调,AnySDK将该回调返回成支付成功的回调。收到该回调后去游服轮询结果,支付是否成功以服务端为准
  2. 若游戏中出现电池状态栏,请在info.plist中添加View controller-based status bar appearance, 设置为No



快用苹果助手

参数名 参数说明 备注
GameID payID 查询网址:http://payquery.bppstore.com/
AppKey 应用Key 将 bundle identifier(加 ky标志)和接收 appkey 的邮箱发在讨论组,@快用-技术支持进行注册并通过邮箱发给CP
AppSecret 签名密钥 查询网址:http://payquery.bppstore.com/
RSA公钥 RSA公钥 查询网址:http://payquery.bppstore.com/
FastLogin 是否使用快速登录
UseVerifycdKey 是否需要输入邀请码
是否仅支持iPhone 如果游戏当前接入的版本并未对iPad进行适配(当在iPad上运行时,居中显示,四周是黑框的情况)请选true,否则选false。
支付通知地址 当支付完成会通知cp方所配置URL所在的游戏服务器地址。 支付通知可能会有所延时。


上线注意事项

  1. 支付是否成功以服务端通知为准,本地收到成功回调后需要去游服轮询订单结果
  2. 点击用户中心的注销会弹出登陆界面,实际上相当于切换账号的功能,所以该注销回调AnySDK并没有返回,登陆后会有切换账号成功的回调。
  3. 不能在模拟器下运行,只能在真机下运行。
  4. 用户反映快用3.0.3版本在iOS9.3.2下初始化崩溃,若碰到可换低版本iOS设备试试
  5. 若碰到支付闪退,可以在Delegate文件(AppController.mm/UnityAppController.mm等)添加以下方法试试

-(UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {

   return UIInterfaceOrientationMaskAll;

}

-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {

   [[QuickUnifyPlatform getInstance] qupHandleWithapplication:application openURL:url sourceApplication:nil annotation:nil];
   return YES;

}

  1. ifdef __IPHONE_9_0

-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options {

   [[QuickUnifyPlatform getInstance] qupHandleWithapplication:app openURL:url sourceApplication:[options valueForKey:@"UIApplicationOpenURLOptionsSourceApplicationKey"] annotation:[options valueForKey:@"UIApplicationOpenURLOptionsAnnotationKey"]];
   
   return YES;

}

  1. endif

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

   [[QuickUnifyPlatform getInstance] qupHandleWithapplication:application openURL:url sourceApplication:sourceApplication annotation:annotation];
   return YES;

}



爱贝

参数名 参数说明 备注
AppID 应用id
ChannelID 渠道号
PrivateKey 应用私钥
PublicKey 平台公钥
IsShowLog 更新是否显示log
TestMode 测试模式
支付通知地址 当支付完成会通知cp方所配置URL所在的游戏服务器地址。 支付通知可能会有所延时。


海马

参数名 参数说明 备注
AppID 应用ID
AppKey 应用私钥
IsShowLog 是否显示日志
TestMode 是否为测试更新模式 开启后会一直提示有更新,只要能提示并跳转就表示测试更新成功,最后打包发布时务必改为false
CheckType 因网络原因检查更新失败时是否可以越过强制更新 0 表示网络出错时不提示检查失败,用户可直接进入游戏。
1 表示网络出错时提示失败,只能再次检查更新,直到检查成功。
2 表示网络出错时提示失败,用户可以选择跳过检查并进入游戏。
IsLogout 切换账号是否注销当前用户
支付通知地址 当支付完成会通知cp方所配置URL所在的游戏服务器地址。 支付通知可能会有所延时。

上线注意事项

  1. 海马后台配置登录验证服务器IP地址为:211.151.20.126|211.151.20.127|117.121.57.82
  2. AppId填写错误或者BundleID与后台不一致将会出现“应用被禁止”提示
  3. 需要添加白名单LSApplicationQueriesSchemes,渠道需要alipay, safepay,添加方法参考上面xcode7注意事项部分



编译错误和解决方法

  1. 可能碰到如下编译错误,原因是IOKit.framework没有被加入Build Phases中

Haima1.jpg

  1. 解决方法如下,在Build Phases中手动查找添加IOKit.framework

可在Xcode.app上右键选择显示包内容后,/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks目录下找到,然后拖进工程
Haima2.jpg
Haima3.jpg

XY助手

参数名 参数说明 备注
AppID 应用ID
AppKey 应用私钥
PayKey 支付用密钥
打印Log 是否显示日志
测试环境 是否是测试模式,XY提供Debug模式,需要找技术人员申请白名单账号功能
可忽略更新 失败时是否可以越过强制更新
使用上次悬浮窗位置 是否使用上次显示悬浮窗位置
支付通知地址 当支付完成会通知cp方所配置URL所在的游戏服务器地址。 支付通知可能会有所延时。


上线注意事项

  1. xy渠道下的BundleID需要以.xy结尾,Url Schemes需要以.xy.alipay结尾,尽量不要去修改BundleID后缀的配置。
  2. 请在 Targets->Build Setting->Code Signing Resource Rules Path 选项中设置 $(SDKROOT)/ResourceRules.plist, 避免上传到 XY Dev 后台在部分 IOS 系统设置中不能正常安装
  3. 若游戏为横屏游戏,需要在AppController.mm下方法返回UIInterfaceOrientationMaskAll。见下图:XYOrient.png
  4. 目前点开浮球中的礼包按钮会导致游戏崩溃,这个功能是需要在游戏上线后,渠道后台配置的。SDK可能对空值的容错不够导致崩溃。在后台配置礼包后就不会崩溃了。
  5. XY审核的时候需要.framework库不能放在“Framework”文件夹下,可以先试试将AnySDK/Frameworks/组内的文件提取到工程根节点。如果还是不行,请将要提交的ipa文件改后缀为.zip解压,看下是否存在该文件夹,如果有的话,把文件提取到根目录,并删除Frameworks文件夹后重新压缩。
  6. XY的测试环境和正式环境在渠道配置的setDebugMode设置。
  7. 如果碰到初始化崩溃'NSInvalidArgumentException', reason: '*** -[NSPlaceholderString initWithString:]: nil argument',并且代码层报错在+[XYPlatform sdkVersion],可以尝试Other linker flags中添加-all_load解决(用户反馈)



果盘SDK

参数名 参数说明 备注
AppID 应用ID
ClientKey 客户端私钥
ServerKey 服务端密钥
是否保存Log文件 是否保存Log文件
支付通知地址 当支付完成会通知cp方所配置URL所在的游戏服务器地址。 支付通知可能会有所延时。


上线注意事项

  1. 由于SDK资源文件名含有中文,会导致目前版本下载后资源文件夹出现问题,请到 链接: https://pan.baidu.com/s/1dEY8M3Z 密码: h4ur 下载。解压后替换插件目录下的/Resources文件夹中相应的bundle文件((在/文稿/AnySDK Files/config/sdk/iOS_guopan/Resources/ 文件夹中),然后重新打包
  2. Unity4.x的游戏,C++Standard Library是libstdc++的情况下编译会报错,添加libc++.dylib/.tbd动态库即可。下个版本将放到插件里自动添加
  3. 需要添加的白名单LSApplicationQueriesSchemes:cydia, xxassistant, xxassistantsdk, alipay, weixin, wechat
  4. 如果项目工程里面已经有 protobuf,用 sdk 的 libprotobuf_64.a 代替



触控

参数名 参数说明 备注
CocosAppId 应用ID
CocosAppSecret 应用密钥
CocosChannel 应用渠道号
支付通知地址 当支付完成会通知cp方所配置URL所在的游戏服务器地址。 支付通知可能会有所延时。


上线注意事项

  1. 触控SDK要求添加Other Linker Flags "-all_load",该方法会导致所有类的方法被载入。容易造成库中类的冲突,如果碰到类的冲突可以删除此Flag试试



SohaGame

参数名 参数说明 备注
Soha_AppId Soha_AppId
Soha_AppSecret Soha_AppSecret
Facebook_AppId Facebook_AppId
Facebook_DisplayName Facebook_DisplayName
Soha_PayMode Payment with AppStore Or SohaGame
支付通知地址 当支付完成会通知cp方所配置URL所在的游戏服务器地址。 支付通知可能会有所延时。
  1. iOS9相关配置请参考 https://developer.shg.vn/article/view?id=117&lang=ch,Soha的ATS写法比较复杂,需要参考文档手动添加。

i 苹果

参数名 参数说明 备注
gamekey 游戏gamekey
游戏channelId 游戏channelId
IsPortrait 是否竖屏
IsShowToolBar 是否显示悬浮按钮
cuKey 游戏cuKey,也就是secretKey
IsRepeatPay 是否重复支付
IsLastXcode6 Xcode版本是否大于等于6
支付通知地址 当支付完成会通知cp方所配置URL所在的游戏服务器地址。 支付通知可能会有所延时。


上线注意事项

  1. 如果游戏工程没有使用mm文件,需要在TARGET的Build Settings中,找到Apple LLVM 的Compile Sources As,设置为Objective-C++。



富嘉SDK(乐8)

参数名 参数说明 备注
AppId 应用id
AppKey 应用key
Orientation 初始化界面方向
IsLogout 切换账号是否注销当前用户
支付通知地址 当支付完成会通知cp方所配置URL所在的游戏服务器地址。 支付通知可能会有所延时。


上线注意事项

  1. 富嘉后台配置登录验证服务器IP地址为:211.151.20.126|211.151.20.127|117.121.57.82
  2. SDK有个BUG 就是支付的时候在未登录状态情况下,我们会先登录,再去支付。在该流程操作之后,调用登出可能界面没有响应
  3. SDK提供了旋转解决方案,根据游戏实际情况添加,仅供参考
   - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
       //横屏这样设置
       return UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
       //竖屏这样设置
       return UIInterfaceOrientationIsPortrait(toInterfaceOrientation);
   }
   - (BOOL)shouldAutorotate {
       return YES;
   }
   - (NSUInteger) supportedInterfaceOrientations{
       //横屏这样设置
       return UIInterfaceOrientationMaskLandscape;
       //竖屏这样设置
       return UIInterfaceOrientationMaskPortrait;
    }



当乐

参数名 参数说明 备注
AppId 应用id
AppKey 应用key
MerchantID 当乐后台MerchantID
ServerID 当乐后台ServerID
PaymentKey 当乐后台PaymentKey
AssistivePosition 浮标在屏幕上的位置
ScreenOrientation 支持的屏幕方向
AssistiveHide 是否隐藏浮标
支付通知地址 当支付完成会通知cp方所配置URL所在的游戏服务器地址。 支付通知可能会有所延时。


上线注意事项

  1. 如果编译出现如下SDK的库与AnySDK库冲突问题,请替换相应版本的AnySDK库http://pan.baidu.com/s/1jGkz70M 密码: hdt9
    当乐iOS日志.png
  2. 只支持真机调试,不支持模拟器
  3. 没有浮标:把AssistiveHide改为No,下个版本考虑修改默认选项



百度游戏

参数名 参数说明 备注
setDebugMode(渠道参数) false为release模式,true为debug模式 调试模式下,百度后台设置的支付通知地址无效,渠道会通知到AnySDK客户端配置的【渠道通知地址】
AppId 应用id
AppKey 应用key
SecretKey 应用密钥
是否兼容91用户 是否兼容91用户 新游戏必须选择不兼容91用户
支付通知地址 当支付完成会通知cp方所配置URL所在的游戏服务器地址。 支付通知可能会有所延时。


上线注意事项

  1. 新游戏必须选择不兼容91用户
  2. 后台配置服务器IP地址为:211.151.20.127



Facebook

参数名 参数说明 备注
AppID AppID从开发者后台获取
DisplayName DisplayName从开发者后台获取
URLScheme URLScheme从开发者后台获取
是否使用登录验证 是否使用登录验证
true:SDK登陆成功后请求游服进行登陆验证,收到游服结果后返回回调。
false:SDK登陆成功后就返回回调,不请求游服进行登陆验证。
验证token有效性 是否需要去facebook服务器验证token有效性
false:AnySDK服务端直接返回成功。
true:AnySDK服务端向Facebook服务端请求登陆验证。
由于AnysDK服务器在国内,无法访问Facebook,通用版用户请设为false。
企业版用户需要把AnySDK服务器架设到海外,确保能访问Facebook,才可设置为true。
AppSecret AppSecret从开发者后台获取 不验证token有效性可不填


上线主要事项

  1. 由于AnySDK服务器在国内,无法访问Facebook服务器,所以无法进行登陆验证,如需使用AnySDK服务端的登陆验证功能,可购买企业版,将AnySDK服务端架设到海外服务器上。



9377助手

参数名 参数说明 备注
9377ChannelID 9377提供的渠道号
9377Signkey 支付密钥,由双方决定
9377GameID 9377提供的gameID
服务区号 服务区号,在9377那边配置
游戏名字拼音 9377提供的游戏别名
是否越狱平台 是否越狱平台
服务区号类型 CSGAME_SERVER_TYPE_CS :9377服务区号
CSGAME_SERVER_TYPE_DEV : 开发商服务区号
支付通知地址 当支付完成会通知cp方所配置URL所在的游戏服务器地址。 支付通知可能会有所延时。


  1. 9377的服务区号(服务器ID),如果没在payForProduct里传递,就默认使用打包工具上的配置



魔品

  1. 本渠道参数由渠道方填写在.cfc配置文件里,BundleID需要与渠道提供的cfc文件@号之前部分一致
  2. 需要手动添加Model.xcdatamodeld文件,请到链接: http://pan.baidu.com/s/1o8tQfOI 密码: sd23 下载解压
  3. .cfc文件和Model.xcdatamodeId文件需要在打包后的工程中右键->Add File to ...,直接将该文件拖进工程会导致初始化失败

Mopote.png



探娱互动

参数名 参数说明 备注
channelId 渠道号
clientId 游戏ID
游戏token 游戏用的token


  1. 游戏调用支付的时候,传递的参数需要增加一个Server_Name字段



39SDK

有四个必须接入的扩展接口

1. 统计账号登录游戏,收到登录游戏成功回调后调用 submitActive

2. 统计角色登录游戏,角色进入游戏之后调用 submitLogin

3. 统计创建角色,创建角色之后调用 submitCreate

以上3个接口一个参数,为服务器ID,字符串类型。代码可以参考相应语言的用户系统的显示悬浮工具栏接口

   ProtocolUser* _pUser = AgentManager::getInstance()->getUserPlugin();
   if(!_pUser || !isFunctionSupported("submitActive")) return;
   PluginParam serverId("1");
   _pUser->callFuncWithParam("submitActive",&serverId ,NULL);

4. 统计角色升级,角色升级之后调用 submitLevel

一个参数,为字典类型,需要传递2个键值对,第一个为level,字符串型,传角色等级。第二个为gateway,字符串型,传服务器ID。可参考提交游戏数据接口

统计类SDK

GoogleAnalytics

参数名 参数说明 备注
TrackingID 后台得到的TrackingID
dispatchInterval 统计信息发送周期 如果这个值是正数,统计信息将会在每个周期自动发送,否则需要手动发送,

例如,如果设定为120,统计信息将会在每120秒自动发送

LoggerLevel logger等级 None不使用logger,Error:打印error级别的log,warning:打印warning及以上,

Info:打印info及以上,Verbose:全部都打印

IsDryRun 是否开启测试模式
TrackExceptions 是否调用sdk异常捕获功能


热云

热云有5个扩展方法

  1. 跟踪注册:registerWithParams
  2. 跟踪登录:loginWithParams
  3. 跟踪充值:paymentWithParams
  4. 跟踪消费:economyWithParams
  5. 跟踪任务:questWithParams

调用这些方法,需要以扩展方法的形式调用,可以参考对应语言统计系统的其他方法写法 参数需要以键值对字典的形式来传。具体参数,直接参照热云的文档。对照文档上的参数,把非字符串类型的参数都转为字符串类型,然后才能存入字典。不是必选参数,可以不存入字典。

推送类SDK

个推

参数名 参数说明 备注
AppId 应用id 个推 开发者后台进行申请
AppKey 应用Key 个推 开发者后台进行申请
AppSecret 应用Secret AppID、AppKey、AppSecret都是应用与SDK通信的标识


Getui-app.jpeg

广告类SDK

AdMob

参数名 参数说明 备注
AD Unit ID 后台申请的广告位
Pos Banner广告显示的位置
RequestAgent admob广告agent 例:cocos、unity、mopub 等等。
Size BANNER:标准横幅广告 LARGE_BANNER:大横幅 MEDIUM_RECTANGLE:IAB中矩形 FULL_BANNER:IAB全尺寸横幅广告 LEADERBOARD:IAB页首横幅广告 SMART_BANNER:智能横幅广告
  1. 更新iOS9/Xcode7后,若出现Request Error: Received invalid response错误,请参考上文中Xcode7更新,NSAppTransportSecurity的添加部分
  2. 需要真机测试,模拟器上可能无法显示广告


分享类SDK

ShareMob

参数名 参数说明 备注
AppKey 应用key ShareMobShareMob后台注册之后得到的AppKey
SortId 此平台在您分享列表中的位置,整型,数值越大越靠后 数字,不要以0开头
AppId 填写您在平台上注册到的AppId
AppKey 填写您在平台上注册到的AppKey
AppSecret 填写您在平台上注册到的AppSecret
RedirectUrl 填写您在新浪微博或者腾讯微博上注册的RedirectUrl


关于各平台的参数申请,可以参考ShareSDK官方论坛的教程 http://bbs.mob.com/thread-275-1-1.html

  1. 需要以下参数,其中imagePath为工程中存在的图片文件名
    info["title"] = "ShareSDK是一个神奇的SDK";
    info["text"] = "测试文本";
    info["url"] ="http://www.mob.com";
    info["imageUrl"] = "http://www.baidu.com/img/bdlogo.png?tn=63090008_1_hao_pg";
    info["imagePath"] = "123.png";
注意事项,如果不能分享到微博手机客户端,请看一下是否有在shareSDK的后台配置新浪相关的信息。

Share-weibo.jpg

微信

需要传入以下参数
info["title"] = "微信分享";  
info["mediaType"] = "1"; 分享类型: 0-文字 1-图片 2-网址  
info["shareTo"] = "2"; 分享到:0-聊天 1-朋友圈 2-收藏  
info["url"] ="http://sharesdk.cn";  
info["text"] = "测试一下。。测试一下。。测试一下啊。。。";  
info["thumbImage"] = "ics.png"; //缩略图(小于32K)  
info["imagePath"] = "123.png";