问题一:接入SDK报错
接入第三方SDK的framework支持的版本在iOS8.0及以上,而自己的项目的最低版本为iOS6.0(第三方SDK版本较高,不兼容)会报以下错误(图1):
而如果简单地把Development Target 改为iOS8.0,项目又会报出其他的错(图2):(这种错的解决方案却是需要把Development Target 改为iOS7.0以下,造成了问题的死循环)
解决方案:
1.如大部分人所说,选择Development Target 为iOS6.0,将framework重新编译后,再接入使用(这种方案一般不会成立,除非是自己的SDK,第三方是不愿费力气来兼容你的版本)
2.不仅仅需要把项目下的Development Target修改成iOS8.0(图4),还需要把cocos2dx对应的iOS Development Target改成iOS8.0(图5),两者统一,问题完美解决
(下面的问题不只是cocos2dx项目会出现,只要是iOS开发,都有可能出现)
问题二:内购问题
1.内购测试出错:测试机iPhone升级系统至iOS11后,原来的测试帐号不能使用(无限循环地让输入帐号密码),重新申请测试帐号解决!
2.内购沙盒测试正常,应用上线后,点击支付一直返回失败(用户看到的结果是没任何反应),支付确认提示框都没有弹出。
解决方案:
切换网络、修改网络DNS为8.8.8.8、重启手机等方法多试几次,可以正常购买。但是仍然有许多用户不知道上述方法,不知道是不是苹果服务器的问题才造成支付失败。在AppStore上更新几次版本后,可以正常支付。
出现这种情况,可能是在交易取消或购买成功后,没有从交易队列中移除本次交易。
解决方案1:
由于在用户购买成功或者点击取消购买的选项后回调方法
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transaction;
在该方法内除了通过支付信息编写自身的业务的代码外,还要记得调用
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
方法通知苹果的支付队列该交易已经完成。
解决方案2:如果上述原因不成立,可以使用下面的方案:
在每次发起购买之前,先检查交易队列中是否有未完成的交易,将队列中的交易全部处理完,就不会再有上述提示。
// 获取之前未完成的交易,处理
NSArray* transactions = [SKPaymentQueue defaultQueue].transactions;
if (transactions.count > 0) {
NSLog(@"有未完成的交易%@",[transactions firstObject]?:@"nil");
//检测是否有未完成的交易
SKPaymentTransaction* transaction = [transactions firstObject];
if (transaction) {
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchased://交易完成
{
[self completeTransaction:transaction];
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
return;
}
case SKPaymentTransactionStateFailed://交易失败
{
[self failedTransaction:transaction];
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
return;
}
case SKPaymentTransactionStateRestored://已经购买过该商品
{
[self restoreTransaction:transaction];
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
return;
}
default:
break;
}
}
}
问题三:磁盘内存不足
项目编译报错lipo,读写错误;Mac磁盘内存不足,清理磁盘解决!
再附上Xcode清理方式:
command + shift + G (快捷键)前往文件夹 : /Users/用户名/Library/Developer/Xcode/DerivedData
DerivedData里面存储的是Xcode运行APP的缓存文件,可以直接删除
这里有个清理MAC的链接:http://blog.csdn.net/qq_26598821/article/details/51849209
问题四:Archive打包后上传AppStore时报错
注意:Archive之前,Clean一下工程(快捷键 command+shift+K),否则很容易出错