应用商店链接"评价/评论此应用"

Wil*_*sch 184 iphone app-store

我想在我的应用中添加"评价/评论此应用"功能.

有没有办法直接链接到他们审查应用程序的应用商店中的屏幕?因此,客户无需点击主应用程序链接.谢谢.

编辑:由于缺乏回应,在此开始赏金.只是为了确保它非常清晰:我知道我可以链接到商店中的应用程序页面,并要求用户从那里点击"查看此应用程序"屏幕.问题是是否可以直接链接到"查看此应用程序"屏幕,这样他们就不必点击任何内容.

eli*_*bud 344

对于低于iOS 7的版本,请使用旧版本:

itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=YOUR_APP_ID
Run Code Online (Sandbox Code Playgroud)

这适用于我(Xcode 5 - iOS 7 - 设备!):

itms-apps://itunes.apple.com/app/idYOUR_APP_ID
Run Code Online (Sandbox Code Playgroud)

对于iOS 8或更高版本:

itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=YOUR_APP_ID&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software
Run Code Online (Sandbox Code Playgroud)

代码段(您只需复制并粘贴它):

#define YOUR_APP_STORE_ID 545174222 //Change this one to your ID

static NSString *const iOS7AppStoreURLFormat = @"itms-apps://itunes.apple.com/app/id%d";
static NSString *const iOSAppStoreURLFormat = @"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%d";

[NSURL URLWithString:[NSString stringWithFormat:([[UIDevice currentDevice].systemVersion floatValue] >= 7.0f)? iOS7AppStoreURLFormat: iOSAppStoreURLFormat, YOUR_APP_STORE_ID]]; // Would contain the right link
Run Code Online (Sandbox Code Playgroud)

  • 注意 - "类型=紫色+软件"*有*在那里它*具有*字面上的"紫色软件" - 它不是你公司的名称,它是iPhone应用程序的代号:)我浪费了一个小时前我想出来了...... (160认同)
  • 作为iOS 10.3的一部分,可以添加到URL中的[新查询参数](https://developer.apple.com/reference/storekit/skstorereviewcontroller/2851536-requestreview#discussion):`action = write-review` .我已经在iOS 10.2上测试了这个并且它可以工作,但我不知道这有多远.**这将打开"撰写评论"对话框**,而不是仅显示评论标签.示例:https://itunes.apple.com/gb/app/id929726748?action = write-review&mt = 8 (39认同)
  • 值得注意的是,这在模拟器中不起作用,但它适用于实际设备. (15认同)
  • 在iOS 7上,这会将我带到商店页面,但不会选择审阅选项卡. (13认同)
  • 但是关于IPAD的是什么? (3认同)

Str*_*ong 48

更新:

Swift 4.0,Xcode 9.1

在Real Device iOS 11.x上测试(保证工作)

import StoreKit

func rateApp() {

    if #available(iOS 10.3, *) {

        SKStoreReviewController.requestReview()

    } else {

        let appID = "Your App ID on App Store"
        let urlStr = "https://itunes.apple.com/app/id\(appID)" // (Option 1) Open App Page    
        let urlStr = "https://itunes.apple.com/app/id\(appID)?action=write-review" // (Option 2) Open App Review Page

        guard let url = URL(string: urlStr), UIApplication.shared.canOpenURL(url) else { return }

        if #available(iOS 10.0, *) {
            UIApplication.shared.open(url, options: [:], completionHandler: nil)
        } else {
            UIApplication.shared.openURL(url) // openURL(_:) is deprecated from iOS 10.
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

从iOS 10推荐使用openURL(_ :).

  • 这不再适用了.什么工作是<product-url>?action = write-review.请查看此文档以获得更好的理解:https://developer.apple.com/documentation/storekit/skstorereviewcontroller/2851536-requestreview#discussion (3认同)

ETe*_*ech 38

上面写的所有内容都是正确的.只需插入应用程序并将{您的应用程序ID}更改为实际应用程序ID的示例,从iTunesconnect获取以显示"审阅"页面.请注意,正如上面评论的那样,它不能在模拟器上工作 - 只是设备.
- 由于ios 7的更改而进行更正.

NSString * appId = @"{YOUR APP ID}";
NSString * theUrl = [NSString  stringWithFormat:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=%@&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software",appId];
if ([[UIDevice currentDevice].systemVersion integerValue] > 6) theUrl = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@",appId];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:theUrl]];
Run Code Online (Sandbox Code Playgroud)


And*_*ord 36

编辑:iOS 11解决方案

这是我原来答案的解决方案(见下文).使用iOS 11时,以下链接格式将起作用:

https://itunes.apple.com/us/app/appName/idAPP_ID?mt=8&action=write-review
Run Code Online (Sandbox Code Playgroud)

只需替换APP_ID您的特定应用ID即可.使链接起作用的关键是国家/地区代码.上面的链接使用us代码,但实际上使用哪个代码并不重要.用户将自动被重定向到他的商店.

iOS 11更新:

似乎在其他答案中提供的任何解决方案都没有直接进入评论页面在iOS 11上运行.

这个问题最有可能的是,在iOS的11 App Store应用的应用页面确实具有审查标签了.相反,评论现在位于说明和屏幕截图的正下方.当然,仍然可以直接到达这个部分(例如使用某种锚),但似乎Apple 不支持 /打算这样做.

使用以下链接之一不再起作用.他们仍然将用户带到App Store应用程序,但仅限于空白页面:

itms-apps://itunes.apple.com/app/idYOUR_APP_ID?action=write-review
itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=YOUR_APP_ID&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software
Run Code Online (Sandbox Code Playgroud)

每个人仍然如何使用这些链接应该尽快更新他们的应用程序,因为将用户引用到空白的App Store页面很可能不是您想要的.

但是,不参考"评论"页面而是"应用程序"页面的链接仍然可用

itms-apps://itunes.apple.com/app/idYOUR_APP_ID   (same as above, but without write-review parameter)
Run Code Online (Sandbox Code Playgroud)

因此,您仍然可以让用户访问您的应用商店页面,但不能直接访问评论部分.用户现在必须手动向下滚动到审阅部分以留下他们的反馈.

毫无疑问,这是"用户体验的巨大和可怕的好处,并将帮助开发人员吸引用户留下高质量的评论而不会让他们烦恼".做得好Apple?


dek*_*eko 26

以上所有方法都是正确的,但现在使用SKStoreProductViewController可以带来更好的用户体验.要使用它,您需要执行以下操作:

  • 在您的app委托中实现SKStoreProductViewControllerDelegate协议
  • 添加所需的productViewControllerDidFinish方法:

    - (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
      [viewController dismissViewControllerAnimated: YES completion: nil];
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 检查SKStoreProductViewController类是否可用并显示它或切换到App Store:

    extern NSString* cAppleID; // must be defined somewhere...
    
    if ([SKStoreProductViewController class] != nil) {
      SKStoreProductViewController* skpvc = [[SKStoreProductViewController new] autorelease];
      skpvc.delegate = self;
      NSDictionary* dict = [NSDictionary dictionaryWithObject: cAppleID forKey: SKStoreProductParameterITunesItemIdentifier];
      [skpvc loadProductWithParameters: dict completionBlock: nil];
      [[self _viewController] presentViewController: skpvc animated: YES completion: nil];
    }
    else {
      static NSString* const iOS7AppStoreURLFormat = @"itms-apps://itunes.apple.com/app/id%@";
      static NSString* const iOSAppStoreURLFormat = @"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%@";
      NSString* url = [[NSString alloc] initWithFormat: ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0f) ? iOS7AppStoreURLFormat : iOSAppStoreURLFormat, cAppleID];
      [[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]];
    }
    
    Run Code Online (Sandbox Code Playgroud)

  • 这看起来是一个很好的解决方案,但我无法让它工作."写入评论"按钮被禁用.我一开始认为这是因为我一直在运行我的开发版本,并认为必须安装应用程序商店版本.所以我创建了一个全新的捆绑包ID并将其与应用商店版本一起运行,但仍然没有运气.基于这篇文章,看起来在iOS 7+中禁用了"写一个评论"按钮http://stackoverflow.com/questions/19058069/skstoreproductviewcontroller-rate-disabled-on-ios-7 (5认同)
  • 知道如何使用此实现默认打开"评论"标签吗?Apple文档只给出了3个参数,但似乎没有与我需要的相关:SKStoreProductParameterITunesItemIdentifier,SKStoreProductParameterAffiliateToken和SKStoreProductParameterCampaignToken (3认同)
  • 这是2016年iOS 9的正确答案. (3认同)

nea*_*ave 13

iOS 11的解决方案

短App Store URL无法在新的iOS 11 App Store中正确打开"编写评论"界面.例如,这并不能正常工作:

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

解决方法是在URL中包含两个字母的国家/地区代码和应用名称,例如:

https://itunes.apple.com/us/app/twitter/id333903271?mt=8&action=write-review

要么

itms-apps://itunes.apple.com/us/app/twitter/id333903271?mt=8&action=write-review

您可以从此处获取应用的完整网址:https://linkmaker.itunes.apple.com/

这成功打开了iOS 11 App Store中的"编写评论"界面.

编辑:正如@Theo在下面提到的,国家/地区代码不需要本地化,如果应用名称更改,则无需更新URL中的应用名称.

希望Apple能够尽快解决这个问题.见rdar:// 34498138

  • 这是iOS 11的正确方法,如[WWDC Session 303](https://developer.apple.com/videos/play/wwdc2017/303/)中所述.注意,不需要参数`mt = 8`.此外,显然URL中的国家代码和应用程​​序名称是必需的,但是被忽略.因此,当应用名称更改时,无需对URL进行本地化或更新. (3认同)
  • 真的吗?为了避免这种事情,我们需要看多少小时的WWDC?!? (3认同)

Qua*_*ong 12

Swift 2版本

func jumpToAppStore(appId: String) {
    let url = "itms-apps://itunes.apple.com/app/id\(appId)"
    UIApplication.sharedApplication().openURL(NSURL(string: url)!)
}
Run Code Online (Sandbox Code Playgroud)


小智 11

所有以前的链接不再直接到"评论"标签,

此链接将直接指向"评论标签":

https://itunes.apple.com/app/viewContentsUserReviews?id=AppID

ITMS-应用://itunes.apple.com/app/viewContentsUserReviews ID =的AppID


小智 11

您可以在 url 启动器功能中使用此链接

https://apps.apple.com/app/APP_ID?action=write-review

  • 在电子邮件中发送链接时,这是一个很好的答案,因为如果有人在桌面或非 Apple 设备上打开链接,它仍然会打开一个页面,并显示需要在移动设备上打开该链接才能进行评论。 (2认同)

Sah*_*jan 9

在iOS7中,将应用程序切换到App Store以进行评分和审核的URL已更改:

itms-apps://itunes.apple.com/app/idAPP_ID
Run Code Online (Sandbox Code Playgroud)

APP_ID需要替换为您的应用程序ID.

对于iOS 6及更早版本,以前答案中的URL工作正常.

资料来源:Appirater

享受编码.. !!

  • 我得到了一个白色方块,因为我没有意识到你在URL中添加了'id'到你的号码.我刚试过".../app/123123123",而不是:".../app/id123123123".哈哈因为没有正确阅读而感到羞耻.希望这有助于任何意外做到这一点的人. (2认同)

Ank*_*pta 8

使用此URL是我的完美解决方案.它直接将用户带到了Write a Review section.@Joseph Duffy的积分.一定要试

URL = itms-apps://itunes.apple.com/gb/app/idYOUR_APP_ID_HERE?action=write-review&mt=8YOUR_APP_ID_HERE替换为您的AppId

有关示例代码,请尝试:

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!!")
 }
Run Code Online (Sandbox Code Playgroud)

这里showAlert是一个自定义函数UIAlertController.

  • 请不要将[相同的答案](http://stackoverflow.com/a/42668599/1915448)添加到多个问题中.回答最好的一个并将其余部分标记为重复.请参阅[为几个问题添加重复答案是否可以接受?](http://meta.stackexchange.com/q/104227/347985) (2认同)

rsh*_*hev 7

从iOS 10.3开始,您可以将action=write-review查询项附加到您的https://itunes.apple.com/...https://appsto.re/...URL.在iOS 10.3及Write a review更高版本上,它将自动打开,而在较低的iOS版本中,它将回退到应用程序的App Store页面.

iOS 11更新:使用Apple的linkmaker:linkmaker.itunes.apple.com 并追加&action=write-review,似乎是最安全的方式.


ksp*_*rin 7

iOS 11+(新的应用商店)中,有一种新的方法可以执行此操作。您可以直接打开“写评论”对话框。

iOS 11示例:

itms-apps://itunes.apple.com/us/app/id1137397744?action=write-review
Run Code Online (Sandbox Code Playgroud)

要么

https://itunes.apple.com/us/app/id1137397744?action=write-review
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 国家代码为必填/us/)。可以是任何国家/地区代码,没关系。
  • 将应用程序ID(1137397744)更改为您的应用程序ID(从iTunes URL获取)。
  • 如果要支持较旧的iOS版本(11之前的版本),则希望某些条件逻辑仅在OS版本大于或等于11时才以这种方式链接。