如何添加"在iTunes上获取它"按键

时间:2015-12-10 07:18:49

标签: ios swift itunes

我正在寻找一种方法来生成"在iTunes上下载"我正在制作的应用按钮。

我只是不知道如何获取实际将用户发送到iTunes商店后所需的网址。

我看到了post,其中讨论了如何使用网址。我尝试将其输入我的应用程序,它工作得很好。但是,我不知道在哪里根据歌曲艺术家和标题生成这些URL。

我知道我可能只需要使用Linkmaker?还有其他办法吗?

干杯

1 个答案:

答案 0 :(得分:1)

我早就偶然发现了同样的问题,这就是我如何解决这个问题:

我将artist name - song name作为输入值。然后我只是创建一个合适的链接并向itunes搜索api发出请求并获取一堆链接,选择第一个并创建一个按钮。

注意:itunes search api无法识别艺术家姓名和歌曲名称中的空格,我们应该用“+”符号替换字符串中出现的所有空格。

代码段:

func fetchLink(artist: String, track: String, completion: ((String?) -> ()), failure: ((NSError) -> ())?)
{
    let artistFixedString = replaceSpacesInString(artist)
    let trackFixedString = replaceSpacesInString(track)

    let urlString = "https://itunes.apple.com/search?term=" + artistFixedString + "+" + trackFixedString + "&limit=1"

    //NOTE: here we can use NSURLSession 
    let manager = AFHTTPRequestOperationManager()
    manager.GET(urlString, parameters: nil, success: { (operation, result) -> Void in

        if let results = result["results"] as? [[String:AnyObject]], let track = results.first, let itunesUrl = track["trackViewUrl"] as? String
        {
            dispatch_async(MainQueue) { completion(itunesUrl) }
        }else{
            dispatch_async(MainQueue) { completion(nil) }
        }
        }) { (operation, error) -> Void in
            dispatch_async(dispatch_get_main_queue()) {
                failure?(error)
        }
    }
}

func replaceSpacesInString(string: String, withString replacement: String = "+") -> String
{
    return string.stringByReplacingOccurrencesOfString(" ", withString: replacement, options: NSStringCompareOptions.LiteralSearch, range: nil)
}