其他知识iOS 开发每天分享优质文章

IOS 应用内直接下载程序 不需跳转AppStore

2018-08-09  本文已影响496人  iOS开发小学生

不跳转AppStore. 原来是IOS6.0就有的新的特性,这和程序自动更新跳转应用商店是一个作用。不同的是,这个可以在应用内部直接打开,不需要挑转到应用商店,当完成操作以后,就可以直接返回到本应用当前操作的界面。用法如下:

SKStoreProductViewController类是UIViewController的子类, 如果你对view controller比较熟悉的话,那SKStoreProductViewController使用起来也非常简单了。当你希望向用户展示App Store中产品时,你需要:

1.实例化一个SKStoreProductViewController类 

2.设置它的delegate 

3.把sotre product视图控制器显示给消费者

剩下的就交给操作系统来处理了。需要记住一点的是SKStoreProductViewController只能以模态的方式显示。SKStoreProductViewControllerDelegate协议定义了一个单独的方法—productViewControllerDidFinish:,当消费者离开App Store时会调用这个方法—一般是通过点击左上角画面中的取消按钮。通过给代理发送productViewControllerDidFinish:消息,操作系统就会把控制权返回到你的程序。当然你不能忘了 只支持IOS6.0及其以上~~

代码如下:

//

//  ViewController.m

//  消费者demo

//

//  Created by mac on 2018/8/9.

//  Copyright © 2018年 com.zkr. All rights reserved.

//

#import "ViewController.h"

#import

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];

}

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event{    SKStoreProductViewController *skstore = [[SKStoreProductViewController alloc] init];

skstore.delegate=self;

[self presentViewController:skstore animated:YES completion:nil];

//最后加载应用数据(一定要记住这个数据要在视图出现以后去加载)

 [skstore loadProductWithParameters:@{SKStoreProductParameterITunesItemIdentifier:@(自己程序的ID)} completionBlock:^(BOOL result, NSError * _Nullable error) {

if(error) {

            //handle the error

 }

    }];

    //present

}

//注意一定要有代理方法,不然,当你返回

- (void)productViewControllerDidFinish:(SKStoreProductViewController*)viewController {

    [viewController dismissViewControllerAnimated:YES

                                 completion:nil];

}

如果对你有用,记得点赞和关注啊!

上一篇下一篇

猜你喜欢

热点阅读