iOS 定位的第三方框架 INTULocationManager框架

一、簡介

  • 優點:
    • 該框架可以使用block接收用戶的位置
    • 而corelocation框架定位使用代理進行傳值-> 相比較而言corelocation框架定位代碼比較分散
  • 框架存在問題
    • 此框架針對于iOS9.0 ,前臺授權時,后臺是無法獲取用戶位置
  • 使用
    • 下載框架(locationManager框架)
    • 使用block進行定位(帶delayUntilAuthorized參數的定位:超時時間從什么時候開始計算)(依然要配置info.plist文件對應的鍵值對)
    • 通過定位請求ID分別取消定位(不會回調block)和強制完成定位(會回調block)

二、基本使用

#import "ViewController.h"
#import "INTULocationManager.h"
@interface ViewController ()

@end

@implementation ViewController



- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    INTULocationManager *locMgr = [INTULocationManager sharedInstance];
    
    // delayUntilAuthorized 超時計時從什么時候開始
    INTULocationRequestID requestID = [locMgr requestLocationWithDesiredAccuracy:INTULocationAccuracyCity
                                       timeout:3.0
                          delayUntilAuthorized:NO
                                         block:^(CLLocation *currentLocation, INTULocationAccuracy achievedAccuracy, INTULocationStatus status) {
                                             if (status == INTULocationStatusSuccess) {
                                                
                                                 NSLog(@"---%@", currentLocation);
                                                 
                                             }else
                                             {
                                                 NSLog(@"錯誤 %zd", status);
                                             }
                                         }];
    
    // 強制完成定位,會執行block內容
//    [[INTULocationManager sharedInstance] forceCompleteLocationRequest:requestID];
    // 取消位置請求(不會回調block)
    [[INTULocationManager sharedInstance] cancelLocationRequest:requestID];
}


- (void)subscript
{
    INTULocationManager *locMgr = [INTULocationManager sharedInstance];
    [locMgr subscribeToLocationUpdatesWithDesiredAccuracy:INTULocationAccuracyHouse
                                                    block:^(CLLocation *currentLocation, INTULocationAccuracy achievedAccuracy, INTULocationStatus status) {
                                                        if (status == INTULocationStatusSuccess) {
                                                            NSLog(@"定位");
                                                        }
                                                        else {
                                                            NSLog(@"失敗");
                                                        }
                                                    }];
}
@end
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容