iPhone 게임의 무료 버전을 만들고 있습니다. 무료 버전 안에 버튼을 사용하여 사람들을 앱 스토어의 유료 버전으로 가져 가고 싶습니다. 표준 링크를 사용하면
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300136119&mt=8
iPhone이 Safari를 먼저 연 다음 앱 스토어를 엽니 다. 앱 스토어를 직접 여는 다른 앱을 사용했기 때문에 가능하다는 것을 알고 있습니다.
어떤 아이디어? 앱 스토어의 URL 체계는 무엇입니까?
답변
2016-02-02에 편집 됨
iOS 6부터 SKStoreProductViewController 클래스가 도입되었습니다. 앱을 종료하지 않고 앱을 연결할 수 있습니다. Swift 3.x / 2.x 및 Objective-C의 코드 스 니펫 은 여기에 있습니다 .
SKStoreProductViewController 객체 선물을 사용자가 앱 스토어에서 다른 미디어를 구입할 수있는 가게. 예를 들어 사용자가 다른 앱을 구매할 수 있도록 앱에 스토어가 표시 될 수 있습니다.
에서 뉴스 및 애플 개발자에 대한 발표 .
iTunes 링크를 통해 App Store에서 고객을 앱으로 직접 유도 iTunes 링크를 통해 고객은 웹 사이트 또는 마케팅 캠페인에서 직접 App Store의 앱에 쉽게 액세스 할 수 있습니다. iTunes 링크를 만드는 것은 간단하며 고객을 단일 앱, 모든 앱 또는 회사 이름이 지정된 특정 앱으로 안내 할 수 있습니다.
고객을 특정 응용 프로그램으로 보내려면 :
http://itunes.com/apps/appnameApp Store에있는 앱 목록으로 고객을 보내려면 :
http://itunes.com/apps/developernameURL에 회사 이름이 포함 된 특정 앱으로 고객을 보내려면 다음을 수행하십시오.
http://itunes.com/apps/developername/appname
추가 사항 :
당신은 대체 할 수 http://
와 함께 itms://
또는 itms-apps://
피하기 리디렉션에.
참고itms://
받는 사용자를 보내드립니다 아이튠즈 스토어 와 itms-apps://
받는 보내기 그들과 함께 앱 스토어를!
이름 지정에 대한 정보는 Apple QA1633을 참조하십시오.
https://developer.apple.com/library/content/qa/qa1633/_index.html .
편집 (2015 년 1 월 기준) :
itunes.com/apps 링크는 appstore.com/apps로 업데이트되어야합니다. 업데이트 된 위의 QA1633을 참조하십시오. 새로운 QA1629 는 앱에서 스토어를 시작하기위한 다음 단계와 코드를 제안합니다.
- 컴퓨터에서 iTunes를 실행하십시오.
- 연결할 항목을 검색하십시오.
- iTunes에서 항목 이름을 마우스 오른쪽 단추로 클릭하거나 Control- 클릭 한 다음 팝업 메뉴에서 “iTunes Store URL 복사”를 선택하십시오.
- 응용 프로그램
NSURL
에서 복사 한 iTunes URL을 사용하여 객체를 생성 한 다음이 객체를UIApplication
‘sopenURL
: 메소드에 전달하여 App Store에서 항목을 엽니 다.
샘플 코드 :
NSString *iTunesLink = @"itms://itunes.apple.com/app/apple-store/id375380948?mt=8";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];
스위프트 4.2
let urlStr = "itms-apps://itunes.apple.com/app/apple-store/id375380948?mt=8"
if #available(iOS 10.0, *) {
UIApplication.shared.open(URL(string: urlStr)!, options: [:], completionHandler: nil)
} else {
UIApplication.shared.openURL(URL(string: urlStr)!)
}
답변
App Store에서 직접 앱을 열려면 다음을 사용해야합니다.
itms-apps : // …
이렇게하면 먼저 iTunes로 이동하지 않고 장치에서 App Store 앱을 직접 연 다음 itms : // 만 사용하는 경우 App Store 만 엽니 다.
희망이 도움이됩니다.
편집 : APR, 2017. itms-apps : //는 실제로 iOS10에서 다시 작동합니다. 나는 그것을 테스트했다.
편집 : APR, 2013. iOS5 이상에서는 더 이상 작동하지 않습니다. 그냥 사용
https://itunes.apple.com/app/id378458261
더 이상 리디렉션이 없습니다.
답변
SKStoreProductViewController 클래스 를 사용하여 iOS 6부터 올바른 방법으로 시작하십시오 .
스위프트 5.x :
func openStoreProductWithiTunesItemIdentifier(_ identifier: String) {
let storeViewController = SKStoreProductViewController()
storeViewController.delegate = self
let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
storeViewController.loadProduct(withParameters: parameters) { [weak self] (loaded, error) -> Void in
if loaded {
// Parent class of self is UIViewContorller
self?.present(storeViewController, animated: true, completion: nil)
}
}
}
private func productViewControllerDidFinish(viewController: SKStoreProductViewController) {
viewController.dismiss(animated: true, completion: nil)
}
// Usage:
openStoreProductWithiTunesItemIdentifier("1234567")
스위프트 3.x :
func openStoreProductWithiTunesItemIdentifier(identifier: String) {
let storeViewController = SKStoreProductViewController()
storeViewController.delegate = self
let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
storeViewController.loadProduct(withParameters: parameters) { [weak self] (loaded, error) -> Void in
if loaded {
// Parent class of self is UIViewContorller
self?.present(storeViewController, animated: true, completion: nil)
}
}
}
func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
viewController.dismiss(animated: true, completion: nil)
}
// Usage:
openStoreProductWithiTunesItemIdentifier(identifier: "13432")
다음과 같이 앱의 아이튠즈 항목 식별자를 얻을 수 있습니다 : (정적 식별자 대신)
스위프트 3.2
var appID: String = infoDictionary["CFBundleIdentifier"]
var url = URL(string: "http://itunes.apple.com/lookup?bundleId=\(appID)")
var data = Data(contentsOf: url!)
var lookup = try? JSONSerialization.jsonObject(with: data!, options: []) as? [AnyHashable: Any]
var appITunesItemIdentifier = lookup["results"][0]["trackId"] as? String
openStoreProductViewController(withITunesItemIdentifier: Int(appITunesItemIdentifier!) ?? 0)
스위프트 2.x :
func openStoreProductWithiTunesItemIdentifier(identifier: String) {
let storeViewController = SKStoreProductViewController()
storeViewController.delegate = self
let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
storeViewController.loadProductWithParameters(parameters) { [weak self] (loaded, error) -> Void in
if loaded {
// Parent class of self is UIViewContorller
self?.presentViewController(storeViewController, animated: true, completion: nil)
}
}
}
func productViewControllerDidFinish(viewController: SKStoreProductViewController) {
viewController.dismissViewControllerAnimated(true, completion: nil)
}
// Usage
openStoreProductWithiTunesItemIdentifier("2321354")
objective-C :
static NSInteger const kAppITunesItemIdentifier = 324684580;
[self openStoreProductViewControllerWithITunesItemIdentifier:kAppITunesItemIdentifier];
- (void)openStoreProductViewControllerWithITunesItemIdentifier:(NSInteger)iTunesItemIdentifier {
SKStoreProductViewController *storeViewController = [[SKStoreProductViewController alloc] init];
storeViewController.delegate = self;
NSNumber *identifier = [NSNumber numberWithInteger:iTunesItemIdentifier];
NSDictionary *parameters = @{ SKStoreProductParameterITunesItemIdentifier:identifier };
UIViewController *viewController = self.window.rootViewController;
[storeViewController loadProductWithParameters:parameters
completionBlock:^(BOOL result, NSError *error) {
if (result)
[viewController presentViewController:storeViewController
animated:YES
completion:nil];
else NSLog(@"SKStoreProductViewController: %@", error);
}];
[storeViewController release];
}
#pragma mark - SKStoreProductViewControllerDelegate
- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
[viewController dismissViewControllerAnimated:YES completion:nil];
}
다음
kAppITunesItemIdentifier
과 같이 (앱의 아이튠즈 항목 식별자)를 얻을 수 있습니다 : (정적 식별자 대신)
NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary];
NSString* appID = infoDictionary[@"CFBundleIdentifier"];
NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"http://itunes.apple.com/lookup?bundleId=%@", appID]];
NSData* data = [NSData dataWithContentsOfURL:url];
NSDictionary* lookup = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSString * appITunesItemIdentifier = lookup[@"results"][0][@"trackId"];
[self openStoreProductViewControllerWithITunesItemIdentifier:[appITunesItemIdentifier intValue]];
답변
2015 년 여름 이후 …
-(IBAction)clickedUpdate
{
NSString *simple = @"itms-apps://itunes.apple.com/app/id1234567890";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:simple]];
}
‘id1234567890’을 ‘id’및 ’10 자리 숫자 ‘로 바꾸십시오.
-
이것은 모든 장치에서 완벽하게 작동 합니다 .
-
리디렉션없이 앱 스토어 로 바로 이동 합니다.
-
모든 전국 매장에 적합 합니다.
-
그것은 당신이해야 사실 사용으로 이동
loadProductWithParameters
, 하지만 링크의 목적은 응용 프로그램을 업데이트하는 경우 실제로 내부 있습니다 : 그것은이 “구식”접근 방식을 사용하는 것이 가능 낫다.
답변
애플은 방금 appstore.com URL을 발표했다.
https://developer.apple.com/library/ios/qa/qa1633/_index.html
iOS 앱 용과 Mac Apps 용의 두 가지 형태로 App Store Short Links에는 세 가지 유형이 있습니다.
회사 이름
iOS : http://appstore.com/ ( 예 : http://appstore.com/apple)
Mac : http://appstore.com/mac/ ( 예 : http://appstore.com/mac/apple)
앱 이름
iOS : http://appstore.com/ ( 예 : http://appstore.com/keynote)
Mac : http://appstore.com/mac/ ( 예 : http://appstore.com/mac/keynote)
회사 별 앱
iOS : http://appstore.com/ / 예 : http://appstore.com/apple/keynote
Mac : http://appstore.com/mac/ / 예 : http://appstore.com/mac/apple/keynote
대부분의 회사와 앱에는 표준 App Store Short Link가 있습니다. 이 정식 URL은 특정 문자를 변경하거나 제거하여 만들어집니다 (많은 문자가 불법이거나 URL에서 특별한 의미를 갖습니다 (예 : “&”)).
App Store Short Link를 만들려면 회사 또는 앱 이름에 다음 규칙을 적용하십시오.
공백을 모두 제거
모든 문자를 소문자로 변환
모든 저작권 (©), 상표 (™) 및 등록 상표 (®) 기호를 모두 제거하십시오.
앰퍼샌드 ( “&”)를 “and”로 바꾸십시오.
문장 부호를 대부분 제거합니다 (목록은 목록 2 참조).
악센트 및 기타 “장식 된”문자 (ü, å 등)를 기본 문자 (u, a 등)로 바꿉니다.
다른 모든 문자는 그대로 두십시오.
Listing 2 문장 부호 문자를 제거해야한다.
! ¡ “# $ % ‘() * +,-. / :; <=> ¿? @ [] ^ _`{|} ~
다음은 발생하는 변환을 보여주는 몇 가지 예입니다.
앱 스토어
회사 이름 예
Gameloft => http://appstore.com/gameloft
Activision Publishing, Inc. => http://appstore.com/activisionpublishinginc
첸의 사진 및 소프트웨어 => http://appstore.com/chensphotographyandsoftware
앱 이름 예
오카리나 => http://appstore.com/ocarina
페리는 어디에 있습니까? => http://appstore.com/wheresmyperry
Brain Challenge ™ => http://appstore.com/brainchallenge
답변
이 코드는 iOS에서 App Store 링크를 생성합니다.
NSString *appName = [NSString stringWithString:[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"]];
NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:@"itms-apps://itunes.com/app/%@",[appName stringByReplacingOccurrencesOfString:@" " withString:@""]]];
itms-apps를 Mac에서 http로 바꾸십시오.
NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:@"http:/itunes.com/app/%@",[appName stringByReplacingOccurrencesOfString:@" " withString:@""]]];
iOS에서 열린 URL :
[[UIApplication sharedApplication] openURL:appStoreURL];
맥:
[[NSWorkspace sharedWorkspace] openURL:appStoreURL];
답변
리디렉션없이 직접 연결하려면
- iTunes 링크 메이커 http://itunes.apple.com/linkmaker/ 를 사용 하여 실제 직접 링크를 얻으십시오
- 교체
http://
와 함께itms-apps://
- 링크를 엽니 다
[[UIApplication sharedApplication] openURL:url];
이 링크는 시뮬레이터가 아닌 실제 장치에서만 작동합니다.
출처 : https://developer.apple.com/library/ios/#qa/qa2008/qa1629.html