Как я могу записать голос в своем приложении, а затем отправить его на сервер?

#iphone #objective-c #voice

#iPhone #objective-c #голос

Вопрос:

Я пытаюсь создать приложение, которое будет записывать голоса (микрофон) на моем iPhone, а затем отправлять их в хранилище на моем сервере.

кто-нибудь может мне помочь с этим. я даже не знаю, с чего начать 🙂

Большое тебе спасибо, Одед.

Комментарии:

1. Никто не собирается писать код за вас. Попробуйте написать какой-нибудь код для записи вашего голоса. Если это не сработает, вернитесь сюда, покажите нам, что вы пробовали и почему это не сработало. Вы обнаружите, что люди будут гораздо более восприимчивы.

Ответ №1:

  1. Просто загуглите «как записать iphone», и вы получите его за считанные секунды.
  2. После записи файл будет создан в вашей папке «Документы».
  3. Извлеките этот путь и извлеките данные в NSData и отправьте на сервер с помощью метода POST.

Пример кода,

 NSLog(@"SendingRecordedData");
    NSString *urlString = [NSString stringWithFormat:@"http://your_server/fileupload.php"];
    NSLog(@"Url:%@",urlString);

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];

NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];

NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];

NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"rn--%@rn",boundary] dataUsingEncoding:NSUTF8StringEncoding]];    
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name="pics"; filename="record.caf"rn"] dataUsingEncoding:NSUTF8StringEncoding]];



[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-streamrnrn"] dataUsingEncoding:NSUTF8StringEncoding]];


[body appendData:[NSData dataWithData:data2]];
[body appendData:[[NSString stringWithFormat:@"rn--%@--rn",boundary] dataUsingEncoding:NSUTF8StringEncoding]];

[request setHTTPBody:body];
NSError *err;
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:amp;err];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
 

Комментарии:

1. sendSynchronousRequest плох, поскольку он блокирует поток, поэтому НЕ ДЕЛАЙТЕ ЭТОГО В ПОТОКЕ MIAN (особенно для больших объемов данных, таких как аудио), или предпочтительно используйте асинхронные API.

Ответ №2:

на сайте разработчика iOS есть пример кода с записью — SpeakHere. После записи вы можете сохранить ее и отправить в виде любого двоичного файла.