Невозможно выполнить поиск в iTunes Store на iOS8

Я использую этот код для открытия приложения iTunes Store и поиска определенной музыки:

NSString *iTunesLink = [NSString stringWithFormat:@"http://search.itunes.apple.com/WebObjects/MZSearch.woa/wa/search?entity=album&media=all&page=1&restrict=true&startIndex=0&term=TERM_NAME"];
NSURL *url = [NSURL URLWithString:iTunesLink];
[[UIApplication sharedApplication] openURL:url];

Код отлично работает на iOS7, изменив значение TERM_NAME, я могу искать все, что захочу. Проблема в iOS8 заключается в том, что поисковый запрос каким-то образом добавляется и начинается с символов ( " ). Я использую журнал, чтобы проверить значение моего NSURL, но он выглядит нормально.

введите здесь описание изображения


person Maxim Makhun    schedule 11.10.2014    source источник
comment
У меня точно такая же проблема... где вы можете это решить?   -  person Gooner    schedule 23.10.2014
comment
@Gooner - я смог выполнить эту работу, используя фрагмент кода, указанный ниже.   -  person Maxim Makhun    schedule 24.10.2014


Ответы (1)


Этот код работал для меня:

NSString *artist = @"artist";
NSString *title = @"title";

NSOperationQueue *operationQueue = [NSOperationQueue new];
NSString *baseURLString = @"https://itunes.apple.com/search";
NSString *searchTerm = [NSString stringWithFormat:@"%@ %@", artist, title];
NSString *searchUrlString = [NSString stringWithFormat:@"%@?media=music&entity=song&term=%@&artistTerm=%@&songTerm=%@", baseURLString, searchTerm, artist, title];
searchUrlString = [searchUrlString stringByReplacingOccurrencesOfString:@" " withString:@"+"];
searchUrlString = [searchUrlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSURL *searchUrl = [NSURL URLWithString:searchUrlString];

NSURLRequest *request = [NSURLRequest requestWithURL:searchUrl];
[NSURLConnection sendAsynchronousRequest:request queue:operationQueue completionHandler:^(NSURLResponse* response, NSData* data, NSError* error)
 {
     if (error)
     {
         NSLog(@"Error: %@", error);
     }
     else
     {
         NSError *jsonError = nil;
         NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];

         if (jsonError)
         {
             NSLog(@"JSON Error: %@", jsonError);
         }
         else
         {
             NSArray *resultsArray = dict[@"results"];

             if(resultsArray.count == 0)
             {
                 dispatch_async(dispatch_get_main_queue(), ^{
                     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"917xfm" message:[NSString stringWithFormat:@"No results returned."] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
                     [alert show];
                     [alert release];
                 });
             }
             else
             {
                 NSDictionary *trackDict = resultsArray[0];
                 NSString *trackViewUrlString = trackDict[@"trackViewUrl"];

                 if (trackViewUrlString.length)
                 {
                     NSURL *trackViewUrl = [NSURL URLWithString:trackViewUrlString];

                     dispatch_async(dispatch_get_main_queue(), ^{
                         [[UIApplication sharedApplication] openURL:trackViewUrl];
                     });
                 }
             }
         }
     }
 }];
person Maxim Makhun    schedule 24.10.2014
comment
Большое спасибо, Максим, у меня есть одна небольшая проблема, которую я сейчас изучаю, но, возможно, вы знаете о ней. Все результаты поиска в формате json относятся к магазину iTunes в США, но на самом деле я хочу настроить таргетинг на магазин iTunes в Ирландии. - person Gooner; 28.10.2014
comment
Понятно, это легко исправить, просто добавьте country=country_code в строку поиска, если вы хотите настроить таргетинг на конкретную страну. Спасибо еще раз! - person Gooner; 28.10.2014