iOS開發(fā)中常見bugV蘖印(內(nèi)附解答方法)

序言

你是否曾經(jīng)修復(fù)了一個(gè) bug 泊脐,隨后又發(fā)現(xiàn)了一個(gè)跟剛修復(fù) bug 有關(guān)的 bug 空幻,又或是修復(fù) bug 的方式引起了另一個(gè) bug ?

然而這些問題是絕佳的學(xué)習(xí)機(jī)會(huì)容客。所以我們怎樣盡可能多地從修復(fù)的問題中吸取經(jīng)驗(yàn)秕铛?小編用的方法就是寫下這個(gè)問題的簡單描述、修復(fù)方法以及吸取的經(jīng)驗(yàn)缩挑。使用這個(gè)方法了但两,讓這個(gè)方法幫助自己成為一個(gè)更出色的程序員。

每當(dāng)修復(fù)一個(gè)特別棘手或有趣的問題供置,總會(huì)花幾分鐘寫下一些這個(gè)問題的信息谨湘。這有一些典型記錄的例子小編接下來就分享一些問題和解決方法,需要全部問題和答案的可以加小編群:551346706獲取芥丧。

1紧阔、iOS在app切換到后臺后如何繼續(xù)進(jìn)行下載?

NSURLSession已經(jīng)支持app按下home鍵之后续担,仍讓能夠進(jìn)行下載的任務(wù)擅耽。但是app退出之后不能進(jìn)行下載。對于NSURLSession添加如下的屬性即可進(jìn)行后臺下載物遇。

- (NSURLSession *)session {

????static dispatch_once_t onceToken;

????dispatch_once(&onceToken, ^{

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

????????_queue = [NSOperationQueue new];

????????_queue.maxConcurrentOperationCount = 1;//同時(shí)支持的最多下載次數(shù)

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

????});

????return _session;

}

但是當(dāng)用戶在按鈕home鍵的時(shí)候乖仇,這個(gè)下載還能繼續(xù)進(jìn)行。

如果用戶在后臺按鈕home鍵之后挎挖,上滑將app殺死之后这敬,我們應(yīng)該在appdidregiestActive的方法里面先將所有的下載任務(wù)暫停。

2蕉朵、IAP內(nèi)購中虛擬貨幣導(dǎo)致審核無法通過的問題崔涂?

有的時(shí)候我們需要在app中使用虛擬貨幣,在我們的app中可以使用虛擬貨幣進(jìn)行購買道具等始衅,比如直播中的禮物冷蚂,游戲中的道具等。

蘋果對于虛擬貨幣是需要提成的汛闸,提成的額度為30%蝙茶。所以對于這塊的審核比較嚴(yán)格。首先你們的購買的道具在ios端和安卓端是需要分開的诸老。如果大家玩游戲的就會(huì)發(fā)現(xiàn)游戲的數(shù)據(jù)在兩端是分開的隆夯。

用戶在安卓手機(jī)上購買的道具在iOS上是不能使用的。因?yàn)檫@樣也間接的影響了蘋果的收入。

另外就是在審核期間不能有可以兌換在appStore可購買的商品蹄衷,的任意活動(dòng)或者兌換碼忧额,這個(gè)也是蘋果不允許的。因?yàn)檫@個(gè)也會(huì)影響蘋果的收入愧口。

? ? 另外就是可能有的同學(xué)會(huì)在蘋果審核之后隱藏ipa支付睦番,此處提醒下,蘋果會(huì)掃描你的app代碼中是否有支付寶耍属,微信等關(guān)于支付的字段托嚣。使用開關(guān)加h5的方式可以通過審核,但是此處也有風(fēng)險(xiǎn)厚骗,風(fēng)險(xiǎn)就是一旦被發(fā)現(xiàn)示启,可能的結(jié)果就是蘋果直接封掉賬號。app無法使用溯捆。

3丑搔、如何用dispatch_Group監(jiān)聽afn 下載完成

用dispatch_Group只能控制網(wǎng)絡(luò)請求的先后順序,但是要監(jiān)聽是否下載完成好像不行提揍;但是可以用其他的方式來監(jiān)聽啤月;例如:

可以在每個(gè)網(wǎng)絡(luò)請求的成功或失敗回調(diào)里面設(shè)置一個(gè)bool標(biāo)識符為YES,并發(fā)送一個(gè)通知劳跃,在當(dāng)前頁面監(jiān)聽通知谎仲,并在監(jiān)聽的通知方法里面,對所有網(wǎng)絡(luò)請求涉及到的bool標(biāo)識符進(jìn)行判斷刨仑,如果都為YES郑诺,就可以認(rèn)為是所有網(wǎng)絡(luò)請求都請求完成,就可以執(zhí)行自己想要進(jìn)行的操作

4杉武、iOS原生端如何使用JSCore進(jìn)行原生和iOS的交互

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

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

調(diào)用此方法即可調(diào)用js中的方法辙诞。

? ? 此處有的時(shí)候可能會(huì)調(diào)用不到j(luò)s中的方法,原因有可能是js的代碼和html的代碼是分開放置的轻抱,通過此時(shí)不一定能夠拿到j(luò)s中的代碼飞涂。解決的方法是,先獲取整個(gè)html的代碼祈搜。在html代碼的后面拼接js的路徑较店,然后使用 webView loadHtml的方法去執(zhí)行網(wǎng)頁上的數(shù)據(jù)。

JS調(diào)用oc中的方法

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

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

//change2 ?前后端約定的字符串

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

//根據(jù)點(diǎn)擊js端的方法容燕,會(huì)傳遞對應(yīng)的參數(shù)給OC端梁呈,OC端根據(jù)約定的參數(shù)規(guī)則即可相應(yīng)的對應(yīng)的操作。

?? ?? ? NSLog(@“%@“,params);

? ? };

5蘸秘、用戶信息是保存在沙盒還是userdefault比較好

首先NSUserDefaults就是在沙盒中官卡。一般用戶的屬性不會(huì)很多蝗茁,所以采用 加密+偏好的方式或者是歸檔的方式可以保存。但是現(xiàn)在屬性這么多味抖,建議使用歸檔评甜,使用歸檔的時(shí)候,json轉(zhuǎn)model等等都有第三方輔助仔涩,很方便。

至于登錄保存用戶信息粘舟,方式很有很多種:

一.單例模式熔脂,登陸后把用戶數(shù)據(jù)存儲(chǔ)在單例對象

二. NSUserDefaults .數(shù)據(jù)存儲(chǔ)后可以關(guān)閉app后依然存在,只有卸載App或者手動(dòng)刪除,數(shù)據(jù)才會(huì)消失

三.鑰匙串,數(shù)據(jù)可以刪除app后依然存在,鑰匙串由操作系統(tǒng)保護(hù)并且存儲(chǔ)后的數(shù)據(jù)是比較安全的,長用來存儲(chǔ)一些密碼,私鑰

6柑肴、開發(fā)中試圖通過kvo來監(jiān)聽?uiwebview.scrollview?contentSize 來動(dòng)態(tài)改變?uiwebview 的frame 以達(dá)到?uiwebview 剛好填充contentSize的效果, 實(shí)際上效果會(huì)導(dǎo)致一個(gè)死循環(huán)霞揉,讓scrollview.frame越來越大

scrollView 的?contentSize 和 bound 有著密切的關(guān)系,而bound 與frame有著密切的關(guān)系晰骑,因此這樣做是不合理的

解決方法

// 在y方向給足contentsize足夠的空間

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

[_webView loadHTMLString:html baseURL:nil];

// 加載完畢后再調(diào)整y方向的contentSize

- (void)webViewDidFinishLoad:(UIWebView*)webView

{

???//在加載完畢之后獲取webview內(nèi)容所需要的空間

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

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

??? webView.frame= frame;

???//調(diào)整好frame之后再調(diào)整contentsize

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

}

7适秩、在做代駕項(xiàng)目,用戶下單之后司機(jī)的狀態(tài)是極光推送到用戶的??如果用戶禁止app的推送功能??我應(yīng)該怎么實(shí)現(xiàn)我的實(shí)時(shí)查看司機(jī)/訂單信息的需求。

解決這個(gè)問題的方式有兩種方式:

1.app和服務(wù)器建立長連接硕舆,將數(shù)據(jù)實(shí)時(shí)傳遞app秽荞。此方式可能需要和服務(wù)器人員討論,可能對服務(wù)器的要求比較高抚官。

2.另一種方式是定時(shí)發(fā)送請求扬跋,類似前端使用的心跳包的方式,當(dāng)然用戶也可以在信息展示界面進(jìn)行手動(dòng)刷新凌节。此方式的好處是后臺的壓力會(huì)比較小钦听。

8、如何實(shí)現(xiàn)在app中打開淘寶倍奢,并且跳轉(zhuǎn)到指定的應(yīng)用朴上?比如優(yōu)惠券頁面

找到淘寶的URLScheme并且在URLScheme添加指定的參數(shù),如果你的本機(jī)安裝了淘寶app客戶端卒煞,可以跳轉(zhuǎn)到淘寶的指定頁面痪宰。

比如如下URLScheme

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

如何找到這樣的URLSCheme。

在模擬器寫一個(gè)appDemo跷坝,和淘寶的包名一致酵镜,然后找到一個(gè)你需要的鏈接,比如優(yōu)惠卷柴钻,點(diǎn)擊跳轉(zhuǎn)的按鈕淮韭,然后在

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

此方法中打印出來即可。

9贴届、App上架后靠粪,如何修改app上顯示的公司名稱

解答方式:

1.先修改開發(fā)者賬號中填寫的公司名稱蜡吧。

2.再提交更新版本。

如何修改開發(fā)者賬號中的公司名稱:

登陸到Apple developer上面占键,在people里面的開發(fā)者列表中找到agent昔善,讓agent的這個(gè)人直接撥打蘋果開發(fā)部咨詢電話:400-670-1855,修改開發(fā)者賬號上的公司名或者用你注冊的賬號的郵箱直接寫郵件:“我需要更改公司名稱”到chinadev@asia.apple.com畔乙,讓蘋果開發(fā)部客服來處理君仆。

10、iOS打包成功之后牲距,運(yùn)行在iPhone上會(huì)閃退返咱,黑屏?

關(guān)于打包之后無法安裝牍鞠,或者安裝之后閃退的情況咖摹。只有可能是兩種情況,一種是證書錯(cuò)誤难述,另一種就是當(dāng)前的設(shè)備并不在開發(fā)者對應(yīng)的賬號里面萤晴。

我們來看一下怎么檢測當(dāng)前的設(shè)備是否在開發(fā)者的證書里呢,如果你有開發(fā)者賬號胁后,當(dāng)然登錄app即可獲得店读。但是沒有開發(fā)者賬號的情況我們該怎么辦呢?

我們以下面的ipa包為例择同,必須是hoc或者dev的包

ipa其實(shí)就是一個(gè)壓縮文件两入,我們可以對齊解壓。得到一個(gè)payload文件夾敲才。

解壓后裹纳,點(diǎn)擊進(jìn)入文件夾,然后顯示包內(nèi)容紧武,可以看到里面的文件列表

我們找到對應(yīng)的證書?embedded.mobileprovision 這個(gè)就是你的ipa包里面使用的簽名證書剃氧。

然后mac上開啟終端。并cd到證書所在的路徑

并且在終端輸入

//查看dev.hoc包中的已經(jīng)添加的設(shè)備號

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

在證書對應(yīng)的路徑會(huì)生成一個(gè)文件

用xcode打開這個(gè)文件

這里面就是你的證書里面對應(yīng)的所有的設(shè)備號阻星。

最后

我發(fā)現(xiàn)為每個(gè)有趣的 問題 記錄下來朋鞍,可以讓我輕易學(xué)習(xí)到很多。在記錄的行為中我會(huì)對發(fā)生的事情思考得更深刻妥箕。同樣滥酥,一旦記錄下來,我可以在之后檢查發(fā)生的事情畦幢。偶爾坎吻,我也會(huì)瀏覽文件,只閱讀教訓(xùn)部分宇葱,對我認(rèn)為是從問題中學(xué)到的最有價(jià)值的經(jīng)驗(yàn)加強(qiáng)記憶瘦真。

今天給大家的分享就到這吧刊头!有收獲,或者喜歡小編的可以關(guān)注小編同時(shí)也歡迎大家加入小編的iOS交流群551346706诸尽,小編會(huì)分享小編記錄的全部問題原杂,大家一起交流成長!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末您机,一起剝皮案震驚了整個(gè)濱河市穿肄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌际看,老刑警劉巖被碗,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異仿村,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)兴喂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門蔼囊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人衣迷,你說我怎么就攤上這事畏鼓。” “怎么了壶谒?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵云矫,是天一觀的道長。 經(jīng)常有香客問我汗菜,道長让禀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任陨界,我火速辦了婚禮巡揍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘菌瘪。我一直安慰自己腮敌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布俏扩。 她就那樣靜靜地躺著糜工,像睡著了一般。 火紅的嫁衣襯著肌膚如雪录淡。 梳的紋絲不亂的頭發(fā)上捌木,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天,我揣著相機(jī)與錄音赁咙,去河邊找鬼钮莲。 笑死免钻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的崔拥。 我是一名探鬼主播极舔,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼链瓦!你這毒婦竟也來了拆魏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤慈俯,失蹤者是張志新(化名)和其女友劉穎渤刃,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贴膘,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡卖子,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了刑峡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洋闽。...
    茶點(diǎn)故事閱讀 39,731評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖突梦,靈堂內(nèi)的尸體忽然破棺而出诫舅,到底是詐尸還是另有隱情,我是刑警寧澤宫患,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布刊懈,位于F島的核電站,受9級特大地震影響娃闲,放射性物質(zhì)發(fā)生泄漏虚汛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一畜吊、第九天 我趴在偏房一處隱蔽的房頂上張望泽疆。 院中可真熱鬧,春花似錦玲献、人聲如沸殉疼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瓢娜。三九已至,卻和暖如春礼预,著一層夾襖步出監(jiān)牢的瞬間眠砾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工托酸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留褒颈,地道東北人柒巫。 一個(gè)月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像谷丸,于是被迫代替她去往敵國和親堡掏。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容