diff options
author | James Sokoll <j@sokoll.co> | 2017-07-24 15:35:53 -0400 |
---|---|---|
committer | James Sokoll <j@sokoll.co> | 2017-07-24 15:35:53 -0400 |
commit | aabbb6666330f58e388735f1bce094b451dd0dfe (patch) | |
tree | 7f2f452b74451276764f687932e4311854284f76 | |
parent | 38dc7e0008299f818a2e9274e432a4b098c4d57e (diff) | |
download | sdl_ios-aabbb6666330f58e388735f1bce094b451dd0dfe.tar.gz |
Added support for a multisession protocol in iOS 9.0 or greater
-rw-r--r-- | SmartDeviceLink/SDLGlobals.h | 1 | ||||
-rw-r--r-- | SmartDeviceLink/SDLIAPTransport.m | 14 |
2 files changed, 11 insertions, 4 deletions
diff --git a/SmartDeviceLink/SDLGlobals.h b/SmartDeviceLink/SDLGlobals.h index fced9d4e9..1c503e619 100644 --- a/SmartDeviceLink/SDLGlobals.h +++ b/SmartDeviceLink/SDLGlobals.h @@ -9,6 +9,7 @@ #import <Foundation/Foundation.h> #define SDL_SYSTEM_VERSION_LESS_THAN(version) ([[[UIDevice currentDevice] systemVersion] compare:version options:NSNumericSearch] == NSOrderedAscending) +#define SDL_SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(version) ([[[UIDevice currentDevice] systemVersion] compare:version options:NSNumericSearch] != NSOrderedAscending) #define BLOCK_RETURN return @interface SDLGlobals : NSObject diff --git a/SmartDeviceLink/SDLIAPTransport.m b/SmartDeviceLink/SDLIAPTransport.m index cee814556..812019e48 100644 --- a/SmartDeviceLink/SDLIAPTransport.m +++ b/SmartDeviceLink/SDLIAPTransport.m @@ -20,6 +20,7 @@ NSString *const legacyProtocolString = @"com.ford.sync.prot0"; NSString *const controlProtocolString = @"com.smartdevicelink.prot0"; NSString *const indexedProtocolStringPrefix = @"com.smartdevicelink.prot"; +NSString *const multiSessionProtocolString = @"com.smartdevicelink.multisession"; NSString *const backgroundTaskName = @"com.sdl.transport.iap.backgroundTask"; int const createSessionRetries = 1; @@ -183,15 +184,18 @@ int const streamOpenTimeoutSeconds = 2; - (BOOL)sdl_connectAccessory:(EAAccessory *)accessory { BOOL connecting = NO; - - if ([accessory supportsProtocol:controlProtocolString]) { + + if ([accessory supportsProtocol:multiSessionProtocolString] && SDL_SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"9")) { + [self sdl_createIAPDataSessionWithAccessory:accessory forProtocol:multiSessionProtocolString]; + connecting = YES; + } else if ([accessory supportsProtocol:controlProtocolString]) { [self sdl_createIAPControlSessionWithAccessory:accessory]; connecting = YES; } else if ([accessory supportsProtocol:legacyProtocolString]) { [self sdl_createIAPDataSessionWithAccessory:accessory forProtocol:legacyProtocolString]; connecting = YES; } - + return connecting; } @@ -208,7 +212,9 @@ int const streamOpenTimeoutSeconds = 2; } // Determine if we can start a multi-app session or a legacy (single-app) session - if ((sdlAccessory = [EAAccessoryManager findAccessoryForProtocol:controlProtocolString])) { + if ((sdlAccessory = [EAAccessoryManager findAccessoryForProtocol:multiSessionProtocolString]) && SDL_SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"9")) { + [self sdl_createIAPDataSessionWithAccessory:sdlAccessory forProtocol:multiSessionProtocolString]; + } else if ((sdlAccessory = [EAAccessoryManager findAccessoryForProtocol:controlProtocolString])) { [self sdl_createIAPControlSessionWithAccessory:sdlAccessory]; } else if ((sdlAccessory = [EAAccessoryManager findAccessoryForProtocol:legacyProtocolString])) { [self sdl_createIAPDataSessionWithAccessory:sdlAccessory forProtocol:legacyProtocolString]; |