app ios 内评分
2018-09-14 14:31:00 weixin_34060741 阅读数 24

App内评分

苹果在iOS 10.3中增加了App评分的新API,用户可以直接在App内评分,而不用跳转到App Store。
使用非常简单,只有一行代码,但也说明了它没有任何可定制性。

此API使用前需要 #import <StoreKit/StoreKit.h>:

    if (@available(iOS 10.3, *)) {
            [SKStoreReviewController requestReview];
    }

显示效果如下图:


2710049-dfd7aa2508d748e9.png
App内评分

点击星星即可评分,评分之后会显示提交按钮:


2710049-92050b29bf38947a.png
准备提交

“提交”按钮仅在生产环境(上传App Store的包)才是有效的,其余均为上图中的灰色禁用状态。

注意:
苹果官方说不能骚扰用户,因此使用此API有非常严格的限制。
按苹果规定,每台设备、每个App、每年只能弹出3次该提示窗口,如果超过这个次数,则什么都不会显示。(╯‵□′)╯︵┻━┻
虽然规定严格,但它非常方便,用户随手一点就可以给App评分了。再想想以前的方式:先离开App跳转到App Store,等待网络加载,在那么长的页面中找到评分入口。。。破坏用户使用App的整体性、影响用户心情、浪费用户时间、增加用户学习成本。。。可以说毫无优点。即便我自己作为一个开发者,都很少跳转到应用商店给App评分,但如果我发现哪个App使用了这个新API,我一般至少给个4星好评!举手之劳,何乐而不为呢?(~ ̄▽ ̄)~
因此,我们必须利用好每年的这3次机会。苹果官方的意思是,你应该在用户对你的App有了整体的了解,且对你的App感到满意的时候弹出窗口,请用户给予评分。
这么玄学的状态怎么把握呢?举个栗子,你的App是一款游戏,用户正在打关底boss,你肯定不想在这个时候弹出窗口让用户评分吧(保证他给你一星)?等他成功通关的时候,这时他正心满意足,肯定不介意赏你几颗星星。

新API虽然方便又好用,但是次数实在太少,而且弹出了用户可能也会点击“取消”,关键这也会使次数-1!而且,这个功能是有可能被用户关闭的,在系统设置->iTunes Store与App Store中可以找到“App内评分及评论”的开关,如果用户关闭了这个开关,则上面的窗口也不会弹出。
所以,我们还是需要有个跳转到App Store的方法做保障,在次数不足时(App中无法获取到“App内评分及评论”开关的状态)使用。

Deep Link

大家应该都知道跳转到App Store的方法:

NSString *appURL = @"https://itunes.apple.com/cn/app/idAppID";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:appURL]];

这样可以跳转到自己的APP在应用商店的地址,但是有可能用户找不到在哪评分?(要相信,真的有这样的用户存在)

因此,下面介绍一种可以直接跳转到评分页面的方法。这个方法其实在上述新API的注释中苹果已经提到,他们称为“Deep Link”。使用方式与上面的方法一致,只是在URL后面拼接一个query params:action=write-review
下面是完整代码:

NSString *appURL = @"https://itunes.apple.com/cn/app/idAppID?action=write-review";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:appURL]];

它在App Store中的显示效果如下:


2710049-c0095c15399bd7ab.jpg
Deep Link

怎么找到自己的AppID?

  • 如果你的App已经上线,那么在App Store中找到你的App,点击分享->拷贝链接->在别处粘贴,就可以在链接末尾找到类似于id123456789的字符串,这串数字就是你的AppID了。
  • 不管你的App是否已经上线,在App Store Connect(以前叫iTunes Connect)中找到你的App,它的位置在下图中的两处红框中可以找到:
    2710049-5ab308ab36b38b70.png
    QQ20180914-142518.png
2019-01-17 11:41:27 qq_30513483 阅读数 227

App内评分

苹果在iOS 10.3中增加了App评分的新API,用户可以直接在App内评分,而不用跳转到App Store。
使用非常简单,只有一行代码,但也说明了它没有任何可定制性。

此API使用前需要 #import <StoreKit/StoreKit.h>:

    if (@available(iOS 10.3, *)) {
            [SKStoreReviewController requestReview];
    }

显示效果如下图:

 

App内评分

点击星星即可评分,评分之后会显示提交按钮:

 

准备提交

“提交”按钮仅在生产环境(上传App Store的包)才是有效的,其余均为上图中的灰色禁用状态。

注意:
苹果官方说不能骚扰用户,因此使用此API有非常严格的限制。
按苹果规定,每台设备、每个App、每年只能弹出3次该提示窗口,如果超过这个次数,则什么都不会显示。(╯‵□′)╯︵┻━┻
虽然规定严格,但它非常方便,用户随手一点就可以给App评分了。再想想以前的方式:先离开App跳转到App Store,等待网络加载,在那么长的页面中找到评分入口。。。破坏用户使用App的整体性、影响用户心情、浪费用户时间、增加用户学习成本。。。可以说毫无优点。即便我自己作为一个开发者,都很少跳转到应用商店给App评分,但如果我发现哪个App使用了这个新API,我一般至少给个4星好评!举手之劳,何乐而不为呢?(~ ̄▽ ̄)~
因此,我们必须利用好每年的这3次机会。苹果官方的意思是,你应该在用户对你的App有了整体的了解,且对你的App感到满意的时候弹出窗口,请用户给予评分。
这么玄学的状态怎么把握呢?举个栗子,你的App是一款游戏,用户正在打关底boss,你肯定不想在这个时候弹出窗口让用户评分吧(保证他给你一星)?等他成功通关的时候,这时他正心满意足,肯定不介意赏你几颗星星。

新API虽然方便又好用,但是次数实在太少,而且弹出了用户可能也会点击“取消”,关键这也会使次数-1!而且,这个功能是有可能被用户关闭的,在系统设置->iTunes Store与App Store中可以找到“App内评分及评论”的开关,如果用户关闭了这个开关,则上面的窗口也不会弹出。
所以,我们还是需要有个跳转到App Store的方法做保障,在次数不足时(App中无法获取到“App内评分及评论”开关的状态)使用。

Deep Link

大家应该都知道跳转到App Store的方法:

NSString *appURL = @"https://itunes.apple.com/cn/app/idAppID";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:appURL]];

这样可以跳转到自己的APP在应用商店的地址,但是有可能用户找不到在哪评分?(要相信,真的有这样的用户存在)

因此,下面介绍一种可以直接跳转到评分页面的方法。这个方法其实在上述新API的注释中苹果已经提到,他们称为“Deep Link”。使用方式与上面的方法一致,只是在URL后面拼接一个query params:action=write-review
下面是完整代码:

NSString *appURL = @"https://itunes.apple.com/cn/app/idAppID?action=write-review";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:appURL]];

它在App Store中的显示效果如下:

 

Deep Link

怎么找到自己的AppID?

  • 如果你的App已经上线,那么在App Store中找到你的App,点击分享->拷贝链接->在别处粘贴,就可以在链接末尾找到类似于id123456789的字符串,这串数字就是你的AppID了。
  • 不管你的App是否已经上线,在App Store Connect(以前叫iTunes Connect)中找到你的App,它的位置在下图中的两处红框中可以找到:

    QQ20180914-142518.png



作者:乌鸢
链接:https://www.jianshu.com/p/4f9fe2e1879e
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

2018-02-02 17:24:00 weixin_33884611 阅读数 15

iOS10.3苹果新增了一些比较实用的功能,主要有:

开发者可以随时更新App的图标,不再需要通过更新App实现
允许App内评分及留言
SiriKit 允许第三方应用使用 Siri 进行支付

因为我们应用目前没有用到Siri功能,所以这里主要还是讲讲动态修改App图标和App内评分,以及那些需要注意的地方和坑点。

动态修改App图标

修改App图标的方法在UIApplication的UIAlternateApplicationIcons分类里,该分类很简单,只有两个属性和一个方法。来看看官方文档怎么写的吧

/* The value of this property is YES only when the system allows you to change the icon of your app. To declare your app's alternate icons, include them in the CFBundleIcons key of your app's Info.plist file. /
翻译
/
这个属性仅在系统允许你更新你的App icon时为YES,你要声明更新的icon在你App的info.plist文件里设置,以CFBundleIcons为key对应的值 */

@property (readonly, nonatomic) BOOL supportsAlternateIcons;

/*

Parameters
alternateIconName

The name of the alternate icon, as declared in the CFBundleAlternateIcons key of your app's Info.plist file. Specify nil if you want to display the app's primary icon, which you declare using the CFBundlePrimaryIcon key. Both keys are subentries of the CFBundleIcons key in your app's Info.plist file.

completionHandler

A handler to be executed with the results. After attempting to change your app's icon, the system reports the results by calling your handler. (The handler is executed on a UIKit-provided queue, and not necessarily on your app's main queue.) The handler has no return value and takes the following parameter:

error

On success, the value of this parameter is nil. If an error occurred, this parameter contains the error object indicating what happened and the value of the alternateIconName property remains unchanged.

Discussion

Use this method to change your app's icon to its primary icon or to one of its alternate icons. You can change the icon only if the value of the supportsAlternateIcons property is YES.

You must declare your app's primary and alternate icons using the CFBundleIcons key of your app's Info.plist file. For information about how to configure alternate icons for your app, see the description of the CFBundleIcons key in Information Property List Key Reference.
/
翻译
/

参数
alternateIconName

替补icon的名称,是你App的info.plist文件以CFBundleAlternateIcons为key的值。设置成nil会显示App的原始icon,即CFBundlePrimaryIcon为key对应名称的icon。这些key都在你App的info.plist文件的CFBundleIcons下级。

completionHandler

处理结果的回调. 在尝试更新你App的icon之后,系统会通过该回调返回结果. (该回调在UIKit提供的队列上,而不是主队列) 这个回调不需要返回值并且回带来以下的参数值:

error

如果调用成功,参数的值为nil。如果发生错误,该参数包含携带错误信息的对象,并且alternateIconName属性的值不会发生改变。

说明

调用这个方法去更新你App的icon成原始图片或者其中一个替补图标。只有在supportsAlternateIcons属性值为YES时才能更新icon。

你必须在你App的info.plist文件的CFBundleIcons键值对里设置你App的原始图标和替补图标。想了解更多有关如何设置你App替补icon的信息,请在属性列表键值对信息查看CFBundleIcons键的描述。
*/

- (void)setAlternateIconName:(nullable NSString *)alternateIconName completionHandler:(nullable void (^)(NSError *_Nullable error))completionHandler;

/*
When the system is displaying one of your app's alternate icons, the value of this property is the name of the alternate icon (from your app's Info.plist file). When the system is displaying your app's primary icon, the value of this property is nil.
/
翻译
/

当系统显示你App的其中一个替补图标时,这个属性的值是你替补图标的名称(该名称在你App的info.plist文件里设置)。当系统显示你App的原始图标时,该属性的值为nil。
*/

@property (nullable, readonly, nonatomic) NSString *alternateIconName;

看完官方文档之后,我们对更新图标已经有了大概的了解。要更新图标就要现在info.plist里添加key:CFBundleIcons,下级再添加替补图标的key:CFBundleAlternateIcons和原始图标的key:CFBundlePrimaryIcon。接下来我们就开始修改info.plist吧。


3242793-373fbfd7cff19710.png
图标相关的plist设置

CFBundleIcons:一个字典,包含所有AppIcon信息。包含CFBundlePrimaryIcon和CFBundleAlternateIcons。
CFBundlePrimaryIcon:优先以Assets.xcassets中的APPicon为准,如果在Assets.xcassets里设置了AppIcon,那么CFBundlePrimaryIcon里面的配置就会被忽略。否则会以CFBundlePrimaryIcon配置的icon为AppIcon。
CFBundleAlternateIcons:一个数组,配置待更新图标的名称。
UIPrerenderedIcon:指定App的图标是否包含闪光效果,如果图标已经有这个效果,就把这个属性设置为YES以防止系统再次添加相同效果。如果设置为NO(默认值),iOS系统会自动添加这个效果。
CFBundlePrimaryIcon和CFBundleAlternateIcons设置的图标都不能放在Assets.xcassets中。

info.plist配置好之后,就可以通过代码更新图标了

if (@available(iOS 10.3, *)) {
        if ([[UIApplication sharedApplication] supportsAlternateIcons]) {
            NSString *name = @"NewAppIcon";
            [[UIApplication sharedApplication] setAlternateIconName:name completionHandler:^(NSError * _Nullable error) {
                NSLog(@"error === %@",error);
            }];
        }
    }
3242793-e01d62c03205d648.png
更新图标

ok,图标成功更新,但是还有一点小问题,弹窗提示的文字是英文的,我们需要把它改成中文。还是在info.plist里面,添加CFBundleAllowMixedLocalizations键,值设置为YES。


3242793-2758877c7e926592.png
更新图标
App内评分

App内评分也很简单,导入StoreKit框架,在需要的地方写上如下的代码就行了:

if (@available(iOS 10.3, *)) {
        [SKStoreReviewController requestReview];
    }

代码虽然不多,但是按照习惯咱们还是看一遍官方文档吧。

/*

Discussion

Although you should call this method when it makes sense in the user experience flow of your app, the actual display of a rating/review request view is governed by App Store policy. Because this method may or may not present an alert, it's not appropriate to call it in response to a button tap or other user action.

Note

When you call this method while your app is still in development mode, a rating/review request view is always displayed so that you can test the user interface and experience. However, this method has no effect when you call it in an app that you distribute using TestFlight.
When you call this method in your shipping app and a rating/review request view is displayed, the system handles the entire process for you. In addition, you can continue to include a persistent link in the settings or configuration screens of your app that deep-links to your App Store product page. To automatically open a page on which users can write a review in the App Store, append the query parameter action=write-review to your product URL.
/
翻译
/

说明

尽管你应该在用户体验过程中调用这个方法,这个评分视图是由App Store策略管理的。因为这个方法可能也可能不弹出提醒,这个方法不适合在响应一个按钮或者其他的用户操作时调用。

注释

当你的App在开发模式时你调用这个方法,评分视图会展示给你去测试用户交互和体验。然而,当你使用从TestFlight分发的App时这个方法不会生效。
当你在你的App调用这个方法时,会显示一个评分视图,系统会为你处理整个过程。另外,你也能继续在你App的设置和配置界面包含一个持久的链接,跳转到App Store中你App的产品页面。为了自动打开一个页面,用户可以在App Store中编写回复,需要将参数action=write-review拼接到你App url的后面。
To automatically open a page on which users can write a review in the App Store, append the query parameter action=write-review to your product URL.
*/

3242793-0a15e9d3d09e95c7.png
应用内评分

App内评分弹窗的实现虽然简单,但需要注意几点:

app内评分弹窗提示一年只允许弹三次(不区分版本)。
如果用户在在系统设置里面关掉app内评分弹窗提示,app内好评弹窗将在未来的一年内无法展示。

2019-02-21 10:16:00 weixin_34146986 阅读数 3

  iOS APP评分时需要调用App Store跳转到对应APP的详情页进行评分。

1、首先需要获取到APP的Apple ID

a、进入App Store Connect - 我的App ,找到目标APP,点击进入。
b、在App信息栏 - 综合信息 - Apple ID
1429529-42fb6cbcb2fcc665.png
image.png

2、获取到Apple ID后,替换下面代码中的Apple ID

NSString *url = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@",@"Apple ID"];
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:url]];
2013-12-12 22:25:02 u011205774 阅读数 638
在ios6.0前跳转到appstore评分一般是直接跳转到appstore评分
NSString *evaluateString = [NSString stringWithFormat:@"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=123456789"];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:evaluateString]];

在ios6.0,APPle增加了一个新功能,当用户需要给APP评分时候,不再跳转到appstore了,可以在应用内实现打开appstore,苹果提供了一个框架StoreKit.framework,实现步骤如下:
  1:导入StoreKit.framework,在需要跳转的控制器里面添加头文件#import
  2:实现代理SKStoreProductViewControllerDelegate
3:- (void)evaluate{
   
    //初始化控制器
    SKStoreProductViewController *storeProductViewContorller = [[SKStoreProductViewController alloc] init];
    //设置代理请求为当前控制器本身
    storeProductViewContorller.delegate = self;
    //加载一个新的视图展示
    [storeProductViewContorller loadProductWithParameters:
     //appId唯一的
     @{SKStoreProductParameterITunesItemIdentifier : @"123456789"} completionBlock:^(BOOL result, NSError *error) {
         //block回调
        if(error){
            NSLog(@"error %@ with userInfo %@",error,[error userInfo]);
        }else{
            //模态弹出appstore
            [self presentViewController:storeProductViewContorller animated:YES completion:^{
               
            }
             ];
        }
    }];
}

//取消按钮监听
- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController{
    [self dismissViewControllerAnimated:YES completion:^{
       
    }];
}


就实现了app 内为app评分功能了

iOS App评分

阅读数 60

iOS APP 评分

阅读数 2400

iOS app评分功能

阅读数 8

没有更多推荐了,返回首页