如何快速为费率按钮添加链接?


69

首先,在提交我的应用程序之前,我不知道如何获取链接,并且该链接是针对每个国家/地区的应用商店还是通用的?

我也不知道是否只是通过将链接放在那里就可以做到这一点:

@IBAction func rate(sender: AnyObject) {
    UIApplication.sharedApplication().openURL(NSURL(string : "webLinkHere")!)
}

还是我应该使用另一种方式来做到这一点?

谢谢


4
转到您的itunesconnect帐户->我的应用程序->单击“ +”按钮->新的iOS应用程序->填写需要的详细信息->填写所有详细信息后,转到您的应用程序->单击更多按钮->在AppStore上查看->将您重定向到您的应用程序URL,这将是通用的,并且在您的应用程序发布后将保持不变。
2015年

非常感谢,所以我只将链接放在“ webLinkHere”的地方,就可以了吗?
路易斯·费利佩

是的,所以它将重定向您到您的应用程序,您应该投票给我的答案
Krunal Darji 2015年

我尝试了您的答案,但iTunes指出“您所要求的商品目前在印度或美国商店中不可用-@Krunal Darji
amar

1
@amar仔细阅读了该问题
Krunal Darji

Answers:


136

试试看,通过您的应用程序ID更改方法中的appId

迅捷5

import StoreKit

func rateApp() {
    if #available(iOS 10.3, *) {
        SKStoreReviewController.requestReview()

    } else if let url = URL(string: "itms-apps://itunes.apple.com/app/" + "appId") {
        if #available(iOS 10, *) {
            UIApplication.shared.open(url, options: [:], completionHandler: nil)

        } else {
            UIApplication.shared.openURL(url)
        }
    }
}

迅捷3 \ 4

func rateApp() {
    guard let url = URL(string: "itms-apps://itunes.apple.com/app/" + "appId") else {
        return
    }
    if #available(iOS 10, *) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)

    } else {
        UIApplication.shared.openURL(url)
    }
}

id959379869 这是您进入应用程序的Itune页面时的ID

范例: https://itunes.apple.com/fr/app/hipster-moustache/ id959379869?mt = 8

如何获得ID

  1. Itunesconnect帐户
  2. 我的应用程式
  3. 点击“ +”按钮
  4. 新的iOS应用
  5. 填写需要详细信息
  6. 填写完所有详细信息后,转到您的应用
  7. 点击更多按钮
  8. 在AppStore上查看
  9. 它将您重定向到您的应用网址,这将是通用的
  10. 看Http URL

3
我在App Store上有一个实时应用程序。上面的代码可以100%工作。我刚才测试过。对于那些正在寻找当前解决方案的人,这就是它:-)
Paul Metas,2016年

2
iOS 10上的防护措施似乎不必要吗?
thibaut noah

1
@YannickSteph如果您遵循的准则不是,则应使用if语句代替
thibaut noah

1
这是本文中使用Swift4为我工作的唯一工具,谢谢!
Brewski

2
Apple文档就使用SKStoreReviewController.requestReview进行了准确说明。“尽管在应用程序的用户体验流程中有意义时,您应该调用此方法,但评分/评论请求视图的实际显示取决于App Store政策。由于此方法可能会或可能不会发出警报,因此并非可以根据按钮的点击或其他用户操作来调用它。”
TheTeacher19

25

这对我来说是最好的。将用户直接定向到应用程序的“写评论”作曲家。

Swift 3.1(支持iOS10及更低版本)

推出新品 action=write-review

let appID = "959379869"

if let checkURL = URL(string: "http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=\(appID)&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8") {
    open(url: checkURL)
} else {
    print("invalid url")
}

...

func open(url: URL) {
    if #available(iOS 10, *) {
        UIApplication.shared.open(url, options: [:], completionHandler: { (success) in
            print("Open \(url): \(success)")
        })
    } else if UIApplication.shared.openURL(url) {
            print("Open \(url)")
    }
}

经过测试并在Swift 2.2上工作

let appID = "959379869" // Your AppID
if let checkURL = NSURL(string: "http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=\(appID)&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8") {
    if UIApplication.sharedApplication().openURL(checkURL) {
        print("url successfully opened")
    }
} else {
    print("invalid url")
}

谢谢完整的回答:)。您确实忘记了打开swift 3.0示例中的URL!
MQoder

4
您的reviewString不会在伴侣的任何地方使用
thibaut noah

1
但是代码应该经过测试,reviewString没有使用过。还有\(success)一个已使用但未在else语句中声明的变量
MBH

1
请,此解决方案除了新建APP STORE(iOS版11)我实现并测试这个程式码的iOS 9和IOS 10,但不起作用iOS上的11
马库斯

1
@Alfi答案正在使用swift4和iOS 11. *设备
Surendra Kumar,

20

现在在iOS 10.3+之后

SKStoreReviewController允许用户通过对话框直接从应用程序内部为应用程序评分。唯一的不足是您只能请求StoreKit显示对话框,但不能确定是否会显示。

import StoreKit

func requestToRate() {
    SKStoreReviewController.requestReview()
}

这是正确的答案。这就是流量大的应用程序如何获得数千条评论的方式。
卢卡斯·丘

SKStoreReviewController是获取应用程序反馈的好方法。但是,您应该注意,在365天的时间内,该提示最多只会向用户显示3次。有关更多信息,请访问:developer.apple.com/documentation/storekit/…–
Bhaumik

可悲的是,它在iOS 14上
令人垂涎-Ahmadreza

16

斯威夫特4

let url = URL(string: "itms-apps:itunes.apple.com/us/app/apple-store/id\(YOURAPPID)?mt=8&action=write-review")!
UIApplication.shared.openURL(url)

13

您可以使用以下功能,并将APP_ID替换为您的功能。调用此功能将在应用商店链接中打开该应用,用户将看到“评论”页面,在该页面中,他可以轻松单击并撰写评论。

func rateApp(){
   UIApplication.sharedApplication().openURL(NSURL(string : "itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=\(APP_ID)&onlyLatestVersion=true&pageNumber=0&sortOrdering=1)")!);
}

APP_ID是否具有以下格式:“ id912873918273”或“ 912873918273”或“ com.Companyname.Appname”?
vkalit

3
AppStore已打开,但会引发错误:Your request produced an error. [newNullResponse]
Tai Le

现在我只用这一个:UIApplication.sharedApplication()的OpenURL(NSURL(字符串: “ itunes.apple.com/app/id_APPID”)!
马哈茂德阿赫桑

@MahmudAhsan链接的末尾有一个自动完成错误,字符串中括号的多余结尾不应该出现在这里,因为它是一个字符,我无法对其进行编辑。
thibaut noah

9

对于iOS 10.3+,您可以将SKStoreReviewController与简单对话框一起使用,并在警报样式窗口中选择等级。要使用它,您应该导入StoreKit库。因此,对应用程序进行内部评级的通用方法是这样的:

import StoreKit

func rateApp(){
   if #available(iOS 10.3, *) {
      SKStoreReviewController.requestReview()
   } else {
      guard let url = URL(string: "itms-apps://itunes.apple.com/ru/app/cosmeteria/id1270174484") else {
         return
      }

      if #available(iOS 10.0, *) {
         UIApplication.shared.open(url, options: [:], completionHandler: nil)
      } else {
         UIApplication.shared.openURL(url)
      }
   }
}

而且,当您尝试在模拟器中启动它时,您将不会看到“ App Store”窗口,因此请在设备上尝试它,然后它将起作用。这种方式使用所有功能涵盖所有iOS版本。应用地址“ / us / app”中路径的一部分表示您的App Store本地化,例如“ us”表示美国。只需在任何浏览器的App Store中打开app,即可在地址字符串中轻松找到您的app ID。要获取链接,只需在浏览器中复制地址。将“ https://”更改为“ itms-apps://”可让您在App Store应用程序中打开应用程序,而“ https”可在Safari中打开网页


requestReview不能保证每次都在真实设备中显示。
Amr Lotfy

这应该是新批准的答案。由于10.3应该几乎是每个人的目标,因此它摆脱了重定向的丑陋并直接发送到商店。很干净。
詹森·肖特

8

Swift 5.1:以下功能可将您的用户直接带到ANY商店的评论区域,而不仅仅是美国商店:

func rateApp(id : String) {
    guard let url = URL(string : "itms-apps://itunes.apple.com/app/id\(id)?mt=8&action=write-review") else { return }
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    } else {
        UIApplication.shared.openURL(url)
    }
}

用法:

rateApp(id: "1287000522")

重要说明:这在模拟器上不起作用!在真实设备上进行测试。


7

警告:如果您在模拟器上运行应用程序

 UIApplication.sharedApplication().openURL(NSURL(string : "url")!) 

无法使用,因为模拟器中没有应用商店。为了测试此功能,您必须在设备上运行您的应用程序。


这是不正确的。“ openURL”功能可在模拟器和设备上使用。但是,根据您提供的URL,模拟器可能无法处理它。
山姆·斯宾塞

2

迅捷3

  func rateApp(){
UIApplication.shared.open(URL(string : "itms-apps://itunes.apple.com/app/id959379869")!, options: [:]) { (done) in
  // Handle results

}}

id959379869这是当您进入应用程序的iTunes页面时的ID


1

转到您的itunesconnect帐户->我的应用程序->单击“ +”按钮->新的iOS应用程序->填写要求的详细信息->填写所有详细信息后,转到您的应用程序->单击更多按钮->在AppStore上查看->将您重定向到您的应用程序URL,这将是通用的,并且在您的应用程序发布后将保持不变。


itunes.apple.com/us/app/tap-dont-tap/…这是我的链接,上面写着美国,所以现在我不知道它是否通用
Luis Felipe 2015年

ya,它是通用的,您可以继续进行下去,因此,您目前尚未批准二进制文件,这就是其显示项不可用的原因
Krunal Darji 2015年

0

以上所有答案都不是最佳做法,它们可能会影响您的应用商店评级。为了获得最佳实践,请使用以下代码。

func ReviewAppController() {
    let alert = UIAlertController(title: "Feedback", message: "Are you enjoying our App?", preferredStyle: .alert)
    alert.addAction(UIAlertAction(title: "Dismis", style: .cancel, handler: nil))
    alert.addAction(UIAlertAction(title: "Yes, i Love it!", style: .default, handler: {_ in
        SKStoreReviewController.requestReview()
    }))
    alert.addAction(UIAlertAction(title: "No, this sucks!", style: .default, handler: {_ in
        //Collect feedback
    }))
    present(alert, animated: true)
}

-1

此链接在App Store中打开您的应用程序页面,然后显示撰写评论表

itms-apps://itunes.apple.com/app/id[APP_ID]?action=write-review

您可以APP_ID应用程序详细信息下的App Store Connect中找到Apple ID


-1

如果您想直接撰写评论而不只是打开应用程序页面:

    if let url = URL(string: "https://itunes.apple.com/in/app/\(yourappname)/id\(yourAppleAppId)?ls=1&mt=8&action=write-review") {
       if #available(iOS 10.0, *) {
           UIApplication.shared.open(url, options: [:], completionHandler: nil)
       } else {
           // Earlier versions
           if UIApplication.shared.canOpenURL(url as URL) {
              UIApplication.shared.openURL(url as URL)
           }
       }
    }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.