Code Monkey home page Code Monkey logo

aepsdk-assurance-ios's Introduction

Adobe Experience Platform - Assurance extension for iOS

Cocoapods SPM CircleCI Code Coverage

About this project

Assurance/Project Griffon is a new, innovative beta product from Adobe Experience Cloud to help you inspect, proof, simulate, and validate how you collect data or serve experiences in your mobile app. For more information on what Project Griffon can do for you, see here.

Requirements

  • Xcode 15.0 or newer
  • Swift 5.1 or newer

Installation

Binaries

To generate an AEPAssurance.xcframework, run the following command:

$ make archive

This generates the xcframework under the build folder. Drag and drop all the .xcframeworks to your app target in Xcode.

# Podfile
use_frameworks!

target 'YOUR_TARGET_NAME' do
    pod 'AEPAssurance', '~> 5.0.0'
end

Replace YOUR_TARGET_NAME and then, in the Podfile directory, type:

$ pod install

To add the AEPAssurance Package to your application, from the Xcode menu select:

File > Swift Packages > Add Package Dependency...

Enter the URL for the AEPAssurance package repository: https://github.com/adobe/aepsdk-assurance-ios.git.

When prompted, input a specific version or a range of versions for Version rule.

Alternatively, if your project has a Package.swift file, you can add AEPAssurance directly to your dependencies:

dependencies: [
    .package(url: "https://github.com/adobe/aepsdk-assurance-ios.git", .upToNextMajor(from: "5.0.0"))
],
targets: [
    .target(name: "YourTarget",
            dependencies: ["AEPAssurance"],
            path: "your/path")
]

TestApps

Two sample apps are provided (one each for Swift and Objective-c) which demonstrate setting up and getting started with Assurance extension. Their targets are in AEPAssurance.xcodeproj, runnable in AEPAssurance.xcworkspace. Sample app source code can be found in the TestApp and TestAppObjC directories.

Development

The first time you clone or download the project, you should run the following from the root directory to setup the environment:

make pod-install

Subsequently, you can make sure your environment is updated by running the following:

make pod-update

Open the Xcode workspace

Open the workspace in Xcode by running the following command from the root directory of the repository:

make open

Command line integration

You can run all the test suites from command line:

make test

Related Projects

Project Description
AEPCore Extensions The AEPCore and AEPServices represent the foundation of the Adobe Experience Platform SDK.
AEP SDK Sample App for iOS Contains iOS sample apps for the AEP SDK. Apps are provided for both Objective-C and Swift implementations.

Documentation

Additional documentation for configuration and SDK usage can be found under the Documentation directory.

Contributing

Contributions are welcomed! Read the Contributing Guide for more information. We look forward to working with you!

Licensing

This project is licensed under the Apache V2 License. See LICENSE for more information.

aepsdk-assurance-ios's People

Contributors

cdhoffmann avatar coljtob avatar hokgw avatar praveek avatar pravinpk avatar sbenedicadb avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aepsdk-assurance-ios's Issues

AssuranceClientInfo should only map to currently supported platforms

Currently the AssuranceClientInfo.getDeviceType() uses the UIDevice.current.userInterfaceIdiom which maps to an enum of all platforms. This means that whenever a new platform is added like so we need to update the enum even if Assurance doesn't support the platform.

Expected Behaviour

Actual Behaviour

Reproduce Scenario (including but not limited to)

Steps to Reproduce

Platform and Version

Sample Code that illustrates the problem

Logs taken while reproducing problem

Assurance SDK keeps retrying connection to the deleted Assurance session

Expected Behaviour

Limited retries with extended delays for connection retries to an Assurance session. No retries for unrecoverable errors.

Actual Behaviour

Frequent unlimited retries trying to connect to the deleted Assurance session.

Reproduce Scenario (including but not limited to)

Steps to Reproduce

Connect to deleted assurance session

Platform and Version

iOS

"com.adobe.assurance" : {
      "version" : "3.0.1",
      "friendlyName" : "Assurance"
    }

Sample Code that illustrates the problem

Logs taken while reproducing problem

assuraceInfiniteRetries

Add API Docs

Expected Behaviour

Actual Behaviour

Reproduce Scenario (including but not limited to)

Steps to Reproduce

Platform and Version

Sample Code that illustrates the problem

Logs taken while reproducing problem

Allow appId to be configurable in Assurance Test App

Expected Behaviour

Provide a text input field for configuring appId in the test app allowing getting rid of hardcoding the test app. This will be beneficial for Assurance E2E tests to be more configurable.

Actual Behaviour

AppId is hardcoded in the Test App. E2E tests will not be able to override it if needed later without an app update.

Keep QuickConnect and StateManager values in sync

Currently it is possible for stateManager variables fetched by QuickConnect classes to change throughout the QuickConnect flow. Look into potentially restarting quickConnect flow internally when relevant state changes, or keeping it in sync using other mechanisms.

Facing ("Symbol not found") issue while adding AEPAssurance in project.

Hi Team,

I have added AEPAssurace.xcframework in the iOS project. Project have other adobe frameworks also like "AEPCore", "AEPAnalytics". When i write following code in Appdelegate then i got error.
Code Snippet:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    MobileCore.setLogLevel(.debug)
    
    let appState = application.applicationState
    let extensions = [AEPMobileServices.self,
                      Assurance.self,
                      Analytics.self,
                      Identity.self,
                      Lifecycle.self,
                      Signal.self,
                      UserProfile.self]
    MobileCore.registerExtensions(extensions) {
        MobileCore.configureWith(appId: "<appID>")
        if appState != .background {
            MobileCore.lifecycleStart(additionalContextData: ["contextDataKey":"contextDataVal"])
        }
    }
    return true
}`

Error:
dyld: lazy symbol binding failed: Symbol not found: _$s7AEPCore5EventC10responseID10Foundation4UUIDVSgvg
Referenced from: /Users/kumariritupal/Library/Developer/Xcode/DerivedData/AdobeSample-chrkcqnvpzrflseznqedbbxtqkir/Build/Products/Debug-iphonesimulator/AEPAssurance.framework/AEPAssurance
Expected in: /Users/kumariritupal/Library/Developer/Xcode/DerivedData/AdobeSample-chrkcqnvpzrflseznqedbbxtqkir/Build/Products/Debug-iphonesimulator/AEPCore.framework/AEPCore

dyld: Symbol not found: _$s7AEPCore5EventC10responseID10Foundation4UUIDVSgvg
Referenced from: /Users/kumariritupal/Library/Developer/Xcode/DerivedData/AdobeSample-chrkcqnvpzrflseznqedbbxtqkir/Build/Products/Debug-iphonesimulator/AEPAssurance.framework/AEPAssurance
Expected in: /Users/kumariritupal/Library/Developer/Xcode/DerivedData/AdobeSample-chrkcqnvpzrflseznqedbbxtqkir/Build/Products/Debug-iphonesimulator/AEPCore.framework/AEPCore

assuranceError

OtherFrameworks:

Folders

Error in IOS Build/Products/Debug-iphonesimulator/AEPAssurance/AEPAssurance.modulemap' not found

I am facing a problem AEPAssurance.modulemap not found. I problem comes up suddenly, it was working fine but suddenly this issue comes, I have been tried all the solutions but not able to fix it, kindly help me to fix this issue.

Xcode version 15.2, I have been tried on older version as well but not able to fix it.
ruby version: 2.7.6
pod version: 1.12.1
node version: 18.5.0
React Native Version: 0.71.4

Screenshot 2024-01-22 at 4 18 22 PM

Fix Xcode 14 Warnings

  • iOS 10 has been deprecated as the minimum deployment version on Xcode 14, we need to update it to iOS 11
  • SwiftLint build phase dependency analysis warning

Update README.md

Expected Behaviour

Actual Behaviour

Reproduce Scenario (including but not limited to)

Steps to Reproduce

Platform and Version

Sample Code that illustrates the problem

Logs taken while reproducing problem

QuickConnect session not terminating properly

I have found that if we get into a weird state where the socket connection either can't be established or errors out AFTER we have created a Session object in the AssuranceSessionOrchestrator, then we get into a weird state because the session isn't terminated properly on cancel or when we hit an error from the socket layer.

Creating WKWebView blocks the main thread for a long time at SDK initialization

Expected Behaviour

SDK initialization should be near-instantaneous

Actual Behaviour

SDK initialization blocks the main thread for 50+ms as it creates a WKWebView.

There's commented-out code in the codebase to use URLSession's native WebSocket support. Presuming that code works, you can probably just uncomment it and use if #available to use it at runtime on iOS 13+.

Platform and Version

iOS, 3.1.2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.