iOS开发中常见bug!(内附解答方法)

序言

你是否曾经修复了一个 bug ,随后又发现了一个跟刚修复 bug 有关的 bug ,又或是修复 bug 的方式引起了另一个 bug ?

然而这些问题是绝佳的学习机会。所以我们怎样尽可能多地从修复的问题中吸取经验?小编用的方法就是写下这个问题的简单描述、修复方法以及吸取的经验。使用这个方法了,让这个方法帮助自己成为一个更出色的程序员。

每当修复一个特别棘手或有趣的问题,总会花几分钟写下一些这个问题的信息。这有一些典型记录的例子小编接下来就分享一些问题和解决方法,需要全部问题和答案的可以加小编群:551346706获取。

1、iOS在app切换到后台后如何继续进行下载?

NSURLSession已经支持app按下home键之后,仍让能够进行下载的任务。但是app退出之后不能进行下载。对于NSURLSession添加如下的属性即可进行后台下载。

- (NSURLSession *)session {

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        NSURLSessionConfiguration *config = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"com.wj.demo.BackgroundSession"];

        _queue = [NSOperationQueue new];

        _queue.maxConcurrentOperationCount = 1;//同时支持的最多下载次数

        _session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:_queue];

    });

    return _session;

}

但是当用户在按钮home键的时候,这个下载还能继续进行。

如果用户在后台按钮home键之后,上滑将app杀死之后,我们应该在appdidregiestActive的方法里面先将所有的下载任务暂停。

2、IAP内购中虚拟货币导致审核无法通过的问题?

有的时候我们需要在app中使用虚拟货币,在我们的app中可以使用虚拟货币进行购买道具等,比如直播中的礼物,游戏中的道具等。

苹果对于虚拟货币是需要提成的,提成的额度为30%。所以对于这块的审核比较严格。首先你们的购买的道具在ios端和安卓端是需要分开的。如果大家玩游戏的就会发现游戏的数据在两端是分开的。

用户在安卓手机上购买的道具在iOS上是不能使用的。因为这样也间接的影响了苹果的收入。

另外就是在审核期间不能有可以兑换在appStore可购买的商品,的任意活动或者兑换码,这个也是苹果不允许的。因为这个也会影响苹果的收入。

    另外就是可能有的同学会在苹果审核之后隐藏ipa支付,此处提醒下,苹果会扫描你的app代码中是否有支付宝,微信等关于支付的字段。使用开关加h5的方式可以通过审核,但是此处也有风险,风险就是一旦被发现,可能的结果就是苹果直接封掉账号。app无法使用。

3、如何用dispatch_Group监听afn 下载完成

用dispatch_Group只能控制网络请求的先后顺序,但是要监听是否下载完成好像不行;但是可以用其他的方式来监听;例如:

可以在每个网络请求的成功或失败回调里面设置一个bool标识符为YES,并发送一个通知,在当前页面监听通知,并在监听的通知方法里面,对所有网络请求涉及到的bool标识符进行判断,如果都为YES,就可以认为是所有网络请求都请求完成,就可以执行自己想要进行的操作

4、iOS原生端如何使用JSCore进行原生和iOS的交互

在 - (void)webViewDidFinishLoad:(UIWebView *)webView 方法中

[webView stringByEvaluatingJavaScriptFromString:@"editReady2();”];

调用此方法即可调用js中的方法。

    此处有的时候可能会调用不到js中的方法,原因有可能是js的代码和html的代码是分开放置的,通过此时不一定能够拿到js中的代码。解决的方法是,先获取整个html的代码。在html代码的后面拼接js的路径,然后使用 webView loadHtml的方法去执行网页上的数据。

JS调用oc中的方法

在 - (void)webViewDidFinishLoad:(UIWebView *)webView 方法中

    JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext”];

//change2  前后端约定的字符串

    context[@"change2"] = ^(){        NSArray *params = [JSContext currentArguments];

//根据点击js端的方法,会传递对应的参数给OC端,OC端根据约定的参数规则即可相应的对应的操作。

        NSLog(@“%@“,params);

    };

5、用户信息是保存在沙盒还是userdefault比较好

首先NSUserDefaults就是在沙盒中。一般用户的属性不会很多,所以采用 加密+偏好的方式或者是归档的方式可以保存。但是现在属性这么多,建议使用归档,使用归档的时候,json转model等等都有第三方辅助,很方便。

至于登录保存用户信息,方式很有很多种:

一.单例模式,登陆后把用户数据存储在单例对象

二. NSUserDefaults .数据存储后可以关闭app后依然存在,只有卸载App或者手动删除,数据才会消失

三.钥匙串,数据可以删除app后依然存在,钥匙串由操作系统保护并且存储后的数据是比较安全的,长用来存储一些密码,私钥

6、开发中试图通过kvo来监听 uiwebview.scrollview contentSize 来动态改变 uiwebview 的frame 以达到 uiwebview 刚好填充contentSize的效果, 实际上效果会导致一个死循环,让scrollview.frame越来越大

scrollView 的 contentSize 和 bound 有着密切的关系,而bound 与frame有着密切的关系,因此这样做是不合理的

解决方法

// 在y方向给足contentsize足够的空间

_webView.scrollView.contentSize=CGSizeMake(self.view.bounds.size.width,MAXFLOAT);

[_webView loadHTMLString:html baseURL:nil];

// 加载完毕后再调整y方向的contentSize

- (void)webViewDidFinishLoad:(UIWebView*)webView

{

   //在加载完毕之后获取webview内容所需要的空间

   CGSizesize = [webViewsizeThatFits:CGSizeMake(self.view.bounds.size.width,MAXFLOAT)];

   CGRectframe =CGRectMake(0,0, size.width, size.height);

    webView.frame= frame;

   //调整好frame之后再调整contentsize

    webView.scrollView.contentSize=CGSizeMake(0,0);

}

7、在做代驾项目,用户下单之后司机的状态是极光推送到用户的  如果用户禁止app的推送功能  我应该怎么实现我的实时查看司机/订单信息的需求。

解决这个问题的方式有两种方式:

1.app和服务器建立长连接,将数据实时传递app。此方式可能需要和服务器人员讨论,可能对服务器的要求比较高。

2.另一种方式是定时发送请求,类似前端使用的心跳包的方式,当然用户也可以在信息展示界面进行手动刷新。此方式的好处是后台的压力会比较小。

8、如何实现在app中打开淘宝,并且跳转到指定的应用?比如优惠券页面

找到淘宝的URLScheme并且在URLScheme添加指定的参数,如果你的本机安装了淘宝app客户端,可以跳转到淘宝的指定页面。

比如如下URLScheme

taobao://item.taobao.com/item.hem?spm=a1z10.3-c.w4002-14141359151.28.m8vuq0$id=533219732078.

如何找到这样的URLSCheme。

在模拟器写一个appDemo,和淘宝的包名一致,然后找到一个你需要的链接,比如优惠卷,点击跳转的按钮,然后在

-(BOOL)application:(UIApplication *)application handleOPenURL:(NSURL *)url{}

此方法中打印出来即可。

9、App上架后,如何修改app上显示的公司名称

解答方式:

1.先修改开发者账号中填写的公司名称。

2.再提交更新版本。

如何修改开发者账号中的公司名称:

登陆到Apple developer上面,在people里面的开发者列表中找到agent,让agent的这个人直接拨打苹果开发部咨询电话:400-670-1855,修改开发者账号上的公司名或者用你注册的账号的邮箱直接写邮件:“我需要更改公司名称”到chinadev@asia.apple.com,让苹果开发部客服来处理。

10、iOS打包成功之后,运行在iPhone上会闪退,黑屏?

关于打包之后无法安装,或者安装之后闪退的情况。只有可能是两种情况,一种是证书错误,另一种就是当前的设备并不在开发者对应的账号里面。

我们来看一下怎么检测当前的设备是否在开发者的证书里呢,如果你有开发者账号,当然登录app即可获得。但是没有开发者账号的情况我们该怎么办呢?

我们以下面的ipa包为例,必须是hoc或者dev的包

ipa其实就是一个压缩文件,我们可以对齐解压。得到一个payload文件夹。

解压后,点击进入文件夹,然后显示包内容,可以看到里面的文件列表

我们找到对应的证书 embedded.mobileprovision 这个就是你的ipa包里面使用的签名证书。

然后mac上开启终端。并cd到证书所在的路径

并且在终端输入

//查看dev.hoc包中的已经添加的设备号

security cms -D -i embedded.mobileprovision > entitlements_full.plist

在证书对应的路径会生成一个文件

用xcode打开这个文件

这里面就是你的证书里面对应的所有的设备号。

最后

我发现为每个有趣的 问题 记录下来,可以让我轻易学习到很多。在记录的行为中我会对发生的事情思考得更深刻。同样,一旦记录下来,我可以在之后检查发生的事情。偶尔,我也会浏览文件,只阅读教训部分,对我认为是从问题中学到的最有价值的经验加强记忆。

今天给大家的分享就到这吧!有收获,或者喜欢小编的可以关注小编同时也欢迎大家加入小编的iOS交流群551346706,小编会分享小编记录的全部问题,大家一起交流成长!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容