2017-01-20 4 views
0

Я пытаюсь загрузить все объекты записи, связанные с учетной записью Twilio, но не вижу никаких методов в TwilioVoiceClient.h или VoiceClient.h, которые этого добиваются. Я использую SDK ProgramableVoice iOS (бета-версия 5), но онлайн-документация не показывает никаких объективных-с или Swift. Я в состоянии воспроизводить отдельные записи без каких-либо проблем, если запись SID известен как так:Извлечь все записи в Twilio с помощью программируемого голосового SDK

NSString *baseString = @"https://api.twilio.com/2010-04-01/Accounts/"; 
NSString *recordingSID = @"RExxxxxxxxxxxxxxxxxxxxxxxxxxxxx";  
NSURL *recordingUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@/Recordings/%@.mp3", baseString, kTwilAccount, recordingSID]]; 
avPlayer = [[AVPlayer alloc]initWithURL:recordingUrl]; 

То, что я хотел бы сделать, хотя, это загрузить все связанные с ним объекты записи для учетной записи. Для этого я обратился к NSURLConnection:

NSString *baseStr = [NSString stringWithFormat:@"https://api.twilio.com/2010-04-01/Accounts/%@/Recordings.json", kTwilAccount]; 
NSURL *url = [NSURL URLWithString:baseStr]; 
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:1000.0]; 
NSString *authStr = [NSString stringWithFormat:@"%@:%@", kTwilAccount, authToken]; 
NSData *authData = [authStr dataUsingEncoding:NSASCIIStringEncoding]; 
NSString *authValue = [NSString stringWithFormat:@"Base %@", [authData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]]; 
[theRequest setValue:authValue forHTTPHeaderField:@"Authorization"]; 

[NSURLConnection sendAsynchronousRequest:theRequest queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *responseCode, NSData *responseData, NSError *responseError) { 
    if ([responseData length] > 0 && responseError == nil){ 
     // do work 
    } else if ([responseData length] == 0 && responseError == nil){ 
     NSLog(@"data error: %@", responseError); 

    } else if (responseError != nil && responseError.code == NSURLErrorTimedOut){ 
     NSLog(@"data timeout: %ld", (long)NSURLErrorTimedOut); 


    } else if (responseError != nil){ 
     NSLog(@"data download error: %@", responseError); 


    } 
}]; 

Это приводит к ошибке загрузки с выходом консоли:

загрузить данные об ошибке: Error Domain = NSURLErrorDomain Code = -1012 "(нуль)" UserInfo = {NSErrorFailingURLStringKey = https://api.twilio.com/2010-04-01/Accounts/ACdee27262ef5fd27a593a697d80e7f7b0/Recordings.json, NSUnderlyingError = 0x17084aa70 {Error Domain = kCFErrorDomainCFNetwork Code = -1012 "(нуль)" UserInfo = {_ kCFURLErrorAuthFailedResponseKey = {URL = https://api.twilio.com/2010-04-01/Accounts/ACdeedkfdjieireijrekjrkejrk4kj4/Recordings.json}}}, NSErrorFailingURLKey = https://api.twilio.com/2010-04-01/Accounts/ACdeedkfdjieireijrekjrkejrk4kj4/Recordings.json}

Очевидно, что он либо не признать конечную точку или не как то, как я аутентифицируюсь. Как я могу запрашивать эту информацию в объективе-c?

Спасибо за чтение.

ответ

1

Twilio разработчик евангелист здесь.

Мы фактически не рекомендуем вводить учетные данные учетной записи в приложение и вызывать вызовы API из вашего приложения. Возможно, злоумышленник может декомпилировать ваше приложение, получить ваши учетные данные и оскорбить вашу учетную запись.

Мы рекомендуем вместо этого реализовать решение на стороне сервера, чтобы выполнить вызов API и получить ваши записи. Затем вы можете общаться с вашим сервером из приложения.

Here's a blog post that explains more and includes an example for sending an SMS from an iOS application.