2015-07-27 2 views
1

Я пытаюсь получить доступ к контактам пользовательской формы телефона. Так или с этой целью я использую обработчик завершения. Поэтому, когда приложение пытается получить доступ к контактам пользователя, оно показывает предупреждение. & просит разрешения разрешить контакт. Когда пользователь нажимает кнопку «ОК».Не удается выполнить сетевой вызов из обработчика завершения?

enter image description here

то блок выполняется & это время я сделать сеть call.Although функции называется, но делегат никогда не называется & ответа никогда не получал.

ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL); 
    if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) 
    { 

     ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) { 
      // First time access has been granted, add the contact 
      NSLog(@"access contact"); 
      [self sample]; 

     }); 
      NSLog(@"after sccess contact"); 

    } 
    else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) 
    { 
     // The user has previously given access, add the contact 
     NSLog(@"previous access"); 
    } 
    else 
    { 
     // The user has previously denied access 
     // Send an alert telling user to change privacy setting in settings app 
     NSLog(@"send alert"); 
    } 
    CFErrorRef error = NULL; 

вызовов сети

-(void)sample 
{ 
    NSLog(@"sample func called"); 
    // Create the request. 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com"]]; 

    // Specify that it will be a POST request 
    request.HTTPMethod = @"POST"; 

    // This is how we set header fields 
    [request setValue:@"application/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 

    // Convert your data and set your request's HTTPBody property 
    NSString *stringData = @"some data"; 
    NSData *requestBodyData = [stringData dataUsingEncoding:NSUTF8StringEncoding]; 
    request.HTTPBody = requestBodyData; 

    // Create url connection and fire request 
    sampleConn= [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
} 
+0

Вы проверили способ отказа делегата? –

+0

Да, я проверил его. Если я сделаю сеть cal из метода [viewdidLoad], тогда ответ будет получен. Но в другом случае я не получаю никакого ответа. @ AshishP. – Techiee

ответ

2

Попробуйте

Заменить код

[self sample]; 

С

dispatch_async(dispatch_get_main_queue(), ^{ 

    [self sample]; 
}); 
+0

Я пробовал, но не работает для меня. – Techiee

+0

Эй, ваш предыдущий ответ сработал в моем демо-коде. @ Ashish – Techiee

+0

Обновите свой ответ, я его приму. @ Ashish – Techiee

Смежные вопросы