1

我正在开发 AppleWatch 应用程序。之前我开发了一个IOS应用最小版本IOS 6.0。我正在使用 WatchOS 2.0 开发的 AppleWatch 应用程序。下面是IOS应用程序类中的类代码。WatchConnectivity 框架和 WCSessionDelegate 协议需要最低 IOS 版本 9.0。那么如何在不崩溃的情况下运行旧版本

.h
#import <Foundation/Foundation.h>
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_9_0
#import <WatchConnectivity/WatchConnectivity.h>
#endif

#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_9_0
@interface WatchConnectivityManager : NSObject<WCSessionDelegate>{
#else
@interface WatchConnectivityManager : NSObject{
#endif

}

@property(nonatomic, assign) BOOL oneTimeSaved;

+(WatchConnectivityManager*)getInstance;

-(void)sharedDefaultsDataSave:(NSString*)params;
@end


.m
#import "WatchConnectivityManager.h"

@implementation WatchConnectivityManager
@synthesize oneTimeSaved;

static WatchConnectivityManager *instance =nil;


- (id) init
{
    /* first initialize the base class */

    /* then initialize the instance variables */
    if (self = [super init]) {
        #if __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_9_0
        if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"9.0") && NSClassFromString(@"WCSession")!=nil && [WCSession isSupported]) {
            WCSession *session = [WCSession defaultSession];
            session.delegate = self;
            [session activateSession];
        }
        #endif

    }
    /* finally return the object */

    return self;
}
@end
4

2 回答 2

0

您的 Base SDK 应该是 iOS 9.0 以便导入框架,而您可以将部署目标设置为低于 9.0。它将构建您的项目,但显然您需要在调用WatchConnectivity.

于 2016-01-25T06:01:47.637 回答
0
#if __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_9_0
    // after iPhone OS SDK 9.0
#else
    // before iPhone OS SDK 9.0
#endif

iOS9.0之前不能使用WatchConnectivity框架和WCSessionDelegate协议。所以用较低的API做同样的事情或者什么都不做。

于 2016-01-21T10:14:30.053 回答