diff --git a/BannerSample/BannerSample.xcodeproj/project.pbxproj b/BannerSample/BannerSample.xcodeproj/project.pbxproj index 9917f57..a354fd5 100644 --- a/BannerSample/BannerSample.xcodeproj/project.pbxproj +++ b/BannerSample/BannerSample.xcodeproj/project.pbxproj @@ -490,6 +490,7 @@ DEVELOPMENT_TEAM = WZMMZ9FP6W; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = BannerSample/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -508,6 +509,7 @@ DEVELOPMENT_TEAM = WZMMZ9FP6W; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = BannerSample/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -527,6 +529,7 @@ DEVELOPMENT_TEAM = 867HB69W94; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = BannerSwiftSample/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -550,6 +553,7 @@ DEVELOPMENT_TEAM = 867HB69W94; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = BannerSwiftSample/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/BannerSample/BannerSample.xcworkspace/contents.xcworkspacedata b/BannerSample/BannerSample.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..37f5ee2 --- /dev/null +++ b/BannerSample/BannerSample.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/BannerSample/BannerSample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/BannerSample/BannerSample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/BannerSample/BannerSample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/BannerSample/BannerSample/AppDelegate.m b/BannerSample/BannerSample/AppDelegate.m index da07463..98a42dd 100644 --- a/BannerSample/BannerSample/AppDelegate.m +++ b/BannerSample/BannerSample/AppDelegate.m @@ -5,10 +5,11 @@ // Copyright © 2016 InMobi. All rights reserved. // -@import InMobiSDK.IMSdk; +@import InMobiSDK; #ifndef INMOBI_ACCOUNT_ID #define INMOBI_ACCOUNT_ID @"4028cb8b2c3a0b45012c406824e800ba" +#define US_PRIVACY_STRING @"" #endif #import "AppDelegate.h" @@ -28,7 +29,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( * For EU Region use the following init api to pass user consent for data collection, for GDPR Complaince. */ NSMutableDictionary *consentdict=[[NSMutableDictionary alloc]init]; - [consentdict setObject:@"true" forKey:IM_GDPR_CONSENT_AVAILABLE]; + [consentdict setObject:@"true" forKey:IMCommonConstants.IM_GDPR_CONSENT_AVAILABLE]; void (^completionBlock)(NSError*) = ^( NSError* _Nullable error) { if (error) { NSLog(@"SDK Initialization Error - %@", error.description); @@ -43,7 +44,11 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( /* * Enable logging for better debuggability. Please turn off the logs before submitting your App to the AppStore */ - [IMSdk setLogLevel:kIMSDKLogLevelDebug]; + [IMSdk setLogLevel:IMSDKLogLevelDebug]; + + // Use the US Privacy Laws APIs to comply with privacy regulations + [IMPrivacyCompliance setDoNotSell:YES]; + [IMPrivacyCompliance setUSPrivacyString:US_PRIVACY_STRING]; return YES; } diff --git a/BannerSample/BannerSample/Base.lproj/Main.storyboard b/BannerSample/BannerSample/Base.lproj/Main.storyboard index 2fd2559..68e2082 100644 --- a/BannerSample/BannerSample/Base.lproj/Main.storyboard +++ b/BannerSample/BannerSample/Base.lproj/Main.storyboard @@ -1,8 +1,9 @@ - - + + + - + @@ -15,16 +16,23 @@ - + - - - + + + + + + + + + + diff --git a/BannerSample/BannerSample/ViewController.h b/BannerSample/BannerSample/ViewController.h index 3a7714a..bbb26e3 100644 --- a/BannerSample/BannerSample/ViewController.h +++ b/BannerSample/BannerSample/ViewController.h @@ -5,8 +5,7 @@ // Copyright © 2016 InMobi. All rights reserved. // -@import InMobiSDK.IMBanner; -@import InMobiSDK.IMBannerDelegate; +@import InMobiSDK; #import diff --git a/BannerSample/BannerSample/ViewController.m b/BannerSample/BannerSample/ViewController.m index bcb5201..511ac2b 100644 --- a/BannerSample/BannerSample/ViewController.m +++ b/BannerSample/BannerSample/ViewController.m @@ -6,7 +6,7 @@ // #ifndef INMOBI_BANNER_PLACEMENT -#define INMOBI_BANNER_PLACEMENT 1447912324502 +#define INMOBI_BANNER_PLACEMENT 1672335615808 #endif #import "ViewController.h" diff --git a/BannerSample/BannerSwiftSample/AppDelegate.swift b/BannerSample/BannerSwiftSample/AppDelegate.swift index 7830ba6..7bd508a 100644 --- a/BannerSample/BannerSwiftSample/AppDelegate.swift +++ b/BannerSample/BannerSwiftSample/AppDelegate.swift @@ -26,7 +26,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { * * For EU Region use the following init api to pass user consent for data collection, for GDPR Complaince. */ - let conscentDict = [IM_GDPR_CONSENT_AVAILABLE : "true"] + let conscentDict = [IMCommonConstants.IM_GDPR_CONSENT_AVAILABLE : "true"] IMSdk.initWithAccountID(INMOBI_ACCOUNT_ID, consentDictionary: conscentDict, andCompletionHandler: { (error) in @@ -34,6 +34,12 @@ class AppDelegate: UIResponder, UIApplicationDelegate { print("\(err.localizedDescription)") } }) + + // Use the US Privacy Laws APIs to comply with privacy regulations + let US_PRIVACY_STRING = "" + IMPrivacyCompliance.setDoNotSell(true) + IMPrivacyCompliance.setUSPrivacyString(US_PRIVACY_STRING) + return true } diff --git a/BannerSample/BannerSwiftSample/Base.lproj/Main.storyboard b/BannerSample/BannerSwiftSample/Base.lproj/Main.storyboard index 442db35..b5a3134 100644 --- a/BannerSample/BannerSwiftSample/Base.lproj/Main.storyboard +++ b/BannerSample/BannerSwiftSample/Base.lproj/Main.storyboard @@ -1,8 +1,9 @@ - - + + + - + @@ -15,16 +16,23 @@ - + - - - + + + + + + + + + + @@ -32,6 +40,7 @@ + diff --git a/BannerSample/BannerSwiftSample/ViewController.swift b/BannerSample/BannerSwiftSample/ViewController.swift index 29b1cf1..d2b3c39 100644 --- a/BannerSample/BannerSwiftSample/ViewController.swift +++ b/BannerSample/BannerSwiftSample/ViewController.swift @@ -4,10 +4,9 @@ // // Copyright © 2016 InMobi. All rights reserved. // -import InMobiSDK.IMBanner -import InMobiSDK.IMBannerDelegate +import InMobiSDK -let INMOBI_BANNER_PLACEMENT: Int64 = 1447912324502 +let INMOBI_BANNER_PLACEMENT: Int64 = 1672335615808 import UIKit @@ -48,71 +47,71 @@ class ViewController: UIViewController, IMBannerDelegate { /** * Notifies the delegate that the banner has finished loading */ - func bannerDidFinishLoading(_ banner: IMBanner!) { - NSLog("InMobi Banner finished loading"); + func bannerDidFinishLoading(_ banner: IMBanner) { + print("InMobi Banner finished loading"); } /** * Notifies the delegate that the banner has failed to load with some error. */ - func banner(_ banner: IMBanner!, didFailToLoadWithError error: IMRequestStatus!) { - NSLog("InMobi Banner failed to load with error : %@", error); + func banner(_ banner: IMBanner, didFailToLoadWithError error: IMRequestStatus) { + print("InMobi Banner failed to load with error : \(error.localizedDescription)"); } /** * Notifies the delegate that the banner was interacted with. */ - func banner(_ banner: IMBanner!, didInteractWithParams params: [AnyHashable : Any]!) { - NSLog("InMobi Banner did interact with params : %@", params); + func banner(_ banner: IMBanner, didInteractWithParams params: [String : Any]?) { + print("InMobi Banner did interact with params : \(params as AnyObject)"); } /** * Notifies the delegate that the user would be taken out of the application context. */ - func userWillLeaveApplication(from banner: IMBanner!) { - NSLog("InMobi Banner will leave application"); + func userWillLeaveApplicationFromBanner(_ banner: IMBanner) { + print("InMobi Banner will leave application"); } /** * Notifies the delegate that the banner would be presenting a full screen content. */ - func bannerWillPresentScreen(_ banner: IMBanner!) { - NSLog("InMobi Banner will present a screen"); + func bannerWillPresentScreen(_ banner: IMBanner) { + print("InMobi Banner will present a screen"); } /** * Notifies the delegate that the banner has finished presenting screen. */ - func bannerDidPresentScreen(_ banner: IMBanner!) { - NSLog("InMobi Banner presented a screen"); + func bannerDidPresentScreen(_ banner: IMBanner) { + print("InMobi Banner presented a screen"); } /** * Notifies the delegate that the banner will start dismissing the presented screen. */ - func bannerWillDismissScreen(_ banner: IMBanner!) { - NSLog("InMobi Banner will dismiss a presented screen"); + func bannerWillDismissScreen(_ banner: IMBanner) { + print("InMobi Banner will dismiss a presented screen"); } /** * Notifies the delegate that the banner has dismissed the presented screen. */ - func bannerDidDismissScreen(_ banner: IMBanner!) { - NSLog("InMobi Banner dismissed a presented screen"); + func bannerDidDismissScreen(_ banner: IMBanner) { + print("InMobi Banner dismissed a presented screen"); } /** * Notifies the delegate that the user has completed the action to be incentivised with. */ - func banner(_ banner: IMBanner!, rewardActionCompletedWithRewards rewards: [AnyHashable : Any]!){ - NSLog("InMobi Banner completed a rewarded action. Rewards : %@", rewards); + func banner(_ banner: IMBanner, rewardActionCompletedWithRewards rewards: [String : Any]) { + print("InMobi Banner completed a rewarded action. Rewards : \(rewards as AnyObject)"); } /** * Notifies the delegate that the banner ad impressed. */ - func bannerAdImpressed(_ banner: IMBanner!) { - NSLog("InMobi Banner Ad Impressed"); + func bannerAdImpressed(_ banner: IMBanner) { + print("InMobi Banner Ad Impressed"); } } diff --git a/BannerSample/Podfile b/BannerSample/Podfile index cc6dd82..606219b 100644 --- a/BannerSample/Podfile +++ b/BannerSample/Podfile @@ -1,5 +1,5 @@ # Uncomment the next line to define a global platform for your project -# platform :ios, '9.0' +# platform :ios, '11.0' target 'BannerSample' do # Comment the next line if you don't want to use dynamic frameworks diff --git a/CHANGELOG.md b/CHANGELOG.md index ae4a8e6..9f50c87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,119 @@ InMobi Monetization SDK for iOS =================================== +Build 10.5.8 [07/Sep/2023] +------------- +- Support of User Ad Report +- Support for movable Audio Icons +- Bug Fixes +   - APIs Added +    New Class Added : IMMovableView +    @objc public var isMovable +    New Class Added : IMAudio +    @objc public weak var delegate: IMAudioDelegate? +    @objc public var placementId: Int64 +    @objc public var keywords: String? +    @objc public var extras: [String: Any]? +    @objc public var transitionAnimation: AnimationTransition +    @objc public var contentUrl: String? +    @objc public var creativeId: String? +    @objc public init(frame: CGRect, placementId: Int64, delegate: IMAudioDelegate?) +    @objc public func getAdMetaInfo() -> [String: Any]? +    @objc public func load() +    @objc public func show() +    @objc public func cancel() +    +Build 10.5.6 [28/June/2023] +------------- +- Support for U.S. data privacy laws +   - APIs Added + New Class Added : IMPrivacyCompliance +    @objc public static func setDoNotSell(_ doNotSell: Bool) +    @objc public static func setUSPrivacyString(_ privacyString: String) +- Support for Custom Product Pages + +Build 10.5.5 [25/May/2023] +------------- +- Adopt Swift Framework for SDK + +- Updated minimum supported version of Xcode to Xcode 14.1 +- Added SKAN 4.0 Support +- Bug Fixes + +- APIs Added + New Class Added : IMBannerAudioHandler + func onView(_ view: UIView, addBannerAudioDelegate delegate: IMBannerAudioDelegate) + + New Protocol Added : IMBannerAudioDelegate + func banner(_ banner: IMBanner, audioStatusChanged status: IMBannerAudioStatus) + + New Enum Added : IMBannerAudioStatus + +- Existing API change + IMBanner: + New variable added + - audioDelegate: IMBannerAudioDelegate + - isAudioAd: Bool + + IMInterstital: + -(void)showFrom:(UIViewController*)viewController + + Added IMCommonConstants File for accessing Constants: + - Usage + IMCommonConstants.IM_GDPR_CONSENT_AVAILABLE + IMCommonConstants.IM_GDPR_CONSENT_IAB + IMCommonConstants.IM_SUBJECT_TO_GDPR + IMCommonConstants.IM_PARTNER_GDPR_CONSENT_AVAILABLE + IMCommonConstants.IM_PARTNER_GDPR_APPLIES + Changes in Enum: + - IMSDKLogLevel + Usage : IMSDKLogLevelNone, IMSDKLogLevelError, IMSDKLogLevelDebug + - IMSDKGender + Usage : IMSDKGenderMale, IMSDKGenderFemale + - IMSDKEducation + Usage : IMSDKEducationHighSchoolOrLess, IMSDKEducationCollageOrGraduate, IMSDKEducationPostGraduateOrAbove + - IMSDKAgeGroup + Usage : IMSDKAgeGroupBelow18, IMSDKAgeGroupBetween18And24, IMSDKAgeGroupBetween25And29, IMSDKAgeGroupBetween30And34, IMSDKAgeGroupBetween35And44, IMSDKAgeGroupBetween45And54, IMSDKAgeGroupBetween55And65, IMSDKAgeGroupAbove65 + - IMInterstitialAnimationType + Usage : IMInterstitialAnimationTypeCoverVertical, IMInterstitialAnimationTypeFlipHorizontal, IMInterstitialAnimationTypeAsNone + +- APIs Removed + IMBanner + -(void)getSignals + IMInterstitial + -(void)getSignals + IMBannerDelegate + -(void)banner:(IMBanner*)banner gotSignals:(NSData*)signals + -(void)banner:(IMBanner *)banner failedToGetSignalsWithError:(IMRequestStatus*)status + IMInterstitialDelegate + -(void)interstitial:(IMInterstitial*)interstitial gotSignals:(NSData*)signals + -(void)interstitial:(IMInterstitial*)interstitial failedToGetSignalsWithError:(IMRequestStatus*)status + +- For more documentation visit : https://support.inmobi.com/monetize/sdk-documentation/download-sdk + +Build 10.1.4 [06/May/2023] +------------- +- Updated minimum supported version of Xcode to Xcode 14.1 +- Added SKAN 4.0 Support +- Bug Fixes + +Build 10.1.3 [24/Feb/2023] +------------- +- Updated minimum supported version of Xcode to Xcode 14.0 +- Removed support for bitcode which is deprecated in Xcode 14 +- Removed support for iOS 9 & iOS 10 +- Bug Fixes + +Build 10.1.2 [18/Nov/2022] +------------- +- Audio Ads Support +- Bug Fixes + +Build 10.1.1 [31/Oct/2022] +------------- +- Improved contextual targeting support +- Bug Fixes + Build 10.1.0 [08/Sep/2022] ------------- - Added Support for Variable Size SKStore diff --git a/InterstitialSample/InterstitialSample.xcodeproj/project.pbxproj b/InterstitialSample/InterstitialSample.xcodeproj/project.pbxproj index 0a553f9..06a0151 100644 --- a/InterstitialSample/InterstitialSample.xcodeproj/project.pbxproj +++ b/InterstitialSample/InterstitialSample.xcodeproj/project.pbxproj @@ -483,6 +483,7 @@ FRAMEWORK_SEARCH_PATHS = "$(inherited)"; HEADER_SEARCH_PATHS = ""; INFOPLIST_FILE = InterstitialSample/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -502,6 +503,7 @@ FRAMEWORK_SEARCH_PATHS = "$(inherited)"; HEADER_SEARCH_PATHS = ""; INFOPLIST_FILE = InterstitialSample/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -518,6 +520,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; INFOPLIST_FILE = InterstitialSwiftSample/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -537,6 +540,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; INFOPLIST_FILE = InterstitialSwiftSample/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/InterstitialSample/InterstitialSample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/InterstitialSample/InterstitialSample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/InterstitialSample/InterstitialSample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/InterstitialSample/InterstitialSample.xcworkspace/contents.xcworkspacedata b/InterstitialSample/InterstitialSample.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..747b6df --- /dev/null +++ b/InterstitialSample/InterstitialSample.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/InterstitialSample/InterstitialSample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/InterstitialSample/InterstitialSample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/InterstitialSample/InterstitialSample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/InterstitialSample/InterstitialSample/AppDelegate.m b/InterstitialSample/InterstitialSample/AppDelegate.m index 8a2ffc5..135054b 100644 --- a/InterstitialSample/InterstitialSample/AppDelegate.m +++ b/InterstitialSample/InterstitialSample/AppDelegate.m @@ -5,7 +5,7 @@ // Copyright © 2016 InMobi. All rights reserved. // -@import InMobiSDK.IMSdk; +@import InMobiSDK; /** * This is a sample Account ID. Please do not use this ID in production. @@ -13,6 +13,7 @@ #ifndef INMOBI_ACCOUNT_ID #define INMOBI_ACCOUNT_ID @"4028cb8b2c3a0b45012c406824e800ba" +#define US_PRIVACY_STRING @"" #endif #import "AppDelegate.h" @@ -32,7 +33,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( * For EU Region use the following init api to pass user consent for data collection, for GDPR Complaince. */ NSMutableDictionary *consentdict=[[NSMutableDictionary alloc]init]; - [consentdict setObject:@"true" forKey:IM_GDPR_CONSENT_AVAILABLE]; + [consentdict setObject:@"true" forKey:IMCommonConstants.IM_GDPR_CONSENT_AVAILABLE]; void (^completionBlock)(NSError*) = ^( NSError* _Nullable error) { if (error) { NSLog(@"SDK Initialization Error - %@", error.description); @@ -46,7 +47,11 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( /* * Enable logging for better debuggability. Please turn off the logs before submitting your App to the AppStore */ - [IMSdk setLogLevel:kIMSDKLogLevelDebug]; + [IMSdk setLogLevel:IMSDKLogLevelDebug]; + + // Use the US Privacy Laws APIs to comply with privacy regulations + [IMPrivacyCompliance setDoNotSell:YES]; + [IMPrivacyCompliance setUSPrivacyString:US_PRIVACY_STRING]; return YES; } diff --git a/InterstitialSample/InterstitialSample/ViewController.m b/InterstitialSample/InterstitialSample/ViewController.m index 5fb104b..4f3c823 100644 --- a/InterstitialSample/InterstitialSample/ViewController.m +++ b/InterstitialSample/InterstitialSample/ViewController.m @@ -5,11 +5,10 @@ // Copyright © 2016 InMobi. All rights reserved. // -@import InMobiSDK.IMInterstitial; -@import InMobiSDK.IMInterstitialDelegate; +@import InMobiSDK; #ifndef INMOBI_INTERSTITIAL_PLACEMENT -#define INMOBI_INTERSTITIAL_PLACEMENT 1446377525790 +#define INMOBI_INTERSTITIAL_PLACEMENT 1672200162238 #endif #import "ViewController.h" @@ -39,76 +38,76 @@ - (void)didReceiveMemoryWarning { * Please use interstitialDidFinishLoading: to receive a callback when assets are also available. */ -(void)interstitialDidReceiveAd:(IMInterstitial *)interstitial { - NSLog(@"InMobi Interstitial received an ad"); + NSLog(@"*****InMobi Interstitial received an ad"); } /** * Notifies the delegate that the interstitial has finished loading and can be shown instantly. */ -(void)interstitialDidFinishLoading:(IMInterstitial*)interstitial { - NSLog(@"InMobi Interstitial finished loading"); + NSLog(@"*****InMobi Interstitial finished loading"); if (interstitial.isReady) { - [interstitial showFromViewController:self]; + [interstitial showFrom:self]; } } /** * Notifies the delegate that the interstitial has failed to load with some error. */ -(void)interstitial:(IMInterstitial*)interstitial didFailToLoadWithError:(IMRequestStatus*)error { - NSLog(@"InMobi Interstitial failed to load with error : %@", error); + NSLog(@"*****InMobi Interstitial failed to load with error : %@", error); } /** * Notifies the delegate that the interstitial would be presented. */ -(void)interstitialWillPresent:(IMInterstitial*)interstitial { - NSLog(@"InMobi Interstitial will be presented"); + NSLog(@"*****InMobi Interstitial will be presented"); } /** * Notifies the delegate that the interstitial has been presented. */ -(void)interstitialDidPresent:(IMInterstitial *)interstitial { - NSLog(@"InMobi Interstitial has been presented"); + NSLog(@"*****InMobi Interstitial has been presented"); } /** * Notifies the delegate that the interstitial has failed to present with some error. */ -(void)interstitial:(IMInterstitial*)interstitial didFailToPresentWithError:(IMRequestStatus*)error { - NSLog(@"InMobi Interstitial has failed to present with error : %@", error); + NSLog(@"*****InMobi Interstitial has failed to present with error : %@", error); } /** * Notifies the delegate that the interstitial will be dismissed. */ -(void)interstitialWillDismiss:(IMInterstitial*)interstitial { - NSLog(@"InMobi Interstitial will be dismissed"); + NSLog(@"*****InMobi Interstitial will be dismissed"); } /** * Notifies the delegate that the interstitial has been dismissed. */ -(void)interstitialDidDismiss:(IMInterstitial*)interstitial { - NSLog(@"InMobi Interstitial has been dismissed"); + NSLog(@"*****InMobi Interstitial has been dismissed"); } /** * Notifies the delegate that the interstitial has been interacted with. */ -(void)interstitial:(IMInterstitial*)interstitial didInteractWithParams:(NSDictionary*)params { - NSLog(@"InMobi Interstitial did interact with params : %@", params); + NSLog(@"*****InMobi Interstitial did interact with params : %@", params); } /** * Notifies the delegate that the user has performed the action to be incentivised with. */ -(void)interstitial:(IMInterstitial*)interstitial rewardActionCompletedWithRewards:(NSDictionary*)rewards { - NSLog(@"InMobi Interstitial completed rewarded action. Rewards : %@", rewards); + NSLog(@"*****InMobi Interstitial completed rewarded action. Rewards : %@", rewards); } /** * Notifies the delegate that the user will leave application context. */ -(void)userWillLeaveApplicationFromInterstitial:(IMInterstitial*)interstitial { - NSLog(@"User will leave the application from InMobi Interstitial"); + NSLog(@"*****User will leave the application from InMobi Interstitial"); } /** * Notifies the delegate that the interstitial ad Impressed. */ -(void)interstitialAdImpressed:(IMInterstitial *)interstitial { - NSLog(@"InMobi Interstitial ad Impressed"); + NSLog(@"*****InMobi Interstitial ad Impressed"); } @end diff --git a/InterstitialSample/InterstitialSwiftSample/AppDelegate.swift b/InterstitialSample/InterstitialSwiftSample/AppDelegate.swift index d6dc60e..08a6f3d 100644 --- a/InterstitialSample/InterstitialSwiftSample/AppDelegate.swift +++ b/InterstitialSample/InterstitialSwiftSample/AppDelegate.swift @@ -5,7 +5,7 @@ // Copyright © 2016 InMobi. All rights reserved. // -import InMobiSDK.IMSdk +import InMobiSDK let INMOBI_ACCOUNT_ID: String = "4028cb8b2c3a0b45012c406824e800ba" import UIKit @@ -23,12 +23,22 @@ class AppDelegate: UIResponder, UIApplicationDelegate { * *For EU Region use the following init api to pass user consent for data collection, for GDPR Complaince. */ - let conscentDict: NSDictionary = [IM_GDPR_CONSENT_AVAILABLE : "true"] - IMSdk.initWithAccountID(INMOBI_ACCOUNT_ID, consentDictionary:conscentDict as? [AnyHashable : Any]) + let conscentDict = [IMCommonConstants.IM_GDPR_CONSENT_AVAILABLE : "true"] + IMSdk.initWithAccountID(INMOBI_ACCOUNT_ID, consentDictionary: conscentDict, andCompletionHandler: { (error) in + if let err = error { + print("\(err.localizedDescription)") + } + }) /* * Enable logging for better debuggability. Please turn off the logs before submitting your App to the AppStore */ IMSdk.setLogLevel(IMSDKLogLevel.debug) + + // Use the US Privacy Laws APIs to comply with privacy regulations + let US_PRIVACY_STRING = "" + IMPrivacyCompliance.setDoNotSell(true) + IMPrivacyCompliance.setUSPrivacyString(US_PRIVACY_STRING) + return true } diff --git a/InterstitialSample/InterstitialSwiftSample/ViewController.swift b/InterstitialSample/InterstitialSwiftSample/ViewController.swift index e376f2c..759d93d 100644 --- a/InterstitialSample/InterstitialSwiftSample/ViewController.swift +++ b/InterstitialSample/InterstitialSwiftSample/ViewController.swift @@ -5,10 +5,9 @@ // Copyright © 2016 InMobi. All rights reserved. // -import InMobiSDK.IMInterstitial -import InMobiSDK.IMInterstitialDelegate +import InMobiSDK -let INMOBI_INTERSTITIAL_PLACEMENT: Int64 = 1446377525790 +let INMOBI_INTERSTITIAL_PLACEMENT: Int64 = 1672200162238 import UIKit @@ -28,15 +27,15 @@ class ViewController: UIViewController, IMInterstitialDelegate { // Dispose of any resources that can be recreated. } - func interstitialDidReceiveAd(_ interstitial: IMInterstitial!) { - NSLog("InMobi Interstitial received and ad"); + func interstitialDidReceiveAd(_ interstitial: IMInterstitial) { + print("InMobi Interstitial received and ad"); } /** * Notifies the delegate that the interstitial has finished loading and can be shown instantly. */ - func interstitialDidFinishLoading(_ interstitial: IMInterstitial!) { - NSLog("InMobi Interstitial finished loading an ad"); + func interstitialDidFinishLoading(_ interstitial: IMInterstitial) { + print("InMobi Interstitial finished loading an ad"); if interstitial.isReady() { interstitial.show(from: self) @@ -46,71 +45,71 @@ class ViewController: UIViewController, IMInterstitialDelegate { /** * Notifies the delegate that the interstitial has failed to load with some error. */ - func interstitial(_ interstitial: IMInterstitial!, didFailToLoadWithError error: IMRequestStatus!) { - NSLog("InMobi Interstitial failed to load an ad with error : %@", error); + func interstitial(_ interstitial: IMInterstitial, didFailToLoadWithError error: IMRequestStatus) { + print("InMobi Interstitial failed to load an ad with error \(error.localizedDescription)"); } /** * Notifies the delegate that the interstitial would be presented. */ - func interstitialWillPresent(_ interstitial: IMInterstitial!) { - NSLog("InMobi Interstitial will be presented"); + func interstitialWillPresent(_ interstitial: IMInterstitial) { + print("InMobi Interstitial will be presented"); } /** * Notifies the delegate that the interstitial has been presented. */ - func interstitialDidPresent(_ interstitial: IMInterstitial!) { - NSLog("InMobi Interstitial has been presented"); + func interstitialDidPresent(_ interstitial: IMInterstitial) { + print("InMobi Interstitial has been presented"); } /** * Notifies the delegate that the interstitial has failed to present with some error. */ - func interstitial(_ interstitial: IMInterstitial!, didFailToPresentWithError error: IMRequestStatus!) { - NSLog("InMobi Interstitial failed to present with error : %@", error); + func interstitial(_ interstitial: IMInterstitial, didFailToPresentWithError error: IMRequestStatus) { + print("InMobi Interstitial failed to present with error : \(error.localizedDescription)"); } /** * Notifies the delegate that the interstitial will be dismissed. */ - func interstitialWillDismiss(_ interstitial: IMInterstitial!) { - NSLog("InMobi Interstitial will be dismissed"); + func interstitialWillDismiss(_ interstitial: IMInterstitial) { + print("InMobi Interstitial will be dismissed"); } /** * Notifies the delegate that the interstitial has been dismissed. */ - func interstitialDidDismiss(_ interstitial: IMInterstitial!) { - NSLog("InMobi Interstitial has been dismissed"); + func interstitialDidDismiss(_ interstitial: IMInterstitial) { + print("InMobi Interstitial has been dismissed"); } /** * Notifies the delegate that the interstitial has been interacted with. */ - func interstitial(_ interstitial: IMInterstitial!, didInteractWithParams params: [AnyHashable : Any]!) { - NSLog("InMobi Interstitial did interact with params : %@", params); + func interstitial(_ interstitial: IMInterstitial, didInteractWithParams params: [String : Any]?) { + print("InMobi Interstitial did interact with params : \(params as AnyObject)"); } /** * Notifies the delegate that the user has performed the action to be incentivised with. */ - func interstitial(_ interstitial: IMInterstitial!, rewardActionCompletedWithRewards rewards: [AnyHashable : Any]!) { - NSLog("InMobi Interstitial completed rewarded action : %@", rewards); + func interstitial(_ interstitial: IMInterstitial, rewardActionCompletedWithRewards rewards: [String : Any]) { + print("InMobi Interstitial completed rewarded action : \(rewards as AnyObject)"); } /** * Notifies the delegate that the user will leave application context. */ - func userWillLeaveApplication(from interstitial: IMInterstitial!) { - NSLog("User will leave application from InMobi Interstitial"); + func userWillLeaveApplicationFromInterstitial(_ interstitial: IMInterstitial) { + print("User will leave application from InMobi Interstitial"); } /** * Notifies the delegate that the interstitial ad Impressed. */ - func interstitialAdImpressed(_ interstitial: IMInterstitial!) { - NSLog("InMobi Interstitial ad Impressed"); + func interstitialAdImpressed(_ interstitial: IMInterstitial) { + print("InMobi Interstitial ad Impressed"); } diff --git a/InterstitialSample/Podfile b/InterstitialSample/Podfile index 12e030e..b7b73df 100644 --- a/InterstitialSample/Podfile +++ b/InterstitialSample/Podfile @@ -1,5 +1,5 @@ # Uncomment the next line to define a global platform for your project -# platform :ios, '9.0' +# platform :ios, 11.0' target 'InterstitialSample' do # Comment the next line if you don't want to use dynamic frameworks diff --git a/NativeSample/NativeSample.xcodeproj/project.pbxproj b/NativeSample/NativeSample.xcodeproj/project.pbxproj index 391c237..804baf7 100644 --- a/NativeSample/NativeSample.xcodeproj/project.pbxproj +++ b/NativeSample/NativeSample.xcodeproj/project.pbxproj @@ -482,6 +482,7 @@ DEVELOPMENT_TEAM = WZMMZ9FP6W; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "$(SRCROOT)/NativeSample/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -501,6 +502,7 @@ DEVELOPMENT_TEAM = WZMMZ9FP6W; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "$(SRCROOT)/NativeSample/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -521,6 +523,7 @@ DEVELOPMENT_TEAM = WZMMZ9FP6W; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "$(SRCROOT)/NativeSampleSwift/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -544,6 +547,7 @@ DEVELOPMENT_TEAM = WZMMZ9FP6W; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "$(SRCROOT)/NativeSampleSwift/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/NativeSample/NativeSample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/NativeSample/NativeSample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/NativeSample/NativeSample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/NativeSample/NativeSample.xcworkspace/contents.xcworkspacedata b/NativeSample/NativeSample.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..4ad82f4 --- /dev/null +++ b/NativeSample/NativeSample.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/NativeSample/NativeSample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/NativeSample/NativeSample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/NativeSample/NativeSample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/NativeSample/NativeSample/AppDelegate.m b/NativeSample/NativeSample/AppDelegate.m index bbc1c51..45ae2b9 100644 --- a/NativeSample/NativeSample/AppDelegate.m +++ b/NativeSample/NativeSample/AppDelegate.m @@ -7,10 +7,10 @@ // #import "AppDelegate.h" -@import InMobiSDK.IMSdk; - +@import InMobiSDK; #define INMOBI_ACCOUNT_ID @"4028cb8b2c3a0b45012c406824e800ba" +#define US_PRIVACY_STRING @"" @interface AppDelegate () @@ -27,7 +27,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( * For EU Region use the following init api to pass user consent for data collection, for GDPR Complaince. */ NSMutableDictionary *consentdict=[[NSMutableDictionary alloc]init]; - [consentdict setObject:@"true" forKey:IM_GDPR_CONSENT_AVAILABLE]; + [consentdict setObject:@"true" forKey:IMCommonConstants.IM_GDPR_CONSENT_AVAILABLE]; void (^completionBlock)(NSError*) = ^( NSError* _Nullable error) { if (error) { NSLog(@"SDK Initialization Error - %@", error.description); @@ -41,7 +41,12 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( /* * Enable logging for better debuggability. Please turn off the logs before submitting your App to the AppStore */ - [IMSdk setLogLevel:kIMSDKLogLevelDebug]; + [IMSdk setLogLevel:IMSDKLogLevelDebug]; + + // Use the US Privacy Laws APIs to comply with privacy regulations + [IMPrivacyCompliance setDoNotSell:YES]; + [IMPrivacyCompliance setUSPrivacyString:US_PRIVACY_STRING]; + return YES; } diff --git a/NativeSample/NativeSample/ViewController.m b/NativeSample/NativeSample/ViewController.m index 01b3728..ee68aa4 100644 --- a/NativeSample/NativeSample/ViewController.m +++ b/NativeSample/NativeSample/ViewController.m @@ -7,11 +7,11 @@ // #import "ViewController.h" -@import InMobiSDK.IMNative; -@import InMobiSDK.IMNativeDelegate; +@import InMobiSDK; + #ifndef INMOBI_ACCOUNT_ID -#define INMOBI_NATIVE_PLACEMENT 1501663239052 +#define INMOBI_NATIVE_PLACEMENT 1681413960173 #endif @interface ViewController () diff --git a/NativeSample/NativeSampleSwift/AppDelegate.swift b/NativeSample/NativeSampleSwift/AppDelegate.swift index bada078..3d80c94 100644 --- a/NativeSample/NativeSampleSwift/AppDelegate.swift +++ b/NativeSample/NativeSampleSwift/AppDelegate.swift @@ -7,7 +7,7 @@ // import UIKit -import InMobiSDK.IMSdk +import InMobiSDK let INMOBI_ACCOUNT_ID: String = "4028cb8b2c3a0b45012c406824e800ba" @UIApplicationMain @@ -23,12 +23,22 @@ class AppDelegate: UIResponder, UIApplicationDelegate { * * For EU Region use the following init api to pass user consent for data collection, for GDPR Complaince. */ - let conscentDict: NSDictionary = [IM_GDPR_CONSENT_AVAILABLE : "true"] - IMSdk.initWithAccountID(INMOBI_ACCOUNT_ID, consentDictionary:conscentDict as? [AnyHashable : Any]) + let conscentDict = [IMCommonConstants.IM_GDPR_CONSENT_AVAILABLE : "true"] + IMSdk.initWithAccountID(INMOBI_ACCOUNT_ID, consentDictionary: conscentDict, andCompletionHandler: { (error) in + if let err = error { + print("\(err.localizedDescription)") + } + }) /* * Enable logging for better debuggability. Please turn off the logs before submitting your App to the AppStore */ IMSdk.setLogLevel(IMSDKLogLevel.debug); + + // Use the US Privacy Laws APIs to comply with privacy regulations + let US_PRIVACY_STRING = "" + IMPrivacyCompliance.setDoNotSell(true) + IMPrivacyCompliance.setUSPrivacyString(US_PRIVACY_STRING) + return true } diff --git a/NativeSample/NativeSampleSwift/ViewController.swift b/NativeSample/NativeSampleSwift/ViewController.swift index fda816c..23d4eb9 100644 --- a/NativeSample/NativeSampleSwift/ViewController.swift +++ b/NativeSample/NativeSampleSwift/ViewController.swift @@ -7,10 +7,9 @@ // import UIKit -import InMobiSDK.IMNative -import InMobiSDK.IMNativeDelegate +import InMobiSDK -let INMOBI_NATIVE_PLACEMENT: Int64 = 1501663239052 +let INMOBI_NATIVE_PLACEMENT: Int64 = 1681413960173 class ViewController: UIViewController,IMNativeDelegate { @@ -33,63 +32,65 @@ class ViewController: UIViewController,IMNativeDelegate { // Dispose of any resources that can be recreated. } - func nativeDidFinishLoading(_ native: IMNative!) { - NSLog("InMobi Native Did finished loading"); - self.contentView.addSubview(native.primaryView(ofWidth: self.contentView.frame.size.width)); + func nativeDidFinishLoading(_ native: IMNative) { + print("InMobi Native Did finished loading"); + if let aView = native.primaryView(ofWidth: self.contentView.frame.size.width) { + self.contentView.addSubview(aView) + } self.AdTitle.text = native.adTitle; self.AdIcon.image = native.adIcon; // Additonal information needs to be supplied here } - func nativeWillPresentScreen(_ native: IMNative!) { - NSLog("InMobi Native Will Present Screen"); + func nativeWillPresentScreen(_ native: IMNative) { + print("InMobi Native Will Present Screen"); } - func nativeWillDismissScreen(_ native: IMNative!) { - NSLog("InMobi Native Will Dismiss Screen"); + func nativeWillDismissScreen(_ native: IMNative) { + print("InMobi Native Will Dismiss Screen"); } - func nativeDidDismissScreen(_ native: IMNative!) { - NSLog("InMobi Native Did Dismiss Screen"); + func nativeDidDismissScreen(_ native: IMNative) { + print("InMobi Native Did Dismiss Screen"); } - func nativeAdImpressed(_ native: IMNative!) { - NSLog("InMobi Native Has Tracked an impression"); + func nativeAdImpressed(_ native: IMNative) { + print("InMobi Native Has Tracked an impression"); } - func nativeDidPresentScreen(_ native: IMNative!) { - NSLog("InMobi Native Did Present Screen"); + func nativeDidPresentScreen(_ native: IMNative) { + print("InMobi Native Did Present Screen"); } - func userWillLeaveApplication(from native: IMNative!) { - NSLog("User Will Leave Application"); + func userWillLeaveApplicationFromNative(_ native: IMNative) { + print("User Will Leave Application"); } - func nativeDidFinishPlayingMedia(_ native: IMNative!) { - NSLog("InMobi Native Did Finish Playing Media"); + func nativeDidFinishPlayingMedia(_ native: IMNative) { + print("InMobi Native Did Finish Playing Media"); } - func native(_ native: IMNative!, didFailToLoadWithError error: IMRequestStatus!) { - NSLog("InMobi Native failed to load with error : %@", error); + func native(_ native: IMNative, didFailToLoadWithError error: IMRequestStatus) { + print("InMobi Native failed to load with error : \(error.localizedDescription)"); } public func native(_ native: IMNative!, rewardActionCompletedWithRewards rewards: [AnyHashable : Any]!){ - NSLog("Reward Action Completed With Rewards : %@", rewards); + print("Reward Action Completed With Rewards : \(rewards as AnyObject)"); } - public func native(_ native: IMNative!, didInteractWithParams params: [AnyHashable : Any]!){ - NSLog("InMobi Did Interact With Params :%@",params); - + func native(_ native: IMNative, didInteractWithParams params: [String : Any]?) { + print("InMobi Did Interact With Params : \(params as AnyObject)"); } - public func userDidSkipPlayingMedia(from native: IMNative!) { - NSLog("User Did Skip Playing Media "); + + public func userDidSkipPlayingMediaFromNative(_ native: IMNative) { + print("User Did Skip Playing Media "); } - func native(_ native: IMNative!, adAudioStateChanged audioStateMuted: Bool) { + func native(_ native: IMNative, adAudioStateChanged audioStateMuted: Bool) { if (audioStateMuted) { - NSLog("Inline video-ad audio state changed to mute"); + print("Inline video-ad audio state changed to mute"); } else { - NSLog("Inline video-ad audio state changed to unmute"); + print("Inline video-ad audio state changed to unmute"); } //This is called when inline video audio state changes. } diff --git a/NativeSample/Podfile b/NativeSample/Podfile index de834f0..f60845e 100644 --- a/NativeSample/Podfile +++ b/NativeSample/Podfile @@ -1,5 +1,5 @@ # Uncomment the next line to define a global platform for your project -# platform :ios, '9.0' +# platform :ios, '11.0' target 'NativeSample' do # Comment the next line if you don't want to use dynamic frameworks diff --git a/README.md b/README.md index 7984d76..32bcf74 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,9 @@ Publicly available sample apps of InMobi providing simple integration steps. InM The following environment is required to run the Sample apps - Xcode 13.0 and above + Xcode 14.1 and above InMobi SDK 10.x.x - iOS 9.0 and above + iOS 11.0 and above Important: Make sure you have the latest version of pod installed after that you need to simply do @@ -24,7 +24,7 @@ Three sample apps are provided as per Ad Formats The latest InMobi iOS SDK is available in the InMobi folder along with its change logs. -To run the sample apps, open any of the Ad Format's .xcodeproj file with Xcode 9.0. For example, to run a Banner's sample, open the BannerSample.xcodeproj in the BannerSample folder and run via Xcode. +To run the sample apps, open any of the Ad Format's .xcodeproj file with Xcode 14.1. For example, to run a Banner's sample, open the BannerSample.xcodeproj in the BannerSample folder and run via Xcode. ## License @@ -32,6 +32,119 @@ These sample apps are provided under MIT license. For more information, please s ## Change logs +Build 10.5.8 [07/Sep/2023] +------------- +- Support of User Ad Report +- Support for movable Audio Icons +- Bug Fixes +   - APIs Added +    New Class Added : IMMovableView +    @objc public var isMovable +    New Class Added : IMAudio +    @objc public weak var delegate: IMAudioDelegate? +    @objc public var placementId: Int64 +    @objc public var keywords: String? +    @objc public var extras: [String: Any]? +    @objc public var transitionAnimation: AnimationTransition +    @objc public var contentUrl: String? +    @objc public var creativeId: String? +    @objc public init(frame: CGRect, placementId: Int64, delegate: IMAudioDelegate?) +    @objc public func getAdMetaInfo() -> [String: Any]? +    @objc public func load() +    @objc public func show() +    @objc public func cancel() + +Build 10.5.6 [28/June/2023] +------------- +- Support for U.S. data privacy laws +   - APIs Added + New Class Added : IMPrivacyCompliance +    @objc public static func setDoNotSell(_ doNotSell: Bool) +    @objc public static func setUSPrivacyString(_ privacyString: String) +- Support for Custom Product Pages + +Build 10.5.5 [25/May/2023] +------------- +- Adopt Swift Framework for SDK + +- Updated minimum supported version of Xcode to Xcode 14.1 +- Added SKAN 4.0 Support +- Bug Fixes + +- APIs Added + New Class Added : IMBannerAudioHandler + func onView(_ view: UIView, addBannerAudioDelegate delegate: IMBannerAudioDelegate) + + New Protocol Added : IMBannerAudioDelegate + func banner(_ banner: IMBanner, audioStatusChanged status: IMBannerAudioStatus) + + New Enum Added : IMBannerAudioStatus + +- Existing API change + IMBanner: + New variable added + - audioDelegate: IMBannerAudioDelegate + - isAudioAd: Bool + + IMInterstital: + -(void)showFrom:(UIViewController*)viewController + + Added IMCommonConstants File for accessing Constants: + - Usage + IMCommonConstants.IM_GDPR_CONSENT_AVAILABLE + IMCommonConstants.IM_GDPR_CONSENT_IAB + IMCommonConstants.IM_SUBJECT_TO_GDPR + IMCommonConstants.IM_PARTNER_GDPR_CONSENT_AVAILABLE + IMCommonConstants.IM_PARTNER_GDPR_APPLIES + Changes in Enum: + - IMSDKLogLevel + Usage : IMSDKLogLevelNone, IMSDKLogLevelError, IMSDKLogLevelDebug + - IMSDKGender + Usage : IMSDKGenderMale, IMSDKGenderFemale + - IMSDKEducation + Usage : IMSDKEducationHighSchoolOrLess, IMSDKEducationCollageOrGraduate, IMSDKEducationPostGraduateOrAbove + - IMSDKAgeGroup + Usage : IMSDKAgeGroupBelow18, IMSDKAgeGroupBetween18And24, IMSDKAgeGroupBetween25And29, IMSDKAgeGroupBetween30And34, IMSDKAgeGroupBetween35And44, IMSDKAgeGroupBetween45And54, IMSDKAgeGroupBetween55And65, IMSDKAgeGroupAbove65 + - IMInterstitialAnimationType + Usage : IMInterstitialAnimationTypeCoverVertical, IMInterstitialAnimationTypeFlipHorizontal, IMInterstitialAnimationTypeAsNone + +- APIs Removed + IMBanner + -(void)getSignals + IMInterstitial + -(void)getSignals + IMBannerDelegate + -(void)banner:(IMBanner*)banner gotSignals:(NSData*)signals + -(void)banner:(IMBanner *)banner failedToGetSignalsWithError:(IMRequestStatus*)status + IMInterstitialDelegate + -(void)interstitial:(IMInterstitial*)interstitial gotSignals:(NSData*)signals + -(void)interstitial:(IMInterstitial*)interstitial failedToGetSignalsWithError:(IMRequestStatus*)status + +- For more documentation visit : https://support.inmobi.com/monetize/sdk-documentation/download-sdk + +Build 10.1.4 [06/May/2023] +------------- +- Updated minimum supported version of Xcode to Xcode 14.1 +- Added SKAN 4.0 Support +- Bug Fixes + +Build 10.1.3 [24/Feb/2023] +------------- +- Updated minimum supported version of Xcode to Xcode 14.0 +- Removed support for bitcode which is deprecated in Xcode 14 +- Removed support for iOS 9 & iOS 10 +- Bug Fixes + +Build 10.1.2 [18/Nov/2022] +------------- +- Audio Ads Support +- Bug Fixes + +Build 10.1.1 [31/Oct/2022] +------------- +- Improved contextual targeting support +- Bug Fixes + Build 10.1.0 [08/Sep/2022] ------------- - Added Support for Variable Size SKStore