Git Product home page Git Product logo

aepsdk-edgemedia-ios's Introduction

Adobe Streaming Media for Edge Network extension

CocoaPods SPM CircleCI Code Coverage

About this project

The Adobe Streaming Media for Edge Network extension sends data about audio and video consumption on your streaming applications to the Adobe Experience Platform Edge Network. This enables capabilities for measurement, analysis, and activation with media data across the Adobe Experience Cloud solutions when using the Adobe Experience Platform Mobile SDK and the Edge Network extension.

Requirements

  • Xcode 15 (or newer)
  • Swift 5.1 (or newer)

Install AEPEdgeMedia

To install and start using AEPEdgeMedia extension, check out the getting started guide and the API reference.

Migrating from AEPMedia

Please refer Migrating from AEPMedia to AEPEdgeMedia

Documentation

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

Related Projects

Project Description
AEPCore Extensions The AEPCore and AEPServices represent the foundation of the Adobe Experience Platform SDK.
AEPEdge Extension The AEPEdge extension allows you to send data to the Adobe Experience Platform (AEP) from a mobile application.
AEPEdgeIdentity Extension The AEPEdgeIdentity extension enables handling of user identity data from a mobile app when using the AEPEdge extension.
AEPAssurance Extension The AEPAssurance extension enables validation workflows for your Mobile SDK implementation.

Contributing

Contributions are welcomed! Read the Contributing Guide for more information.

Licensing

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

aepsdk-edgemedia-ios's People

Contributors

addb avatar cacheung avatar emdobrin avatar kevinlind avatar

Stargazers

 avatar

Watchers

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

aepsdk-edgemedia-ios's Issues

Improve CI config and build times

Task description

  • Make the workflow to run iOS and tvOS tests in parallel to improve build times
  • Fix the steps that are broken
  • Update and clean up makefile

Additional implementation details or code snippet(s)

No response

[MOB-19025] Edge Media tutorial

Epic description

End to end tutorial materials for Edge Media use-cases and integration flows with other AEP solutions.
Includes tutorial test app (updates / new) and doc materials.

Tasks

No response

Add EventType and EventSource to Core

Prerequisites

  • This is not a Security Disclosure, otherwise please follow the guidelines in Security Policy.
  • I have searched in this repository's issues to see if it has already been reported.

Feature request summary

Add the needed EventType and EventSource string to Core so they are common and available to all extensions.

Possible additions, but need to evaluate final values:

  • EventType: com.adobe.eventType.edgeMedia
  • EventType: com.adobe.eventType.media
  • EventSource: com.adobe.eventSource.createTracker
  • EventSource: com.adobe.eventSource.trackMedia
  • EventSource: com.adobe.eventSource.errorResponseContent (dispatched from Edge)

Current behavior

No response

Expected behavior

No response

Additional implementation details or code snippets

No response

Test app improvements for seek and close caption

Task description

Improve test apps for Media for Edge Network extension with examples for:

Additional implementation details or code snippet(s)

func detectCCChange() {
    guard let currentItem = self.player.currentItem else { return }
    let asset = currentItem.asset

    if #available(iOS 15.0, *) {
      asset.loadMediaSelectionGroup(for: AVMediaCharacteristic.legible, completionHandler: { group, _ in
        guard let group = group else { return }
        self.detectCCStatus(item: currentItem, group: group)
      })
    } else {
      guard let group = asset.mediaSelectionGroup(forMediaCharacteristic: AVMediaCharacteristic.legible) else { return }
      detectCCStatus(item: currentItem, group: group)
    }
  }

  func detectCCStatus(item: AVPlayerItem, group: AVMediaSelectionGroup) {
    let option = item.currentMediaSelection.selectedMediaOption(in: group)
    let ccActive = (option != nil)
    if self._isCCActive != ccActive {
      self._isCCActive = ccActive
      var info: [String: Any] = [:]
      info["ccActive"] = self._isCCActive
      NotificationCenter.default.post(name: NSNotification.Name(rawValue: PlayerEvent.PLAYER_EVENT_CC_CHANGE), object: self, userInfo: info)
    }
  }func detectCCChange() {
    guard let currentItem = self.player.currentItem else { return }
    let asset = currentItem.asset

    if #available(iOS 15.0, *) {
      asset.loadMediaSelectionGroup(for: AVMediaCharacteristic.legible, completionHandler: { group, _ in
        guard let group = group else { return }
        self.detectCCStatus(item: currentItem, group: group)
      })
    } else {
      guard let group = asset.mediaSelectionGroup(forMediaCharacteristic: AVMediaCharacteristic.legible) else { return }
      detectCCStatus(item: currentItem, group: group)
    }
  }

  func detectCCStatus(item: AVPlayerItem, group: AVMediaSelectionGroup) {
    let option = item.currentMediaSelection.selectedMediaOption(in: group)
    let ccActive = (option != nil)
    if self._isCCActive != ccActive {
      self._isCCActive = ccActive
      var info: [String: Any] = [:]
      info["ccActive"] = self._isCCActive
      NotificationCenter.default.post(name: NSNotification.Name(rawValue: PlayerEvent.PLAYER_EVENT_CC_CHANGE), object: self, userInfo: info)
    }
  }

Convert all the public API numeric fields to int

Task description

Currently we have double, long for fields like playhead, length, timeToStart.
As per the XDM schema and the discussion with backend, those numeric fields should be updated to int

Affected APIs

  • updatePlayhead
  • all the createMediaObject APIs

DoD:

  • Update the API signatures
  • Refactor internal mapper to remove the conversion
  • Update the respective tests
  • Update migration-guide.md document

Additional implementation details or code snippet(s)

No response

Snapshot release

Version check and dependencies updates
Merge latest dev changes to staging
Complete validation on staging, with prod endpoint

Refactor functional and integration tests to use new test utils

Task description

The existing functional and integration tests should be refactored to use the newly available common test utilities available in: https://github.com/adobe/aepsdk-testutils-ios

With the following items covered:

  1. Any changes required to the common test utils should be opened as a PR to the test utils repo, optimally in a non-breaking change manner (although before the 1.0.0 release of the test utils, larger changes should be ok)
  2. Manual dictionary/array property assertions should be refactored to use the JSON comparison tool
  3. Test utilities that exist in the test utils repo should be used over equivalent test util classes defined locally

Additional implementation details or code snippet(s)

No response

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.