iOS开发 - appstore评价与app内展示appstore

iOS开发 - appstore评价与app内展示appstore

之前开发中遇到app内通过广告直接展示某个app的appstore信息页面。StoreKit提供了SKStoreProductViewController可以app中直接访问app store 而不需要跳转到app store

一、代码实现

objectivec 复制代码
#import "SDStoreProductManager.h"
#import <StoreKit/StoreKit.h>

static SDStoreProductManager *shareInstance = nil;

@interface SDStoreProductManager ()<SKStoreProductViewControllerDelegate>

@property (nonatomic, weak) UIViewController *controller;

@end

@implementation SDStoreProductManager

+ (instancetype)shareInstance {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        shareInstance = [[SDStoreProductManager alloc] init];
    });
    return shareInstance;
}

/**
 有次数限制,一年只能使用三次
 使用次数超限后,需要跳转appstore
 */
- (void)appstoreSystemComent {
    if (@available(iOS 10.3, *)) {
        if([SKStoreReviewController respondsToSelector:@selector(requestReview)]) {// iOS 10.3 以上支持
            //防止键盘遮挡
            [[UIApplication sharedApplication].keyWindow endEditing:YES];
            [SKStoreReviewController requestReview];
        }
    } else {
        // Fallback on earlier versions
    }
}

/**
 可评分评论,打开appstore
 */
- (void)openAppStoreComment:(NSString *)appID {
    if (!(appID && [appID isKindOfClass:[NSString class]] && appID.length > 0)) {
        return;
    }
    NSString *urlString = [NSString  stringWithFormat: @"itms-apps://itunes.apple.com/app/id%@?action=write-review",appID];//替换为对应的APPID
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
}

/**
 app内部加载评价
 */
- (void)inAppOpenAppStore:(NSString *)appID controller:(UIViewController *)controller {
    if (!(appID && [appID isKindOfClass:[NSString class]] && appID.length > 0)) {
        return;
    }
    
    if (!(controller && [controller isKindOfClass:[UIViewController class]])) {
        return;
    }
    
    __weak typeof(self) weakSelf = self;
    weakSelf.controller = controller;

    SKStoreProductViewController *storeProductViewContorller = [[SKStoreProductViewController alloc] init];
    storeProductViewContorller.delegate = self;
    //加载App Store视图展示
    [storeProductViewContorller loadProductWithParameters:@{SKStoreProductParameterITunesItemIdentifier:appID} completionBlock:^(BOOL result, NSError *error) {
         if(error) {
         } else {
             //模态弹出appstore
             [weakSelf.controller presentViewController:storeProductViewContorller animated:YES completion:^{
                  
             }];
         }
     }];
}

// 代理方法
- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
    [self.controller dismissViewControllerAnimated:YES completion:^{
        
    }];
}

@end

二、小结

iOS开发 - appstore评价与app内展示appstore,使用StoreKit之SKStoreProductViewControl展示appstore某个应用的appstore页面。

学习记录,每天不停进步。

相关推荐
GEEKVIP12 分钟前
手机使用技巧:8 个 Android 锁屏移除工具 [解锁 Android]
android·macos·ios·智能手机·电脑·手机·iphone
GEEKVIP23 分钟前
如何在 Windows 10 上恢复未保存/删除的 Word 文档
macos·ios·智能手机·电脑·word·笔记本电脑·iphone
奇客软件1 小时前
iPhone使用技巧:如何恢复变砖的 iPhone 或 iPad
数码相机·macos·ios·电脑·笔记本电脑·iphone·ipad
前端张三2 小时前
Mac 电脑pink 后端ip地址进行本地联调
服务器·tcp/ip·macos
缘友一世8 小时前
macos安装mongodb
数据库·mongodb·macos
笑非不退16 小时前
macOS开发环境配置与应用开发
macos
colorknight1 天前
1.2.3 HuggingFists安装说明-MacOS安装
人工智能·低代码·macos·huggingface·数据科学·ai agent
奇客软件1 天前
如何从相机的记忆棒(存储卡)中恢复丢失照片
深度学习·数码相机·ios·智能手机·电脑·笔记本电脑·iphone
GEEKVIP1 天前
如何修复变砖的手机并恢复丢失的数据
macos·ios·智能手机·word·手机·笔记本电脑·iphone
kuai-1 天前
MacOS配置python环境
开发语言·python·macos