如何添加 "Get it on iTunes" 按钮
How to add "Get it on iTunes" button
我正在寻找一种方法来为我正在制作的应用程序生成 "Download on iTunes" 按钮。
我只是不知道如何获得 URL 在点击后将用户实际发送到 iTunes 商店所需的内容。
我看到这个post,里面讲到使用URL。我尝试将其输入到我的应用程序中,但效果很好。但是,我不知道在哪里根据歌曲艺术家和标题生成这些 URL。
我知道我可能只需要使用 Linkmaker?还有其他方法吗?
干杯
我很早就遇到了同样的问题,下面是我解决这个问题的方法:
我得到 artist name
- song name
作为输入值。然后我只创建一个适当的 link 并向 iTunes 搜索 api 发出请求并返回一堆 links,选择第一个并创建一个按钮。
注意:itunes 搜索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)
}
我正在寻找一种方法来为我正在制作的应用程序生成 "Download on iTunes" 按钮。
我只是不知道如何获得 URL 在点击后将用户实际发送到 iTunes 商店所需的内容。
我看到这个post,里面讲到使用URL。我尝试将其输入到我的应用程序中,但效果很好。但是,我不知道在哪里根据歌曲艺术家和标题生成这些 URL。
我知道我可能只需要使用 Linkmaker?还有其他方法吗?
干杯
我很早就遇到了同样的问题,下面是我解决这个问题的方法:
我得到 artist name
- song name
作为输入值。然后我只创建一个适当的 link 并向 iTunes 搜索 api 发出请求并返回一堆 links,选择第一个并创建一个按钮。
注意:itunes 搜索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)
}