美文网首页iOS 开发相关
SKStoreProductViewController --

SKStoreProductViewController --

作者: Eddiegooo | 来源:发表于2018-11-26 15:19 被阅读331次

    不跳转App Store 应用内直接下载应用

    SKStoreProductViewController 这个类需要了解下。

    /* View controller to display iTunes Store product information */
    SK_EXTERN_CLASS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED @interface SKStoreProductViewController : UIViewController
    

    官方解释:用于展示iTunes Store 商品信息的类,继承自UIViewController。

    使用

    1.导入头文件:#import <StoreKit/StoreKit.h>

    2.初始化类,设置代理SKStoreProductViewControllerDelegate,展示VC。必须使用Present VC方式

            SKStoreProductViewController *storeVC = [[SKStoreProductViewController alloc] init];
            //设置代理 SKStoreProductViewControllerDelegate
            storeVC.delegate = self;
            [self presentViewController:storeVC animated:YES completion:nil];
    

    3.请求Store 信息。 必须在展示VC之后再请求

        /** presentVC 之后再调取加载Store方法 官方备注:
         // Load product view for the product with the given parameters.  See below for parameters (SKStoreProductParameter*).
         // Block is invoked when the load finishes.
         */
            [storeVC loadProductWithParameters:@{SKStoreProductParameterITunesItemIdentifier : @"1131090631"} completionBlock:^(BOOL result, NSError * _Nullable error) {
                if (error) {
                    NSLog(@"error = %@", error);
                }else {
                    NSLog(@"显示完成");
                }
            }];
    

    具体请求的Paramters ,可以点进去看下具体是什么:

    // iTunes Store item identifier (NSNumber) of the product
    SK_EXTERN NSString * const SKStoreProductParameterITunesItemIdentifier NS_AVAILABLE_IOS(6_0);
    
    // SKU for the In-App Purchase product (NSString) to render at the top of the product page
    SK_EXTERN NSString * const SKStoreProductParameterProductIdentifier NS_AVAILABLE_IOS(11_0);
    
    // Analytics provider token (NSString)
    SK_EXTERN NSString * const SKStoreProductParameterProviderToken NS_AVAILABLE_IOS(8_3);
    
    // Advertising partner token (NSString)
    SK_EXTERN NSString * const SKStoreProductParameterAdvertisingPartnerToken NS_AVAILABLE_IOS(9_3); NS_AVAILABLE_IOS(6_0);
    
    // SKU for the In-App Purchase product (NSString) to render at the top of the product page
    SK_EXTERN NSString * const SKStoreProductParameterProductIdentifier NS_AVAILABLE_IOS(11_0);
    
    // iTunes Store affiliate token (NSString)
    SK_EXTERN NSString * const SKStoreProductParameterAffiliateToken NS_AVAILABLE_IOS(8_0);
    
    // iTunes Store affiliate campaign token (NSString)
    SK_EXTERN NSString * const SKStoreProductParameterCampaignToken NS_AVAILABLE_IOS(8_0);
    
    // Analytics provider token (NSString)
    SK_EXTERN NSString * const SKStoreProductParameterProviderToken NS_AVAILABLE_IOS(8_3);
    
    // Advertising partner token (NSString)
    SK_EXTERN NSString * const SKStoreProductParameterAdvertisingPartnerToken NS_AVAILABLE_IOS(9_3);
    

    App Store 参数:SKStoreProductParameterITunesItemIdentifier , 值就是的应用ID(纯数字即可,不要id)。eg: https://itunes.apple.com/cn/app/gearbest-shopping/id1131090631?l=en&mt=8 这里只取:1131090631.

    4.实现代理方法, dismiss VC

    - (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
        //点击完成或是下载更新完成的回调,dismiss掉VC
        [viewController dismissViewControllerAnimated:YES completion:nil];
    }
    

    至此,应用内下载更新应用完成。

    貌似在iOS 12系统上请求比较慢.issue
    这个方法没用系统跳转慢

    Tips : 拓展

    可以点到这里看下<StoreKit/StoreKit.h>, 还有SKStoreReviewController.h, SKProductStorePromotionController具体可以研究下。

    相关文章

      网友评论

        本文标题:SKStoreProductViewController --

        本文链接:https://www.haomeiwen.com/subject/rkrbqqtx.html