Почему я получаю сообщение об ошибке «Error Domain = NSURLErrorDomain Code = -1004« Не удалось подключиться к серверу ».» При попытке вызвать карту Google в моем приложении iOS? - PullRequest
0 голосов
/ 17 апреля 2019

Dashboard og my Google cloud platform Я получаю сообщение об ошибке каждый раз при вызове карты Google в моем приложении для iOS следующим образом:

load failed with error Error Domain=NSURLErrorDomain Code=-1004 "Could not connect to the server." UserInfo={_kCFStreamErrorCodeKey=61, NSUnderlyingError=0x283671e90 {Error Domain=kCFErrorDomainCFNetwork Code=-1004 "(null)" UserInfo={_kCFStreamErrorCodeKey=61, _kCFStreamErrorDomainKey=1}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <27BC82BB-492A-4C55-B351-35C2E91B2607>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalDataTask <27BC82BB-492A-4C55-B351-35C2E91B2607>.<1>"
), NSLocalizedDescription=Could not connect to the server., NSErrorFailingURLStringKey=https://clients4.google.com/glm/mmap, NSErrorFailingURLKey=https://clients4.google.com/glm/mmap, _kCFStreamErrorDomainKey=1} [-1004]

Я пытался добавить ключи ATS, но получаю Domain=NSURLErrorDomain Code=-1001 "Request timed out. "ошибка в моем приложении. Я пробовал в разных сетях, но все еще та же проблема. Любая идея, почему такая проблема возникает?

Я скачал базовые примеры кодов из git и попробовал мой ключ API с ним. Я снял ограничения идентификатора пакета iOS, чтобы его можно было использовать в демонстрационном приложении. Я также добавил идентификатор демо-пакета в мой ключ API для проверки. Ничего не работает, я не вижу карты на своем экране. Обратите внимание, что я использую Google API для пробного использования на 1 год для выполнения тестов.

Звонок из кода для показа карт выглядит следующим образом:

В viewDidLoad: -

CLLocationManager *locationManager = [[CLLocationManager alloc] init];

self._locationManager =locationManager;
self._locationManager.distanceFilter = kCLDistanceFilterNone;
self._locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[self._locationManager startUpdatingLocation];
[self._locationManager requestWhenInUseAuthorization];
[self._locationManager requestAlwaysAuthorization];

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:self._locationManager.location.coordinate.latitude longitude:self._locationManager.location.coordinate.longitude zoom:15];
self.mapView_ = [GMSMapView mapWithFrame:CGRectMake(0, 44, 1024,724) camera:camera];
self.mapView_.delegate=self;
self.mapView_.myLocationEnabled = YES;
self.mapView_.settings.compassButton = YES;
self.mapView_.settings.myLocationButton = YES;
self.mapView_.accessibilityElementsHidden = NO;

TestTileLayer *titleLayer = [[TestTileLayer alloc] init];
self.testTileLayer = titleLayer;
self.testTileLayer.map = self.mapView_;
[self.view addSubview:self.mapView_] ;
[self showPinFromLocation]; 

, а затем в showPinFromLocation: -

CLLocationCoordinate2D coordinate = _currentLocation;
NSString *api = [NSString stringWithFormat:kMapAPIForLocation, coordinate.latitude, coordinate.longitude, apiKey];
NSURL *url = [NSURL URLWithString:api];

__block PMIiSMSPlace *placeMark = nil;

GMSMarker *marker=[[GMSMarker alloc]init];
self.marker3 = marker;

NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithURL:url
        completionHandler:^(NSData *data,
                            NSURLResponse *response,
                            NSError *error) {

DLog(@"Response Code = %ld", (long)[(NSHTTPURLResponse *)response statusCode]);

if(error){
    [m_objGlobal.g_objExceptionHandler sendErrorCode:m_objGlobalData.g_strSelectedJourneyPlanNumber withVisitNumber:m_objGlobalData. g_strSelectedVisitNumber withExceptionReason:[ NSString stringWithFormat:@"Unable to fetch address from google map error desc = %@", error.description] withErrorCode:error.code];
    DLog(@"Map Error = %@", error.userInfo);
}

if(data){

        placeMark = [self parseData:data];

        self.currentPlace = placeMark;
        self.marker3.position=_currentLocation;
        self.marker3.icon = [GMSMarker markerImageWithColor:[UIColor greenColor]];
        self.marker3.title=placeMark.formatted_address;
        self.marker3.snippet=[NSString stringWithFormat:@"%.6f,%.6f",self.marker3.position.latitude,self.marker3.position.longitude ];
        self.marker3.map = self.mapView_;
        [self.marker3 setDraggable:YES];

        placeMark = nil;
    }else{
        placeMark = [[PMIiSMSPlace alloc] init];

        self.currentPlace = placeMark;
        self.marker3.position=self->_currentLocation;
        self.marker3.icon = [GMSMarker markerImageWithColor:[UIColor greenColor]];
        self.marker3.title=placeMark.formatted_address;
        self.marker3.snippet=[NSString stringWithFormat:@"%.6f,%.6f",self.marker3.position.latitude,self.marker3.position.longitude ];

        self.marker3.map = self.mapView_;
        [self.marker3 setDraggable:YES];

        placeMark = nil;

    }

 }] resume];

 }

Я ожидаю, что данные будут успешно извлечены, и обработчик завершения войдет в блок данных. Но вызов всегда входит в блок ошибок. Он вообще не входит в блок данных.

...