diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bf33d21..abe7991 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,13 +19,11 @@ jobs: steps: - uses: actions/checkout@v2 - - - name: Select Xcode 11.7 - run: sudo xcode-select -switch /Applications/Xcode_11.7.app - - - name: Xcode version - run: /usr/bin/xcodebuild -version + - uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: 14.1 + - name: Install swiftformat run: brew install swiftformat diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6e1aa51..cec05b9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,7 +20,11 @@ jobs: steps: - uses: actions/checkout@v2 with: - ref: main + ref: ${{ github.event.inputs.branch }} + + - uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: 14.1 - name: Install jq run: brew install jq @@ -49,7 +53,16 @@ jobs: echo podspec file verification starts: make test-podspec - - uses: release-drafter/release-drafter@v5 + + - name: Build Artifact + if: ${{ github.event.inputs.action_tag == 'yes' }} + run: | + make archive + make zip + + - name: Create GH Release + id: create_release + uses: release-drafter/release-drafter@v5 if: ${{ github.event.inputs.action_tag == 'yes' }} with: name: v${{ github.event.inputs.tag }} @@ -59,6 +72,17 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Upload Artifact + uses: actions/upload-release-asset@v1 + if: ${{ github.event.inputs.action_tag == 'yes' }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./build/AEPUserProfile.xcframework.zip + asset_name: AEPUserProfile-${{ github.event.inputs.tag }}.xcframework.zip + asset_content_type: application/zip + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Publish Pods run: | set -eo pipefail diff --git a/AEPUserProfile.podspec b/AEPUserProfile.podspec index 90b03ae..c55daf9 100644 --- a/AEPUserProfile.podspec +++ b/AEPUserProfile.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "AEPUserProfile" - s.version = "3.0.1" + s.version = "4.0.0" s.summary = "Experience Platform UserProfile extension for Adobe Experience Platform Mobile SDK. Written and maintained by Adobe." s.description = <<-DESC The Experience Platform UserProfile extension provides APIs that allow use of the custom client-side User Profile in the Adobe Experience Platform SDK. @@ -10,7 +10,7 @@ Pod::Spec.new do |s| s.author = "Adobe Experience Platform SDK Team" s.source = { :git => "https://github.com/adobe/aepsdk-userprofile-ios", :tag => s.version.to_s } - s.ios.deployment_target = '10.0' + s.ios.deployment_target = '11.0' s.swift_version = '5.1' s.pod_target_xcconfig = { 'BUILD_LIBRARY_FOR_DISTRIBUTION' => 'YES' } s.dependency 'AEPCore' diff --git a/AEPUserProfile.xcodeproj/project.pbxproj b/AEPUserProfile.xcodeproj/project.pbxproj index 98584b8..b58418e 100644 --- a/AEPUserProfile.xcodeproj/project.pbxproj +++ b/AEPUserProfile.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 52; + objectVersion = 54; objects = { /* Begin PBXAggregateTarget section */ @@ -484,6 +484,7 @@ }; BBE24F0F2539F58D00C23435 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -706,6 +707,7 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AEPUserProfile/Sources/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -736,6 +738,7 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AEPUserProfile/Sources/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -761,6 +764,7 @@ CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = FKGEE875K4; INFOPLIST_FILE = AEPUserProfile/Tests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -785,6 +789,7 @@ CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = FKGEE875K4; INFOPLIST_FILE = AEPUserProfile/Tests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/AEPUserProfile/Sources/UserProfileConstants.swift b/AEPUserProfile/Sources/UserProfileConstants.swift index 51e1dd3..ba67f39 100644 --- a/AEPUserProfile/Sources/UserProfileConstants.swift +++ b/AEPUserProfile/Sources/UserProfileConstants.swift @@ -15,7 +15,7 @@ import Foundation enum UserProfileConstants { static let EXTENSION_NAME = "com.adobe.module.userProfile" static let FRIENDLY_NAME = "UserProfile" - static let EXTENSION_VERSION = "3.0.1" + static let EXTENSION_VERSION = "4.0.0" static let LOG_PREFIX = FRIENDLY_NAME static let DATASTORE_NAME = EXTENSION_NAME static let DATASTORE_KEY_ATTRIBUTES = "attributes" diff --git a/AEPUserProfile/Tests/FunctionalTests/UserProfileFunctionalTests.swift b/AEPUserProfile/Tests/FunctionalTests/UserProfileFunctionalTests.swift index 7ff5ee8..3f86f8e 100644 --- a/AEPUserProfile/Tests/FunctionalTests/UserProfileFunctionalTests.swift +++ b/AEPUserProfile/Tests/FunctionalTests/UserProfileFunctionalTests.swift @@ -71,7 +71,7 @@ class UserProfileFunctionalTests: XCTestCase { // Given // EventHub.shared = EventHub() let expectation = self.expectation(description: "register UserProfile extension") - UserDefaults.standard.set(["k1": "v1", "k4": 11], forKey: "Adobe.com.adobe.module.userProfile.attributes") + UserDefaults.standard.set(["k1": "v1", "k4": 11] as [String : Any], forKey: "Adobe.com.adobe.module.userProfile.attributes") MobileCore.registerExtensions([UserProfile.self]) { expectation.fulfill() @@ -197,7 +197,7 @@ class UserProfileFunctionalTests: XCTestCase { waitForExpectations(timeout: 2) theExpectation = self.expectation(description: "monitor the shared state from UserProfile") - let event = Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["type": "csp", "detail": ["key": "key3", "value": "value3", "operation": "write"]]]) + let event = Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["type": "csp", "detail": ["key": "key3", "value": "value3", "operation": "write"]] as [String : Any]]) MonitorExtension.profileSharedStateReceiver = { _ in guard let data = EventHub.shared.getSharedState(extensionName: "com.adobe.module.userProfile", event: event)?.value?["userprofiledata"] as? [String: String] else { return @@ -228,7 +228,7 @@ class UserProfileFunctionalTests: XCTestCase { waitForExpectations(timeout: 2) theExpectation = self.expectation(description: "monitor the shared state from UserProfile") - let event = Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["type": "csp", "detail": ["key": "key1", "operation": "delete"]]]) + let event = Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["type": "csp", "detail": ["key": "key1", "operation": "delete"]] as [String : Any]]) MonitorExtension.profileSharedStateReceiver = { _ in guard let data = EventHub.shared.getSharedState(extensionName: "com.adobe.module.userProfile", event: event)?.value?["userprofiledata"] as? [String: String] else { return @@ -262,9 +262,9 @@ class UserProfileFunctionalTests: XCTestCase { MobileCore.dispatch(event: Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["detail": ["key": "key3", "value": "value3", "operation": "write"]]])) MobileCore.dispatch(event: Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["detail": ["key": "key1", "operation": "delete"]]])) MobileCore.dispatch(event: Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["detail": ["key": "key2", "operation": "delete"]]])) - MobileCore.dispatch(event: Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["type": "csp", "detail": ["key": "key1", "operation": "add"]]])) - MobileCore.dispatch(event: Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["type": "csp", "detail": ["key": "key3", "operation": "write"]]])) - MobileCore.dispatch(event: Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["type": "csp", "detail": ["value": "value1", "operation": "delete"]]])) + MobileCore.dispatch(event: Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["type": "csp", "detail": ["key": "key1", "operation": "add"]] as [String : Any]])) + MobileCore.dispatch(event: Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["type": "csp", "detail": ["key": "key3", "operation": "write"]] as [String : Any]])) + MobileCore.dispatch(event: Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["type": "csp", "detail": ["value": "value1", "operation": "delete"]] as [String : Any]])) usleep(9000) XCTAssertEqual(1, MonitorExtension.sharedStateChanged) diff --git a/AEPUserProfile/Tests/UserProfileTests.swift b/AEPUserProfile/Tests/UserProfileTests.swift index c444277..f4adec2 100644 --- a/AEPUserProfile/Tests/UserProfileTests.swift +++ b/AEPUserProfile/Tests/UserProfileTests.swift @@ -66,7 +66,7 @@ class UserProfileTests: XCTestCase { XCTFail() return } - let event = Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["type": "csp", "detail": ["key": "key3", "value": "value3", "operation": "write"]]]) + let event = Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["type": "csp", "detail": ["key": "key3", "value": "value3", "operation": "write"]] as [String : Any]]) handleRulesEngineResponse(event) guard let storedAttributes = UserDefaults.standard.object(forKey: "Adobe.com.adobe.module.userProfile.attributes") as? [String: String] else { XCTFail() @@ -93,7 +93,7 @@ class UserProfileTests: XCTestCase { XCTFail() return } - let event = Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["type": "csp", "detail": ["key": "key1", "value": "", "operation": "write"]]]) + let event = Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["type": "csp", "detail": ["key": "key1", "value": "", "operation": "write"]] as [String : Any]]) handleRulesEngineResponse(event) guard let storedAttributes = UserDefaults.standard.object(forKey: "Adobe.com.adobe.module.userProfile.attributes") as? [String: String] else { XCTFail() @@ -118,7 +118,7 @@ class UserProfileTests: XCTestCase { XCTFail() return } - let event = Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["type": "csp", "detail": ["key": "key1", "operation": "delete"]]]) + let event = Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["type": "csp", "detail": ["key": "key1", "operation": "delete"]] as [String : Any]]) handleRulesEngineResponse(event) guard let storedAttributes = UserDefaults.standard.object(forKey: "Adobe.com.adobe.module.userProfile.attributes") as? [String: String] else { XCTFail() @@ -155,11 +155,11 @@ class UserProfileTests: XCTestCase { XCTAssertEqual(1, storedAttributes.count) XCTAssertEqual(0, runtime.createdSharedStates.count) - let consequenceEventWriteWithoutKey = Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["type": "csp", "detail": ["value": "value3", "operation": "write"]]]) + let consequenceEventWriteWithoutKey = Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["type": "csp", "detail": ["value": "value3", "operation": "write"]] as [String : Any]]) handleRulesEngineResponse(consequenceEventWriteWithoutKey) XCTAssertEqual(0, runtime.createdSharedStates.count) - let consequenceEventDeleteWithoutKey = Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["type": "csp", "detail": ["operation": "delete"]]]) + let consequenceEventDeleteWithoutKey = Event(name: "consequence event", type: "com.adobe.eventType.rulesEngine", source: "com.adobe.eventSource.responseContent", data: ["triggeredconsequence": ["type": "csp", "detail": ["operation": "delete"]] as [String : Any]]) handleRulesEngineResponse(consequenceEventDeleteWithoutKey) XCTAssertEqual(0, runtime.createdSharedStates.count) } @@ -223,7 +223,7 @@ class UserProfileTests: XCTestCase { } func testUpdateAttributesWithMultipleValueTypes() throws { - UserDefaults.standard.set(["k_string": "value1", "k_int": 2, "k_bool": true, "k_double": 2.1], forKey: "Adobe.com.adobe.module.userProfile.attributes") + UserDefaults.standard.set(["k_string": "value1", "k_int": 2, "k_bool": true, "k_double": 2.1] as [String : Any], forKey: "Adobe.com.adobe.module.userProfile.attributes") let runtime = TestableExtensionRuntime() let profile = UserProfile(runtime: runtime) profile.onRegistered() @@ -271,7 +271,7 @@ class UserProfileTests: XCTestCase { XCTFail() return } - let event = Event(name: "UserProfileUpdate", type: "com.adobe.eventType.userProfile", source: "com.adobe.eventSource.requestProfile", data: ["userprofileupdatekey": ["key1": "valuex", "key2": UserProfile(runtime: TestableExtensionRuntime())]]) + let event = Event(name: "UserProfileUpdate", type: "com.adobe.eventType.userProfile", source: "com.adobe.eventSource.requestProfile", data: ["userprofileupdatekey": ["key1": "valuex", "key2": UserProfile(runtime: TestableExtensionRuntime())] as [String : Any]]) XCTAssert(event.isUpdateAttributesEvent) handleRequestProfile(event) @@ -320,7 +320,7 @@ class UserProfileTests: XCTestCase { XCTFail() return } - let event = Event(name: "getUserAttributes", type: "com.adobe.eventType.userProfile", source: "com.adobe.eventSource.requestProfile", data: ["userprofilegetattributes": []]) + let event = Event(name: "getUserAttributes", type: "com.adobe.eventType.userProfile", source: "com.adobe.eventSource.requestProfile", data: ["userprofilegetattributes": [] as NSArray]) XCTAssert(event.isGetAttributesEvent) handleRequestProfile(event) XCTAssertEqual(0, runtime.createdSharedStates.count) @@ -449,6 +449,14 @@ class UserProfileTests: XCTestCase { } public class TestableExtensionRuntime: ExtensionRuntime { + public func getSharedState(extensionName: String, event: AEPCore.Event?, barrier: Bool, resolution: AEPCore.SharedStateResolution) -> AEPCore.SharedStateResult? { + nil + } + + public func getXDMSharedState(extensionName: String, event: AEPCore.Event?, barrier: Bool, resolution: AEPCore.SharedStateResolution) -> AEPCore.SharedStateResult? { + nil + } + public func getHistoricalEvents(_ requests: [EventHistoryRequest], enforceOrder: Bool, handler: @escaping ([EventHistoryResult]) -> Void) {} public func getXDMSharedState(extensionName _: String, event _: Event?, barrier _: Bool) -> SharedStateResult? { diff --git a/Makefile b/Makefile index 3285881..6b225ab 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ IOS_ARCHIVE_PATH = ./build/ios.xcarchive/Products/Library/Frameworks/ IOS_ARCHIVE_DSYM_PATH = $(CURR_DIR)/build/ios.xcarchive/dSYMs/ lint-autocorrect: - ./Pods/SwiftLint/swiftlint autocorrect + ./Pods/SwiftLint/swiftlint --fix lint: ./Pods/SwiftLint/swiftlint lint @@ -44,12 +44,17 @@ test: clean @echo "######################################################################" @echo "### Testing iOS" @echo "######################################################################" - xcodebuild test -workspace $(PROJECT_NAME).xcworkspace -scheme $(PROJECT_NAME)Tests -destination 'platform=iOS Simulator,name=iPhone 11 Pro' -derivedDataPath build/out -enableCodeCoverage YES + xcodebuild test -workspace $(PROJECT_NAME).xcworkspace -scheme $(PROJECT_NAME)Tests -destination 'platform=iOS Simulator,name=iPhone 14' -derivedDataPath build/out -enableCodeCoverage YES -archive: pod-update +archive: clean pod-update xcodebuild archive -workspace $(PROJECT_NAME).xcworkspace -scheme $(SCHEME_NAME_XCFRAMEWORK) -archivePath "./build/ios.xcarchive" -sdk iphoneos -destination="iOS" SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES xcodebuild archive -workspace $(PROJECT_NAME).xcworkspace -scheme $(SCHEME_NAME_XCFRAMEWORK) -archivePath "./build/ios_simulator.xcarchive" -sdk iphonesimulator -destination="iOS Simulator" SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES xcodebuild -create-xcframework -framework $(SIMULATOR_ARCHIVE_PATH)$(EXTENSION_NAME).framework -debug-symbols $(SIMULATOR_ARCHIVE_DSYM_PATH)$(EXTENSION_NAME).framework.dSYM -framework $(IOS_ARCHIVE_PATH)$(EXTENSION_NAME).framework -debug-symbols $(IOS_ARCHIVE_DSYM_PATH)$(EXTENSION_NAME).framework.dSYM -output ./build/$(TARGET_NAME_XCFRAMEWORK) + +zip: + cd build && zip -r $(EXTENSION_NAME).xcframework.zip $(EXTENSION_NAME).xcframework/ + swift package compute-checksum build/$(EXTENSION_NAME).xcframework.zip + latest-version: (which jq) (pod spec cat AEPUserProfile | jq '.version' | tr -d '"') diff --git a/Package.resolved b/Package.resolved index 2ec29fb..715d0ec 100644 --- a/Package.resolved +++ b/Package.resolved @@ -5,18 +5,18 @@ "package": "AEPCore", "repositoryURL": "https://github.com/adobe/aepsdk-core-ios.git", "state": { - "branch": "main", - "revision": "51a6bd926c8c0beb526604ac0c2bc01b86158cc8", - "version": null + "branch": null, + "revision": "255e3fde7c478a48c57e3f6ee9df1700aae22278", + "version": "4.0.0" } }, { "package": "AEPRulesEngine", "repositoryURL": "https://github.com/adobe/aepsdk-rulesengine-ios.git", "state": { - "branch": "main", - "revision": "b2e0247bf57975209997dd9a26fd576b7c420394", - "version": null + "branch": null, + "revision": "0923ec707340874000e06ad2926c5006ddfbc4c9", + "version": "4.0.0" } } ] diff --git a/Package.swift b/Package.swift index 63205b8..b469103 100644 --- a/Package.swift +++ b/Package.swift @@ -15,12 +15,12 @@ import PackageDescription let package = Package( name: "AEPUserProfile", - platforms: [.iOS(.v10)], + platforms: [.iOS(.v11)], products: [ .library(name: "AEPUserProfile", targets: ["AEPUserProfile"]), ], dependencies: [ - .package(url: "https://github.com/adobe/aepsdk-core-ios.git", .upToNextMajor(from: "3.0.0")), + .package(url: "https://github.com/adobe/aepsdk-core-ios.git", .upToNextMajor(from: "4.0.0")), ], targets: [ .target(name: "AEPUserProfile", diff --git a/Podfile b/Podfile index 14f3f9a..e30a0da 100644 --- a/Podfile +++ b/Podfile @@ -1,5 +1,5 @@ # Uncomment the next line to define a global platform for your project -platform :ios, '10.0' +platform :ios, '11.0' # Comment the next line if you don't want to use dynamic frameworks use_frameworks! @@ -7,7 +7,7 @@ use_frameworks! workspace 'AEPUserProfile' project 'AEPUserProfile.xcodeproj' -pod 'SwiftLint', '0.44.0' +pod 'SwiftLint', '0.52.0' target 'AEPUserProfile' do pod 'AEPCore' diff --git a/Podfile.lock b/Podfile.lock index 2fff951..9cd65c4 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,16 +1,16 @@ PODS: - - AEPCore (3.4.2): - - AEPRulesEngine (>= 1.1.0) - - AEPServices (>= 3.4.2) - - AEPRulesEngine (1.1.0) - - AEPServices (3.4.2) - - SwiftLint (0.44.0) + - AEPCore (4.0.0): + - AEPRulesEngine (>= 4.0.0) + - AEPServices (>= 4.0.0) + - AEPRulesEngine (4.0.0) + - AEPServices (4.0.0) + - SwiftLint (0.52.0) DEPENDENCIES: - AEPCore - AEPRulesEngine - AEPServices - - SwiftLint (= 0.44.0) + - SwiftLint (= 0.52.0) SPEC REPOS: trunk: @@ -20,11 +20,11 @@ SPEC REPOS: - SwiftLint SPEC CHECKSUMS: - AEPCore: b01856bf24972e4720cb0511a358d1e68067252a - AEPRulesEngine: bb2927ed5501ddf9754c66e97f8d2b1cf8e33b19 - AEPServices: 3214311f239c8cdc6267d757200b05ec0ab05878 - SwiftLint: e96c0a8c770c7ebbc4d36c55baf9096bb65c4584 + AEPCore: dd7cd69696c768c610e6adc0307032985a381c7e + AEPRulesEngine: 458450a34922823286ead045a0c2bd8c27e224c6 + AEPServices: ca493988df250d84fda050124ff7549bcc43c65f + SwiftLint: 13280e21cdda6786ad908dc6e416afe5acd1fcb7 -PODFILE CHECKSUM: 44713863fdab846a5d5610dab713cd058e3ebf2c +PODFILE CHECKSUM: ec14ffaa71960396fa0253c01cfc329e16e54014 -COCOAPODS: 1.11.2 +COCOAPODS: 1.12.0 diff --git a/README.md b/README.md index 79a6e69..2491a8d 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,9 @@ # AEPUserProfile -[![Cocoapods](https://img.shields.io/cocoapods/v/AEPUserProfile.svg?color=orange&label=AEPUserProfile&logo=apple&logoColor=white)](https://cocoapods.org/pods/AEPUserProfile) - -[![SPM](https://img.shields.io/badge/SPM-Supported-orange.svg?logo=apple&logoColor=white)](https://swift.org/package-manager/) -[![Actions Status](https://github.com/adobe/aepsdk-userprofile-ios/workflows/Build/badge.svg)](https://github.com/adobe/aepsdk-userprofile-ios/actions) -[![Code Coverage](https://img.shields.io/codecov/c/github/adobe/aepsdk-userprofile-ios/dev.svg?logo=codecov)](https://codecov.io/gh/adobe/aepsdk-userprofile-ios/branch/dev) +[![Cocoapods](https://img.shields.io/github/v/release/adobe/aepsdk-userprofile-ios?label=Cocoapods&logo=apple&logoColor=white&color=orange&sort=semver)](https://cocoapods.org/pods/AEPUserProfile) +[![SPM](https://img.shields.io/github/v/release/adobe/aepsdk-userprofile-ios?label=SPM&logo=apple&logoColor=white&color=orange&sort=semver)](https://github.com/adobe/aepsdk-userprofile-ios/releases) +[![Build](https://github.com/adobe/aepsdk-userprofile-ios/actions/workflows/build.yml/badge.svg)](https://github.com/adobe/aepsdk-userprofile-ios/actions/workflows/build.yml) +[![Code Coverage](https://img.shields.io/codecov/c/github/adobe/aepsdk-userprofile-ios/main.svg?label=Coverage&logo=codecov)](https://codecov.io/gh/adobe/aepsdk-userprofile-ios/branch/main) ## About this project @@ -13,7 +12,7 @@ The Adobe Experience Platform UserProfile Mobile Extension is an extension for t To learn more about this extension, read [Adobe Experience Platform Profile Mobile Extension](https://aep-sdks.gitbook.io/docs/v/AEP-Edge-Docs/). ## Requirements -- Xcode 11.0 (or newer) +- Xcode 14.1 (or newer) - Swift 5.1 (or newer) ## Installation @@ -52,7 +51,7 @@ Alternatively, if your project has a `Package.swift` file, you can add AEPUserPr ``` dependencies: [ - .package(url: "https://github.com/adobe/aepsdk-userprofile-ios.git", .upToNextMajor(from: "3.0.0")), + .package(url: "https://github.com/adobe/aepsdk-userprofile-ios.git", .upToNextMajor(from: "4.0.0")), ], targets: [ .target(name: "YourTarget", diff --git a/Script/test-SPM.sh b/Script/test-SPM.sh index e1a2284..cea88e8 100755 --- a/Script/test-SPM.sh +++ b/Script/test-SPM.sh @@ -20,7 +20,7 @@ let package = Package( name: \"TestProject\", defaultLocalization: \"en-US\", platforms: [ - .iOS(.v10) + .iOS(.v11) ], products: [ .library( @@ -57,10 +57,6 @@ xcodebuild archive -scheme TestProject -destination 'generic/platform=iOS' echo '############# Build for generic iOS device ###############' xcodebuild build -scheme TestProject -destination 'generic/platform=iOS' -# Build for i386 simulator -echo '############# Build for i386 simulator ###############' -xcodebuild build -scheme TestProject -destination 'generic/platform=iOS Simulator' ARCHS=i386 - # Build for x86_64 simulator echo '############# Build for x86_64 simulator ###############' xcodebuild build -scheme TestProject -destination 'generic/platform=iOS Simulator' ARCHS=x86_64 diff --git a/Script/test-podspec.sh b/Script/test-podspec.sh index fa86512..2bd1e41 100644 --- a/Script/test-podspec.sh +++ b/Script/test-podspec.sh @@ -15,15 +15,15 @@ swift package generate-xcodeproj # Create a Podfile with our pod as dependency. echo " -platform :ios, '10.0' +platform :ios, '11.0' target '$PROJECT_NAME' do use_frameworks! - pod 'AEPCore', '~> 3.0.0' - pod 'AEPIdentity', '~> 3.0.0' - pod 'AEPLifecycle', '~> 3.0.0' - pod 'AEPServices', '~> 3.0.0' - pod 'AEPSignal', '~> 3.0.0' - pod 'AEPRulesEngine', '~> 1.0.0' + pod 'AEPCore', '~> 4.0.0' + pod 'AEPIdentity', '~> 4.0.0' + pod 'AEPLifecycle', '~> 4.0.0' + pod 'AEPServices', '~> 4.0.0' + pod 'AEPSignal', '~> 4.0.0' + pod 'AEPRulesEngine', '~> 4.0.0' pod 'AEPUserProfile', :path => '../' end " >>Podfile