開篇
現(xiàn)在開始第二篇,哈哈路克。上一篇文章主要講了:iOS生成帶logo的二維碼樟结,區(qū)域截屏保存至相冊 ,這一篇就來說說其他的比較常見的小功能吧例如:調(diào)起QQ臨時回話,調(diào)用系統(tǒng)的打電話等功能精算,都是在售后狭吼,商城等模塊中常用的功能,總結(jié)下方便以后直接拿來使用殖妇。
主要內(nèi)容
- iOS調(diào)起QQ客戶端刁笙,與公眾號臨時會話
- 調(diào)用系統(tǒng)的打電話功能
- 定時器切換后臺不計時的問題
調(diào)起QQ客戶端,與公眾號臨時會話
網(wǎng)上可以查到許多調(diào)起QQ客戶端會話的介紹方法谦趣,但是與公眾號的臨時回話有時候卻會有點問題疲吸,這次總結(jié)一下,方便以后使用前鹅,具體實現(xiàn)代碼如下(PS:這種方法實現(xiàn)的臨時調(diào)起客戶端回話摘悴,是用戶企業(yè)版QQ,例如400 800開頭的這種舰绘,如果是個人QQ是無法臨時回話的蹂喻,會出現(xiàn)發(fā)送消息不出去葱椭,不會出現(xiàn)加好友的提示等狀況。):
if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"mqq://"]]) {//安裝了qq
NSString * qrString=[NSString stringWithFormat:@"mqqwpa://im/chat?chat_type=crm&uin=%@&version=1&src_type=web&web_src=http:://wpa.b.qq.com", @"這里放入后臺返回的公眾號號碼"];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:qrString]];
}else{//未安裝
//如果未安裝口四,采取的措施孵运,隱藏控件更新布局等。
}
QQ客戶端調(diào)取成功的界面如下:
公眾號聊天.png
調(diào)用系統(tǒng)打電話功能
根據(jù)后臺返回的商家電話信息蔓彩,售后治笨,客服聯(lián)系信息等,調(diào)起電話功能與相關(guān)人進行溝通赤嚼。不多說直接上代碼:
phoneNum=@"1234567890";
if (![phoneNum isKindOfClass:[NSNull class]]) {
// alert 打電話
UIAlertView* alertView=[[UIAlertView alloc] initWithTitle:nil message:[NSString stringWithFormat:@"是否呼叫:%@",phoneNum] delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"確定", nil];
alertView.tag=0;
[alertView show];
}else{
[SVProgressHUD showInfoWithStatus:@"親旷赖,此商家沒有留固定聯(lián)系方式哦" maskType:SVProgressHUDMaskTypeBlack];
}
實現(xiàn)協(xié)議方法
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex==1&&alertView.tag==0) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",phoneNum]]];
}
}
調(diào)取成功界面如下:
定時器切換后臺不計時的問題
這個問題源于今天同事的新項目中遇到的一個問題,由于在老項目中早就做了處理更卒,所以他一直沒注意等孵,在新項目中發(fā)現(xiàn)紅包領(lǐng)取的定時器在軟件切換到后臺時再切換到軟件出現(xiàn)定時器不準確的現(xiàn)象。
解決方案在
- (void)applicationDidEnterBackground:(UIApplication *)application {
}
在上述函數(shù)中對UIBackgroundTaskIdentifier 進行設(shè)置蹂空,根據(jù)這個后臺標識符來進行數(shù)據(jù)的處理流济。
UIApplication* app = [UIApplication sharedApplication];
__block UIBackgroundTaskIdentifier bgTask;
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
dispatch_async(dispatch_get_main_queue(), ^{ if (bgTask != UIBackgroundTaskInvalid)
{
bgTask = UIBackgroundTaskInvalid;
}
});
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
dispatch_async(dispatch_get_main_queue(), ^{ if (bgTask != UIBackgroundTaskInvalid)
{
bgTask = UIBackgroundTaskInvalid;
}
});
});
ios7以前,后臺可以用下面的的方式腌闯,去在后臺存活5-10分鐘,在ios8中雕憔,只能存活3分鐘姿骏。我們這么做只是僅僅滿足我們短時間內(nèi)執(zhí)行任務(wù)罷了,超過系統(tǒng)的時間一樣會被系統(tǒng)殺掉斤彼,至于怎么使軟件在后臺長時間狈质荩活不是我們今天研究的問題,哈哈琉苇。
其他
最近一個關(guān)系不錯的做安卓的小伙伴公司準備招一個iOS嘲玫,讓他去面試,可偏偏他又不會并扇,讓出幾個簡單的問題去团,比較常用但是稍微有點區(qū)分的,畢竟他只是要個能維護的有實際經(jīng)驗的而已穷蛹,廢話不多說土陪,厚著臉皮把今天的幾個題放一下吧,哈哈肴熏。
例如在商城訂單頁面 tableview 展示待付款的訂單鬼雀,每個cell上有一個倒計時定時器,當(dāng)我用手上下拖動或者保持滑動狀態(tài)時定時器停止蛙吏,解決辦法,并詳細說明下造成的原因源哩?
說說你對本地存儲的認識鞋吉,以及如何獲取設(shè)備的唯一標識符?
給定一個h5頁面上面有幾個不同的按鈕励烦,如何根據(jù)點擊不同的h5頁面上的按鈕谓着,跳轉(zhuǎn)到APP中不同的界面或者執(zhí)行不同的操作?(是點擊h5 然后APP做動作)請說明其中的實現(xiàn)步驟崩侠。
(這個比較基礎(chǔ))平時的代碼 界面用什么布局漆魔?一般代碼布局的常用三方庫?
問題不多只有四個却音,至于出這幾個問題的原因改抡,首先web頁的交互以及跳轉(zhuǎn)在現(xiàn)在的APP中比較常用,至于1.題則是實戰(zhàn)和基礎(chǔ)知識系瓢,最后一個布局就是看看平時的代碼習(xí)慣如何阿纤,最好招一個代碼布局熟練的,怕來一個sb用的出神入化后期維護欲仙欲死的夷陋,哈哈欠拾,最重點是答案不用專門寫了,哈哈骗绕。
文章如下:
iOS走近商城APP(四 runloop應(yīng)用 獲取通訊錄并處理)
iOS怎樣獲取設(shè)備唯一標識符
iOS走近商城APP(三 WKWebView 商品規(guī)格選擇框架封裝)
好吧藐窄,我承認出題的真正重點是我不想專門一個個給他寫答案,哈哈
后記
兩篇文章告一段落酬土,這次主要介紹的以平時常用的小功能為主荆忍,并不是說他有多難,重點是總結(jié)一下可以提高以后再使用的開發(fā)效率撤缴。同時希望對用到這一塊的小伙伴有所幫助刹枉。