問題:微課件預(yù)覽,WKWebView加載沙盒路徑錄音文件的時(shí)候加載不出來
成都網(wǎng)絡(luò)公司-成都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)10余年經(jīng)驗(yàn)成就非凡,專業(yè)從事做網(wǎng)站、成都網(wǎng)站設(shè)計(jì),成都網(wǎng)頁設(shè)計(jì),成都網(wǎng)頁制作,軟文營銷,一元廣告等。10余年來已成功提供全面的成都網(wǎng)站建設(shè)方案,打造行業(yè)特色的成都網(wǎng)站建設(shè)案例,建站熱線:13518219792,我們期待您的來電!
解決辦法:使用GCDWebServer開啟一個(gè)本地服務(wù),將沙盒路徑轉(zhuǎn)成http鏈接訪問就可以了
一、簡單談?wù)凙TS(App Transport Security)ATS(App Transport Security)是為了提高App與服務(wù)器之間安全傳輸數(shù)據(jù)一個(gè)特性,這個(gè)特性從iOS9和OSX10如果HTTPS服務(wù)器能通過ATS特性,則上面所有測試案例都是PASS;如果某一項(xiàng)的Reuslt是FAIL,就找到ATS Dictionary來查看,就能知道HTTPS服務(wù)器不滿足ATS哪個(gè)條件。 這里我前面碰到一個(gè)問題,就是自建證書的時(shí)候,通過此命令進(jìn)行測試時(shí),發(fā)現(xiàn)Result全是FAIL,而且在iOS的代碼測試中也出現(xiàn)了一個(gè)很奇怪的現(xiàn)象,就是相同的代碼,在iOS8.4請(qǐng)求數(shù)據(jù)完全正常,但是在iOS9上,直接是連接失敗。最終發(fā)現(xiàn),其實(shí)就是因?yàn)樽越ㄗC書不受信任,是通不過ATS的,除非將NSAllowsArbitraryLoads設(shè)置為YES。四、iOS客戶端在上面的第二大步驟當(dāng)中,HTTPS服務(wù)器滿足ATS默認(rèn)的條件,而且SSL證書是通過權(quán)威的CA機(jī)構(gòu)認(rèn)證過的,那么我們在使用Xcode7開發(fā)的時(shí)候,對(duì)網(wǎng)絡(luò)的適配什么都不用做,我們也能正常與服務(wù)器通信。但是,當(dāng)我們對(duì)安全性有更高的要求時(shí)或者我們自建證書時(shí),我們需要本地導(dǎo)入證書來進(jìn)行驗(yàn)證。那么,如何本地導(dǎo)入證書進(jìn)行驗(yàn)證呢?在這里先提一下,由于iOS客戶端支持的證書是DER格式的,我們需要?jiǎng)?chuàng)建客戶端證書。創(chuàng)建客戶端證書,直接將服務(wù)端的CA根證書導(dǎo)出成DER格式就行。openssl x509 -inform PEM -outform DER -in ca.crt -out ca.cer導(dǎo)入完證書之后,我們分別來說說使用NSURLSession和AFNetworking來進(jìn)行本地驗(yàn)證。首先,來說說使用NSURLSession驗(yàn)證驗(yàn)證步驟如下:導(dǎo)入CA根證書到工程中,即我們創(chuàng)建的ca.cer獲取trust object,通過SecCertificateCreateWithData方法讀取導(dǎo)入的證書的數(shù)據(jù)生成一個(gè)證書對(duì)象,然后通過SecTrustSetAnchorCertificates 設(shè)置這個(gè)證書為trust object的信任根證書(trusted anchor)
在項(xiàng)目功能中有一個(gè)定位CLLocation的需求,遇到了一些知識(shí)難點(diǎn),經(jīng)過各位大俠的幫助,問題解決,特此分享供大家學(xué)習(xí),希望大家共同學(xué)習(xí)進(jìn)步。
一、簡單說明
1.CLLocationManager
CLLocationManager的常用操作和屬性
開始用戶定位- (void)startUpdatingLocation;
停止用戶定位- (void) stopUpdatingLocation;
說明:當(dāng)調(diào)用了startUpdatingLocation方法后,就開始不斷地定位用戶的'位置,中途會(huì)頻繁地調(diào)用代理的下面方法
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;
每隔多少米定位一次
@property(assign, nonatomic) CLLocationDistance distanceFilter;
定位精確度(越精確就越耗電)
@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;
使用定位功能,首先要導(dǎo)入框架,遵守CLLocationManagerDelegate協(xié)議,再創(chuàng)建位置管理器CLLocationManager
在iOS8.0后,定位功能需要在info.plist中加入NSLocationWhenInUseUsageDescription和NSLocationAlwaysUsageDescription這兩個(gè)NSString類型字段,才能夠使用定位功能
代碼貼出來與大家共勉,各位看官自行研究
{ self.locationManager = [[CLLocationManager alloc] init]; _locationManager.delegate = self; if([CLLocationManager locationServicesEnabled] == NO) { // NSLog(@"沒有GPS服務(wù)"); } //地理位置精確度 _locationManager.desiredAccuracy=kCLLocationAccuracyNearestTenMeters; //設(shè)置距離篩選器,double類型,只要距離變化多少,就調(diào)用委托代理 self.locationManager.distanceFilter = kCLDistanceFilterNone; // meters [_locationManager requestWhenInUseAuthorization];// 前臺(tái)定位 [_locationManager startUpdatingLocation];}- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{ NSLog(@"longitude = %f", ((CLLocation *)[locations lastObject]).coordinate.longitude); NSLog(@"latitude = %f", ((CLLocation *)[locations lastObject]).coordinate.latitude); CGFloat longTI=((CLLocation *)[locations lastObject]).coordinate.longitude; CGFloat latTI=((CLLocation *)[locations lastObject]).coordinate.latitude; //將經(jīng)度顯示到label上 _longitudeLabel.text = [NSString stringWithFormat:@"%f",longTI]; //將緯度現(xiàn)實(shí)到label上 _latitudeLabel.text = [NSString stringWithFormat:@"%f",latTI]; // 獲取當(dāng)前所在的城市名 CLGeocoder *geocoder = [[CLGeocoder alloc] init]; //根據(jù)經(jīng)緯度反向地理編譯出地址信息 [geocoder reverseGeocodeLocation:locations.lastObject completionHandler:^(NSArray *array, NSError *error) { if (array.count 0) { CLPlacemark *placemark = [array objectAtIndex:0];// //將獲得的所有信息顯示到label上// self.location.text = placemark.name; //獲取城市 NSString *city = placemark.locality; if (!city) { //四大直轄市的城市信息無法通過locality獲得,只能通過獲取省份的方法來獲得(如果city為空,則可知為直轄市) city = placemark.administrativeArea; } // NSLog(@"city = %@", city); _cityName=city; } else if (error == nil [array count] == 0) { // NSLog(@"No results were returned."); } else if (error != nil) { // NSLog(@"An error occurred = %@", error); } }]; //系統(tǒng)會(huì)一直更新數(shù)據(jù),直到選擇停止更新,因?yàn)槲覀冎恍枰@得一次經(jīng)緯度即可,所以獲取之后就停止更新 [manager stopUpdatingLocation];}
以上是關(guān)于我給大家整理的IOS開發(fā)之詳解定位CLLocation,后續(xù)還會(huì)持續(xù)更新,希望大家能夠喜歡。
兩種技術(shù)相比較,web前端開發(fā)的學(xué)習(xí)要容易些。開發(fā)使用的javascript是弱類型的語言,更加容易理解和掌握。
由淺入深依次掌握:前端頁面重構(gòu),javascript高級(jí)程序設(shè)計(jì),PC端全棧項(xiàng)目開發(fā),移動(dòng)端項(xiàng)目開發(fā),混合(Hybrid)開發(fā),WebAPP后臺(tái)系統(tǒng)開發(fā)等專業(yè)技術(shù)。
投入時(shí)間和精力,以興趣來驅(qū)動(dòng)學(xué)習(xí)。不管是在學(xué)還是在機(jī)構(gòu)學(xué)習(xí),在整個(gè)的學(xué)習(xí)過程中貫穿著代碼實(shí)戰(zhàn)??吹拇a是別人的,動(dòng)手寫出來的是自己的。自己動(dòng)手寫代碼,記憶更加深刻,效率更高。