İTunes inceleme URL'si ve iOS 7 (kullanıcıdan uygulamamızı derecelendirmesini isteyin) AppStore boş bir sayfa göster


158

Kullanıcının uygulamamızı derecelendirmesini ve ona doğrudan derecelendirme sayfasında App Store'u açmasını istemek için kullanılan tekniğin hala iOS 7'de çalışıp çalışmadığını bilen var mı?

Uygulamamdan bu url'yi açardım:

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

Ancak artık çalışmıyor gibi görünüyor (AppStore boş bir sayfa gösteriyor). Ayrıca şans olmadan bu url denedim:

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

UAAppReviewManager'ın kaynak koduna baktıktan sonra, iOS7 ile gerçekten bir pb var gibi görünüyor. Bu yüzden standart Uygulama URL'sini kullanıyorlar, bu yüzden kullanıcının ücret düğmesini araması gerekiyor: - /
Samuel

Görünüşe göre ios 7 için inceleme bağlantısı çalışmıyor. Kodumu normal uygulama bağlantı URL'sine değiştireceğim. Kullanıcının inceleme düğmesini tıklaması gerekir.
Emmy

4
Gönderdiğiniz ikinci bağlantı şimdi iOS 7'de çalışıyor! İnceleme sayfasına
gider

benim için .... ilk URL çalışıyor gibi görünüyor. Kimlik numaramı değiştirdim
Nilesh Kumar

Yanıtlar:


198

İOS7'den başlayarak URL değişti ve inceleme sayfasına yönlendirilemez, yalnızca uygulamaya yönlendirilebilir

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

APP_ID öğesinin Uygulama Kimliğinizle değiştirilmesi gerektiğinde. Sorunun Uygulama Kimliğine dayanarak aşağıdakiler olurdu

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

Uyarı id dizesi olduğunu ... sayının önünde kimliği , sadece 353372460 353372460 değil

İOS7 öncesi herhangi bir şey için 'eski' URL'nin kullanılması gerekir, yalnızca bunlar doğrudan inceleme sayfasına yönlendirilebilir. Ayrıca, bu çağrıların yalnızca cihazlarda çalışacağına dikkat etmelisiniz . Simülatörde App Store uygulaması yüklü olmadığından bunları simülatörde çalıştırmak hiçbir şey yapmaz.


Örneğin bir uygulama için Appirater'a göz atın. https://github.com/arashpayan/appirater

Telefon boşluğu özellikleri konusunda size yardımcı olamaz (hiç kullanmadıysanız). Ancak temel olarak, kullanıcının çalıştırdığı iOS sürümünü kontrol eder ve ardından eski URL'yi veya ardından yeni iOS7 URL'sini kullanır.


18
Aslında bu inceleme sekmesini değil uygulamayı açar.
Idan

3
Evet bu doğru, ancak şimdilik iOS7 altında şu anda elde edilebilecek en iyi şey bu.
Frank

Yeni Facebook uygulaması, iOS 7'de uygulamanın içindeki uygulama mağazası sayfasını gösterir . Herkes bunu nasıl yaptığını biliyor mu?
EricS

1
IRate'den farklı olarak, yukarıdaki bağlantıyı / LANGUAGE / app / idAPP_ID bilgileriyle birlikte kullanmalısınız
Dan

6
Dili kaldırmak istiyorsunuz, Cihaz iTunes mağazasına eşit olmayan bir dile ayarlanmışsa Appirater da aynı sorun yaşıyor, boş bir sayfa (örneğin İngiliz İngilizcesi) alıyorsunuz, dil bitini kaldırırsanız hala çalışıyor ve mağaza açılıyor sahiplerinin dilinde.
Chris

166

Aşağıdaki URL iOS 7.1'de mükemmel çalışır:

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

nerede xxxxxxxxuygulama kimliğidir.

GÜNCELLEME . İOS 9.3.4 ve iOS 10 GM'de çalışır (Jeet tarafından)


5
Bu yine 8.0 DP 5'te kırıldı! Şimdi bir hata olarak rapor edin ve üretim sürümü ile düzeltebileceğimizi umuyoruz.
Cliff Ribaudo

6
Doğrudan App Store.app inceleme sayfasına gitmek benim için çalışıyor. Xcode 6 ile oluşturuldu.
İOS

7
Ben öğrendim. Tür her zaman mor yazılıma eşit olmalıdır - bu bir elma şeyidir.
Matt Parkins

2
İOS 8.3'te hem iPhone hem de iPad'de doğru çalışır. Sadece test edildi :) Teşekkürler!
alones

2
İPod Gen 5, iOS 9.0.1'de sorunsuz çalışır.
haxpor

47

Bu benim tarafımda çalışıyor (Xcode 5 - iOS 7 - Cihaz !):

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

İOS 7'den daha düşük sürümler için eskisini kullanın:

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

1
Bu, iOS7 cihazlarımda (Xcode 5 kullanarak) boş bir ekran veriyor, bu hala iOS6 için kullandığım URL idi. İOS 7 için cevabımda ayrıntılı olanı kullanıyorum. Senin için işe yaraması garip.
Frank

@Frank bu bağlantıyı nasıl açıyorsunuz? İRate kullanıyorum ve bu bağlantıyı kullanıyor olabilir, belki kullanmaya çalışın ve kodunuzdaki farkın tam olarak ne olduğunu kontrol edin.
Idan

2
Aşağıdaki kodu kullanıyorum [[UIApplication sharedApplication] openURL:[NSURL URLWithString:ITUNES_APP_URL_IOS7]];
Frank

1
self.appStoreID bile
derlenmiyor

1
İOS 8 DP5'te tekrar bozuldu. Bunu bir hata olarak bildirmeye başlayın ve üretime göre düzeltmelerini umuyoruz! Yoksa yine 8.1'e kadar bekleyeceğiz.
Cliff Ribaudo

18

Tek Satırlı Basit Alternatif: ** Ayrıca bkz. Aşağıdaki Simülatör Yorumları **

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

EDIT: Artık iOS 7.1, App Store'daki Yorumlar sekmesine doğrudan bağlantıya izin verdiğine göre, doğrudan oraya ulaşmak için fazladan kod satırlarına yatırım yapmaya değer: geri kalanı için diğer cevaplara bakın.

Burada , iOS'un işin geri kalanını yapmasına izin vermek http: yerine itms-apps:

Aynı sonuçları iOS 6.1 ve 7 cihazlarında test ediyorum (iPad / iPhone / iPod touch 4)

Özellikle, iOS 6 için bu kısayol kullanıcıyı sekmeye değil sekmeye götürüyor .DetailsReviews

Purple+SoftwareBağlantı tüm yol OS nasıl kontrol edileceğini biliyorum açıkçası tercih edilir iOS 6'da Yorumlar sekmesine kullanıcıyı alır.

Önemli not : Bu, iOS 5.1, 6.1 ve 7 için simülatörde hataya neden olur.
Sayfa Açılamıyor Safari, adres geçersiz olduğu için sayfayı açamıyor (herhangi bir tarayıcıda simülatörün dışında geçerli bir URL olduğunu biliyoruz)

Açık olmakhttp:// gerekirse : iOS 7'de: itms-apps:fark edilir bir gecikmeyle aynı deneyimi sunar .

* yukarıda belirtilen simülatör davranışının unutmayın. Bu, bir simülatör aracılığıyla kameraya erişmeye çalışmaktan tamamen farklı değildir: simülatör test etmek için yer değildir. *


1
Soruyu tam olarak nasıl cevapladığınızdan emin değilim. Sağladığınız bu bağlantı OP'nin istediği şeyi yapmıyor, bu da App Store'da "yorumlar" sayfasını açıyor. Doğrudan uygulamanın kendisine bağlantı önemsizdir.
Asem H.

İOS7'deki Yorumlar'a doğrudan bağlantı veremeyeceğiniz göz önüne alındığında , bu mükemmel makul bir çözüm gibi görünüyor.
Nick Cecil

Şu anda doğru olsa da, http'nin App Store uygulamasına yönlendirilmeye devam edeceğine dair bir garanti yoktur. Apple gelecekte Safari'ye http uygulama bağlantıları göndermeye karar verebilir, kim bilir? Doğrudan protokolü kullanmak daha güvenlidir.
poetmountain

Apple'ın doğrudan protokolü değiştirmesi dışında, farklı bir biçim kullanmadığınız sürece iOS7'de çalışmaz. Yani gerçekten "daha güvenli" değil.
Gerçek Dünya

1
İlişkin http:vs itms-apps:Birlikte yorum sekmesine doğrudan bağlantı başardı itms-appsve ile httpiOS 7.1.1 üzerinde.
zekel

17

İOS7'de inceleme sayfasını doğrudan uygulamadan açmak mümkündür. Lütfen aşağıdaki URL'yi kullanın ...

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

Bu kesinlikle işe yarayacaktır .. :)


Fikrim yok .. iOS8'e giriş yaptınız mı?
Murali

1
HAYIR DEĞİL. Hata raporu gönderin!
Cliff Ribaudo

İOS 8.1.1'deyim ve bu URL doğrudan inceleme sayfasına gider.
mrzzmr

1
Dizedeki "type = Purple + Software" nedir?
Darko

16

O iOS bu sürümleri tarafından desteklenen hangi belli değil, ama iOS 10.3 parçası olarak bir var yeni sorgu parametresi URL'ye eklenebilir: action=write-review. Bunu iOS 10.2 ve 9.3.5'te test ettim ve işe yarıyor. Ancak, iOS 7.1.2'de çalışmadığından, iOS 8.0 ve 9.3.5 arasında destek eklendi. Daha fazla araştırma gerekli!

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

Bu, yalnızca inceleme sekmesini göstermek yerine "Yorum Yaz" iletişim kutusunu açar .


2
Şerefe kardeşim :) Bu şimdiye kadarki en iyi çözümdü. Noktaya ve tamamen amaca hizmet eder. Benim için kabul edilebilir bir cevap bu. 9.3.5 ve iOS 10.2.1 üzerinde çalıştığı test edildi. Doğrudan bir inceleme yazın açar. Bunu kullandım: itms-apps: //itunes.apple.com/gb/app/id1136613532? Action = write-review & mt = 8, kullanıcının doğrudan incelemeyi yazmasını sağlamak için.
Ankit Kumar Gupta

... ama gb İngiltere'ye gönderme yapmıyor mu? Öyleyse, bu tüm kullanıcıları İngiltere App Store'a yönlendirir mi?
Robert Gummesson

@ Robert Yeh, başlangıçta başlangıçta / gb olan bağlantım. Sanırım hala kullanıcının mağazasına açık olacak, ama cevabından kaldırdım
Joseph Duffy

İOS10'da çalışıyor, ancak iOS11'de çalışmıyor gibi görünüyor (beta 9 kullanarak). Bir şey değiştiğinde bir fikrin var mı?
ZS

Bu iOS 11.1.1'de çalışır. Teşekkürler! Kabul edilen cevap olmalı, @astrocb
Vexir

9
+ (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;
}

1
Appirater başka bir sorunu düzeltmek için tekrar güncellendi. Temel değişiklik işaretini değiştirerek oluşuyordu < 7.1için < 8.0o kadar templateReviewURLiOS7daha ziyade> = 7.1 ve <8.0 arasında her şey için eski bağlantıyla daha bağlantısının tüm 7.x iOS sürümleri için kullanılır.
Markus

9

İnceleme bağlantısı iOS9'da bir kez daha koptu. Biraz deneme yaparken, Apple'ın iOS7'den önceki haline geri döndüğünü anladım. Yani yapmanız gerekenler:

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

2474234779 basamaklı uygulama kimliğiniz nerede (ana fark, &onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Softwareuygulama kimliğinden sonra eklemeniz gerektiğidir ).


5

Yukarıdaki tüm yanıtlar artık kullanımdan kaldırıldı (iOS 7, ancak işe yarayabilir), bu nedenle Apple'ın Uygulamalara bağlantılar sağlamayı önerdiği yeni yolu sağlarım. Uygulamanızın bağlantısı iTunes'dan (Bağlantıyı Kopyala) kullanın, bu kodda kullanılması önerilir:

Swift 3.0

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

Veya daha iyisi - isteğe bağlı olarak doğru davranın ve bağlantıya ulaşamama olasılığını ele alın:

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"

o zaman APP_URL_STRINGkodunuzu arayabilirsiniz :

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

Yönlendirme bağlantılarını işlemek için önceki yöntem kullanımdan kaldırıldığı ve desteklenmediği için bunun Apple tarafından önerilen yol olduğunu unutmayın.

Birden fazla uygulamanız varsa, tüm Uygulamalarınız için bağlantı:

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

Yukarıdaki Uygulama bağlantısının, kullanıcı tarafından doğrudan görülmeyen kodlarda veya bağlantılarda kullanılması önerilir. Kullanıcı tarafından görülebilecek ve hatırlanabilecek bir bağlantı sağlamak istiyorsanız, aşağıdakileri kullanın: http://appstore.com/calcfast


3
Bu, değerlendirme sayfasına bağlantı vermez
ngb

@ngb yalnızca Uygulamalar veya geliştirici sayfasına bağlantı verebilirsiniz. Aşağı oylama yaparken lütfen geçerli bir neden veya başarısızlık belirtin. İnceleme sayfasına bağlantılar göstermiyorum, ancak kullanıcı oranı kolayca tıklayabilir.
Sverrisson

1
Bu, Apple Tarafından Önerilen yöntemdir. Başka bir şey hack'tir.
Martin Marconcini

@Bingo Ne demek istiyorsun? Verdiğim bağlantı inceleme sayfasına & mt = 8 ans bağlantıyla sona eriyor. Cevabımda Apple'ın önerdiği şeye atıfta bulunuyorum, bağlantınız şimdi ve belki de sizin durumunuzda çalışabilir, ancak başka bir ülkedeki kullanıcılar için çalışıyor mu yoksa değişmeyeceğinden emin misiniz?
Sverrisson

4

Bu URL'yi kullanmak benim için mükemmel bir çözümdü. Kullanıcıyı doğrudan Write a Review section. @Joseph Duffy kredisi.

Örnek kod için şunu deneyin:

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!!")
 }

Burada showAlert bir UIAlertController.


3

Ürün Kimliğini otomatik olarak almak ve App Store İncelemesi ve Ürün sayfası bağlantıları oluşturmak için buna sahibim .

- (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];
}
}

Uygulamanın İnceleme Sayfasını Aç

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

Uygulamanın App Store sayfasını açın

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

2

Bu hatanın iOS7.1'de düzeltileceği söyleniyor. Burada corona forumunda ve burada iPhoneDevSDK'da okuyun .


3
Ne yazık ki iOS 7.1 çıktı ve hala çalışmıyor.
user1139733

2
Benim için tekrar iOS 7.1'de çalışıyor (doğrudan Yorumlar sayfasına gidiyor) ve diğerleri de devsdk bağlantısında aynı şeyi belirtti. Benim için, düzeni sadece itms-apps'tan http'ye değiştirmek zorunda kaldım ve iOS 7.1'de mükemmel çalışıyor. İOS 7.0'da hala ana uygulama sayfasına gider, ancak sadece beyaz bir sayfa gösteren eski itms-apps bağlantısının aksine en azından http bağlantısı çalışır.
stonemonk

Şimdi "eski" (Mor + Yazılım) yönteminin iOS7'de sorunsuz çalıştığını olumlu bir şekilde onaylayabilirim. Uygulamamda bir kanıt görebilirsiniz: j.mp/josegg Ana ekranda "ayarlar" ı tıklayın -> "Ücretsiz Alın" ı tıklayın Js "-> ardından" Bizi Oyla "yı tıklayın -> doğrudan uygulama mağazamdaki uygulama sayfasının inceleme sekmesine yönlendirileceksiniz (açıkçası sadece iOS 7.1+ veya iOS 6.1.4- için çalışıyor)
Joselito
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.