Programing

iTunes는 URL 및 iOS 7을 검토합니다 (사용자에게 앱을 평가하도록 요청) .AppStore에 빈 페이지가 표시됨

lottogame 2020. 6. 4. 07:50
반응형

iTunes는 URL 및 iOS 7을 검토합니다 (사용자에게 앱을 평가하도록 요청) .AppStore에 빈 페이지가 표시됨


사용자가 앱을 평가하고 등급 페이지에서 직접 앱 스토어를 열도록 요청하는 기술이 iOS 7에서 계속 작동하는지 아는 사람이 있습니까?

내 앱에서이 URL을 열었습니다.

itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=353372460&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software

그러나 더 이상 작동하지 않는 것 같습니다 (AppStore에 빈 페이지가 표시됨). 나는 또한이 URL wihout luck을 시도했다.

http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?pageNumber=0&sortOrdering=1&type=Purple+Software&mt=8&id=353372460

iOS7부터 URL이 변경되어 검토 페이지로 이동할 수 없으며 앱으로 만 전달됩니다.

itms-apps://itunes.apple.com/app/idAPP_ID

APP_ID를 애플리케이션 ID로 바꿔야합니다. 질문의 앱 ID를 기반으로 다음과 같습니다.

itms-apps://itunes.apple.com/app/id353372460

숫자 앞에 있는 ID주목하십시오 ... 문자열은 353372460이 아니라 ID 353372460입니다.

iOS7 이전의 모든 경우 '이전'URL을 사용해야하는데,이 URL 만 검토 페이지로 바로 연결될 수 있습니다. 또한 이러한 통화는 장치 에서만 작동 합니다 . 시뮬레이터에 App Store 앱이 설치되어 있지 않으므로 시뮬레이터에서이를 실행하면 아무 작업도 수행되지 않습니다.


구현을 위해 Appirater를 살펴보십시오. https://github.com/arashpayan/appirater

phonegap 관련 정보를 사용할 수 없습니다 (사용하지 마십시오). 그러나 기본적으로 사용자가 실행중인 iOS 버전을 확인한 다음 이전 URL 또는 새 iOS7 URL을 사용합니다.


다음 URL은 iOS 7.1에서 완벽하게 작동합니다.

http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=xxxxxxxx&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8

여기서 xxxxxxxx앱 ID입니다.

업데이트 . iOS 9.3.4 및 iOS 10 GM에서 작동 (Jeet)


이것은 내 끝에서 작동합니다 (Xcode 5-iOS 7- Device !) :

itms-apps://itunes.apple.com/app/idYOUR_APP_ID

iOS 7보다 낮은 버전의 경우 이전 버전을 사용하십시오.

itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=YOUR_APP_ID

한 줄의 코드 간단한 대안 : ** 아래의 시뮬레이터 설명 참조 **

http://itunes.apple.com/app/idAPP_ID

편집 : 이제 iOS 7.1을 통해 App Store의 리뷰 탭에 직접 링크 할 수 있으므로 추가 코드 줄을 직접 투자하여 가치를 얻을 수 있습니다. 나머지에 대한 다른 답변을 참조하십시오.

여기에 우리가 사용하는 http: 대신 itms-apps: , 아이폰 OS가 나머지 작업을하자

저도 같은 결과는 6.1 및 7 기기 (아이 패드 / 아이폰 / 아이팟 터치 4) iOS에서 테스트를 얻을

특히이 바로 가기 를 들어, 아이폰 OS 6 하여에 대한 사용자 소요 Details탭이 아닌 Reviews탭을 선택합니다.

Purple+Software링크는 사용자에게 iOS 6의 리뷰 탭으로 연결됩니다. OS를 확인하는 방법을 알고 있다면 분명히 좋습니다.

중요 사항 : iOS 5.1, 6.1 및 7 용 시뮬레이터에서 오류가 발생
합니다. 페이지를 열 수 없습니다. 주소가 유효하지 않기 때문에 Safari에서 페이지를 열 수 없습니다 (우리는 브라우저 외부에서 시뮬레이터 외부의 유효한 URL임을 알고 있습니다)

명확하게 : iOS 7에서 : 눈에 띄는 지연없이 http://동일한 경험을 제공합니다 itms-apps:.

* 위에서 언급 한 시뮬레이터 동작에 유의하십시오. 시뮬레이터를 통해 카메라에 액세스하려는 것과 완전히 다른 것은 아닙니다. 시뮬레이터는 테스트 할 장소가 아닙니다. *


iOS7에서는 앱에서 직접 리뷰 페이지를 열 수 있습니다. 다음 URL을 사용하십시오 ...

itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=YOUR_APP_ID

이것은 확실히 작동합니다 .. :)


지원되는 iOS 버전은 확실하지 않지만 iOS 10.3의 일부로 URL에 추가 할 수 있는 새로운 쿼리 매개 변수 가 있습니다 action=write-review. iOS 10.2 및 9.3.5에서 이것을 테스트했으며 작동합니다. 그러나 iOS 7.1.2에서는 작동하지 않으므로 iOS 8.0과 9.3.5 사이에 지원이 추가되었습니다. 추가 조사가 필요합니다!

예 : https://itunes.apple.com/app/id929726748?action=write-review&mt=8

검토 탭만 표시하는 대신 "리뷰 작성"대화 상자가 열립니다 .


+ (NSString *)getReviewUrlByAppId:(int)appId
{ 
    NSString *templateReviewURL = @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=APP_ID";
    NSString *templateReviewURLiOS7 = @"itms-apps://itunes.apple.com/app/idAPP_ID";
    NSString *templateReviewURLiOS8 = @"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=APP_ID&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software";

    //ios7 before
    NSString *reviewURL = [templateReviewURL stringByReplacingOccurrencesOfString:@"APP_ID" withString:[NSString stringWithFormat:@"%d", appId]];

    // iOS 7 needs a different templateReviewURL @see https://github.com/arashpayan/appirater/issues/131
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0 && [[[UIDevice currentDevice] systemVersion] floatValue] < 7.1) 
    {
        reviewURL = [templateReviewURLiOS7 stringByReplacingOccurrencesOfString:@"APP_ID" withString:[NSString stringWithFormat:@"%d", appId]];
    }
    // iOS 8 needs a different templateReviewURL also @see https://github.com/arashpayan/appirater/issues/182
    else if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
    {
        reviewURL = [templateReviewURLiOS8 stringByReplacingOccurrencesOfString:@"APP_ID" withString:[NSString stringWithFormat:@"%d", appId]];
    }

    return reviewURL;
}

iOS9에서 검토 링크가 다시 끊어졌습니다. 몇 가지 실험을 할 때 Apple이 iOS7 이전의 상태로 되 돌렸다는 것을 알았습니다. 따라서 다음을 수행해야합니다.

itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=247423477&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software

Where 247423477 is your 9 digit app ID (the main difference is you have to append &onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software after the app ID).


All the answers above have now been deprecated (iOS 7, but may work) thus, I provide the new way Apple recommends to provide links to the Apps. The link for your App is the one from iTunes (use Copy Link), this one is recommended for use in code:

Swift 3.0

let path = URL(string: "https://itunes.apple.com/us/app/calcfast/id876781417?mt=8")
UIApplication.shared.open(path!)

Or better -- treat the optional correctly and handle the possibility of not being able to reach the link:

if let path = URL(string: "https://itunes.apple.com/us/app/calcfast/id876781417?mt=8") {
    UIApplication.shared.open(path) {
        (didOpen:Bool) in
        if !didOpen {
            print("Error opening:\(path.absoluteString)")
        }
    }
}

Objective-C

#define APP_URL_STRING  @"https://itunes.apple.com/us/app/calcfast/id876781417?mt=8"

then you can call APP_URL_STRING in your code:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: APP_URL_STRING] options:@{} completionHandler:nil];

Note, that this is the recommended way now by Apple, as the previous method of processing redirect links has been deprecated and are not supported.

The link for all your Apps, if you have more than one:

#define MYCOMPANY_URL_PATH @"http://appstore.com/mycompany"
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: MYCOMPANY_URL_PATH] options:@{} completionHandler:nil];

The App link above is recommended for use in code or links that are not seen directly by the user. If you want to provide link that may be seen and remembered by the user then use the following: http://appstore.com/calcfast


Using this URL was the perfect solution for me. It takes the user directly to the Write a Review section. Credits to @Joseph Duffy.

For a sample code try this :

Swift 3, Xcode 8.2.1 :

 let openAppStoreForRating = "itms-apps://itunes.apple.com/gb/app/id1136613532?action=write-review&mt=8"
 if UIApplication.shared.canOpenURL(URL(string: openAppStoreForRating)!) {
      UIApplication.shared.openURL(URL(string: openAppStoreForRating)!)
 } else {
      showAlert(title: "Cannot open AppStore",message: "Please select our app from the AppStore and write a review for us. Thanks!!")
 }

Here showAlert is a custom function for an UIAlertController.


I have this to get the Product ID automatically and generate App Store Review and Product page links.

- (void) getAppStoreLinks {
productID = [[NSUserDefaults standardUserDefaults] objectForKey:@"productID"]; //NSNumber instance variable
appStoreReviewLink = [[NSUserDefaults standardUserDefaults] objectForKey:@"appStoreReviewLink"]; //NSString instance variable
appStoreLink = [[NSUserDefaults standardUserDefaults] objectForKey:@"appStoreLink"]; //NSString instance variable

if (!productID || !appStoreReviewLink || !appStoreLink) {
    NSString *iTunesServiceURL = [NSString stringWithFormat:@"https://itunes.apple.com/lookup?bundleId=%@", [NSBundle mainBundle].bundleIdentifier];
    NSURLSession *sharedSes = [NSURLSession sharedSession];
    [[sharedSes dataTaskWithURL:[NSURL URLWithString:iTunesServiceURL]
              completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

                  NSInteger statusCode = ((NSHTTPURLResponse *)response).statusCode;

                  if (data && statusCode == 200) {

                      id json = [[NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingOptions)0 error:nil][@"results"] lastObject];

                      //productID should be NSNumber but integerValue also work with NSString
                      productID = json[@"trackId"];

                      if (productID) {
                          appStoreReviewLink = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=%d&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8",productID.integerValue];
                          appStoreLink = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%d",productID.integerValue];

                          [[NSUserDefaults standardUserDefaults] setObject:productID forKey:@"productID"];
                          [[NSUserDefaults standardUserDefaults] setObject:appStoreReviewLink forKey:@"appStoreReviewLink"];
                          [[NSUserDefaults standardUserDefaults] setObject:appStoreLink forKey:@"appStoreLink"];

                      }
                  } else if (statusCode >= 400) {
                      NSLog(@"Error:%@",error.description);
                  }
              }
      ] resume];
}
}

Open app's Review Page

- (IBAction) rateButton: (id)sender {
   NSString *appStoreReviewLink = appStoreReviewLink;
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:appStoreReviewLink]];
}

Open app's App Store page

 - (IBAction) openAppPageButton: (id)sender {
   NSString *appStoreLink = appStoreLink;
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString: appStoreLink]];
 }

It is said that this bug will be fixed on iOS7.1. Read here on the corona forum, and here on the iPhoneDevSDK.

참고URL : https://stackoverflow.com/questions/18905686/itunes-review-url-and-ios-7-ask-user-to-rate-our-app-appstore-show-a-blank-pag

반응형