2

アプリ内アプリストアの製品ビューに新しい API を使用しています。IOS 6 以降でのみ動作するはずですが、私のアプリは iOS 5 以降を対象としています。今、ストアに移動するボタンをタップすると、アプリがレモン色になり、フリーズします!

SKStoreProductViewController

このデバイスがこの機能を実行できるかどうかをテストするにはどうすればよいですか? またはこれがios 6以降の場合は?

というメソッドがある「アプリ内メール」に似たものを探しているのですが、CanSendMailそのようなメソッドはありSKStoreますか?

更に

フレームワークを として弱くリンクしていOptionます。

UPADTE

私はこれを使用しようとしましたが、まだ動作しません!! そして何もログに記録しません:(

if (error) {
        NSLog(@"Error %@ with User Info %@.", error, [error userInfo]);


    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
                                                    message:@"Your device doesn't support In-App Product View"
                                                   delegate:nil
                                          cancelButtonTitle:@"OK"
                                          otherButtonTitles:nil];
    [alert show];


    } else {
        // Present Store Product View Controller
        [self presentViewController:storeProductViewController animated:YES completion:nil];
    }
}];

}
4

2 に答える 2

2

クラスが実行時に利用可能かどうかをテストする一般的な方法は、 を使用することNSClassFromStringです。したがって、次のようなことができます。

Class cls = NSClassFromString(@"SKStoreProductViewController");
if (cls)
{
    // The device is iOS 6.0 or higher, so it's safe to use this class
    SKStoreProductViewController *viewController = [[cls alloc] init];
    ...
}
else
{
    // The device is pre-iOS 6.0; show an error message or have some other
    // reasonable fallback behavior
}

使用しているフレームワークが、対象としている iOS の最小バージョンで利用できない場合は、フレームワークを弱いリンクにすることも確認する必要があります。@rmaddy が指摘したように、詳細についてはSDK 互換性ガイドを参照してください。

于 2013-04-17T04:38:05.577 に答える
1

これが最もうまくいくことがわかりました:

#define SYSTEM_VERSION_EQUAL_TO(v)                  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v)              ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v)                 ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)

if (SYSTEM_VERSION_LESS_THAN(@"6.0")) {

// iOS Version 5.1 and older    

}

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")) {

// iOS Version 6.0 and later    

}

Store Product View コードを 6.0 以降にコピーし、フォールバック コードを 5.1 以前にコピーします。

私はここからこれを学びました。幸運を!!

于 2013-04-20T23:23:35.327 に答える