无法在 iOS8 上的 iTunes Store 中搜索

Posted

技术标签:

【中文标题】无法在 iOS8 上的 iTunes Store 中搜索【英文标题】:Unable to search in iTunes Store on iOS8 【发布时间】:2014-10-11 10:52:20 【问题描述】:

我正在使用此代码打开 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 的值是什么,但它看起来很好。

【问题讨论】:

我也有同样的问题...你能在哪里解决这个问题? @Gooner - 我能够使用下面列出的代码 sn-p 完成这项工作。 【参考方案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];
                     );
                 
             
         
     
 ];

【讨论】:

非常感谢 Maxim,我有一个小问题,我正在调查,但也许你知道。我搜索返回的json结果都是针对美国iTunes商店的,但我其实是想定位爱尔兰iTunes商店 知道了,如果您想定位特定国家/地区,只需在搜索字符串中添加“country=country_code”即可轻松解决。再次感谢!

以上是关于无法在 iOS8 上的 iTunes Store 中搜索的主要内容,如果未能解决你的问题,请参考以下文章

App在iTunes Store上的地址

无法在 SKStoreProductViewController 中连接到 iTunes Store

无法在 App Store(iTunes)上找到我的应用程序 [关闭]

SKErrorDomain Code = 0“无法连接到iTunes Store”

苹果手机在Appstore和iTunes被禁用下不了软件怎么办

iPhone In-App Purchase Store Kit 错误 -1003“无法连接到 iTunes Store”