【友盟+】开发者社区

友盟自动更新技术解决方案(iOS版)

香布拉啦 发表于 2016-5-11 14:59:17 |

香布拉啦
香布拉啦 发表于 2015-9-18 16:05:37 | 显示全部楼层 |阅读模式
这个帖子发了以后收集了很多开发者的建议和意见,我们工程师紧急写了一个针对appstore的自动更新版本供大家参考使用。 欢迎大家提出建议和意见。
github地址:https://github.com/kkme/CheckUpdateiOS




为了避免SDK中自动更新功能影响开发者应用的审批,在新的SDK中去除了自动更新功能及API声明,因此之前使用该功能的开发者请使用如下代码段替代:



[Objective-C] 纯文本查看 复制代码
#define kStoreAppId                     @“xxxxxxxxx”  // (appid数字串)

-(void)checkAppUpdate
{
    NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];
   
    NSString *nowVersion = [infoDict objectForKey:@"CFBundleVersion"];
    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://itunes.apple.com/lookup?id=%@", kStoreAppId]];
    NSString * file =  [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
   
    NSRange substr = [file rangeOfString:@"\"version\":\""];
    NSRange range1 = NSMakeRange(substr.location+substr.length,10);
    NSRange substr2 =[file rangeOfString:@"\"" options:nil range:range1];
    NSRange range2 = NSMakeRange(substr.location+substr.length, substr2.location-substr.location-substr.length);
    NSString *newVersion =[file substringWithRange:range2];
    if(![nowVersion isEqualToString:newVersion])
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"版本有更新"delegate:self cancelButtonTitle:@"取消"otherButtonTitles:@"更新",nil];
        [alert show];
    }
}

- (void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if(buttonIndex==1)
    {
        // 此处加入应用在app store的地址,方便用户去更新,一种实现方式如下:
        NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://itunes.apple.com/us/app/id%@?ls=1&mt=8", kStoreAppId]];
        [[UIApplication sharedApplication] openURL:url];
    }
}


具体也可参考网上类似的实现方案。


Android的方案请参照: http://bbs.umeng.com/thread-15012-1-1.html



上一篇:第一次在应用市场上传的时候需要什么流程吗?
下一篇:版本更新包含广告代码

友盟统计常见问题索引贴【点我】
请大家善用搜索,一个帖子只解答一个问题,多个问题请再开新帖咨询,在论坛上解决一个问题请同时帮助别人解答两个力所能及的问题,谢谢大家!

屋龄通
屋龄通 发表于 2015-9-19 10:02:31 | 显示全部楼层
那么请求 友盟自己服务器的更新模块怎么办呢?

企业版上不了AppStore, 不需要检测AppStore上的最新版本啊

kuankr
kuankr 发表于 2015-9-23 11:10:10 | 显示全部楼层
请问,如果只使用了统计功能,没有调用原来sdk中自动升级相关的接口,还有必要更新sdk么?

香布拉啦
香布拉啦 发表于 2015-9-23 11:36:06 | 显示全部楼层
kuankr 发表于 2015-9-23 11:10
请问,如果只使用了统计功能,没有调用原来sdk中自动升级相关的接口,还有必要更新sdk么? ...

线上版本不需要管,升级发版的话可以考虑升级SDK,不过目前AppStore对这一部分的审核不明确,有人通过有人被拒
友盟统计常见问题索引贴【点我】
请大家善用搜索,一个帖子只解答一个问题,多个问题请再开新帖咨询,在论坛上解决一个问题请同时帮助别人解答两个力所能及的问题,谢谢大家!


有为青年
有为青年 发表于 2015-9-28 21:46:00 | 显示全部楼层
你这段代码明显有问题,NSString *nowVersion = [infoDict objectForKey:@"CFBundleVersion"]; 取的是build号,和版本号比永远都会提示升级。应该改成NSString *nowVersion = [infoDict objectForKey:@"CFBundleShortVersionString"];但是有没有对版本号的大小进行比较,只是单纯的比较了下字符串是否相等,这样会导致本来已经高版本的内测版本也会提示升级,因此还要修改if(![nowVersion isEqualToString:newVersion])为if([newVersion compare:nowVersion options:NSNumericSearch] == NSOrderedDescending)。经过这样修改马马虎虎能用把。但没有升级描述,还是很坑跌。

MT
MT 发表于 2015-9-29 16:13:12 | 显示全部楼层
有为青年 发表于 2015-9-28 21:46
你这段代码明显有问题,NSString *nowVersion = ; 取的是build号,和版本号比永远都会提示升级。应该改成NS ...

升级描述可以从releaseNotes字段取到

ryan_ba
ryan_ba 发表于 2015-11-10 12:39:24 | 显示全部楼层
2.8 Details

Thank you for your resubmission, However, your app installed or launched executable code, which is a violation of the App Store Review Guidelines. Specifically, your app uses the itms-services URL scheme to install an application.

Specifically, this app contains a mechanism for updating itself outside of the App Store review process."

Next Steps

Please revise your app to remove this functionality.


10.6 Details  

Finally, your app still includes an update button or alerts the user to update the app. To avoid user confusion, app version updates must utilize the iOS built-in update mechanism.

Specifically, this app contains an SDK designed to update the app outside of the App Store process. It would be appropriate to remove this SDK before resubmitting for review.

难道就是因为这个原因才被拒绝的马

bicky
bicky 发表于 2015-11-17 17:05:17 | 显示全部楼层
屋龄通 发表于 2015-9-19 10:02
那么请求 友盟自己服务器的更新模块怎么办呢?

企业版上不了AppStore, 不需要检测AppStore上的最新版本啊 ...

我也想问这个问题,企业版本的如何实现检查多渠道更新,就是和友盟自己服务器的自动更新模块?自动更新SDK能用吗?

BUG雷
BUG雷 发表于 2016-3-15 18:37:59 | 显示全部楼层
如果只是中国范围内发布,http://itunes.apple.com/lookup?id=%@改为http://itunes.apple.com/cn/lookup?id=%@,否则获取的文件没有版本相关信息。

kufaxian
kufaxian 发表于 2016-5-11 14:59:17 | 显示全部楼层
bicky 发表于 2015-11-17 17:05
我也想问这个问题,企业版本的如何实现检查多渠道更新,就是和友盟自己服务器的自动更新模块?自动更新SD ...

同问,企业版,蒲公英和fire上都有,我应该怎么做?
您需要登录后才可以发帖 登录 | 立即注册

本版积分规则

发表主题

精彩推荐

新浪开放平台应用注册方法
新浪开放平台地址:http://open.weibo.com/ 1. 创建应用 注意选择微连接-移动应用 2. 填写应用信息 An
腾讯开放平台应用申请方法
腾讯开放平台地址:http://open.qq.com/ 1. 创建应用 创建应用时注意勾选对应的Android或iOS平台 2.
微信开放平台应用申请方法
微信开放平台地址:https://open.weixin.qq.com/ 1. 注册应用 注意这里必须选择移动应用注册 2. 填写

关注我们

新浪微博
微信

欢迎关注友盟官方微博微信!

在线客服
返回顶部 返回列表