Skip to main content

iOS Framework API References

Initialization Method

GlamAr.initialize(
accessKey: String, // Required - Pass your unique access key for the GlamAR service
debug: Bool? = false, // false by default
bundleIdentifier: String? = Bundle.main.bundleIdentifier, // Bundle.main.bundleIdentifier by default
overrides: GlamAROverrides? = nil,
webView:WKWebView? = nil) //
ParametersTypeDescriptionOptions
accessKeystringYour unique access key for the GlamAR serviceRequired
debugbooleanA flag to switch between debug and production environments

true: Uses debug/staging environment
false: Uses production environment Default - false

bundleIdentifierstringIdentifier is used for parent domain white listing

Default - Bundle.main.bundleIdentifier

overridesGlamAROverrides

Category configurations. Check GlamAROverrides inside GlamAR package

Default - nil

webViewWKWebViewPass a pre-configured WKWebView

Default - nil

Post-Initialization Methods

applyBySku

GlamAr.applyBySku(skuId: String);

Load a virtual try-on using applyBySku method and passing the relevant SKU Id.
Return Value: None

ParametersTypeDescription
SKU Idstring A SKU ID.

applyByCategory

GlamAr.applyByCategory(subcategory: String);

Pass a subcategory (e.g., sunglasses,necklace,earrings), which the SDK will use to fetch all corresponding SKUs from the Console’s product inventory.
Return Value: None

ParametersTypeDescriptionOptions
subcateogrystringPass any compatible subcategory

sunglasses, necklace, earrings etc.
Check supported subcategories

applyMultipleConfigData

GlamAr.applyMultipleConfigData(skuConfigArray: Any);

Display multiple SKU types at once. The input should be an array of sku configs. Each item can be of diffrent subcategory eg: sunglasses, caps, earrings, etc.
Return Value: None

ParametersTypeDescription
skuConfigArrayobjectAn Array of SKU Configs

Following is an example of above skuConfigArray for applyMultipleConfigData.

struct EffectAsset3D: Codable {
let id: String
let url: String
}

struct EnvSettings: Codable {
let useDefaultEnvironment: Bool
}

struct ArEffect: Codable {
let envSettings: EnvSettings
let effectAssets3D: [EffectAsset3D]
}

struct SkuConfig: Codable {
let category: String
let subCategory: String
let status: String
let productName: String?
let productImage: String?
let arEffect: ArEffect
}

// MARK: - Example data

let data: [SkuConfig] = [
SkuConfig(
category: "eyewear",
subCategory: "eyeglasses",
status: "PUBLISHED",
arEffect: ArEffect(
envSettings: EnvSettings(useDefaultEnvironment: true),
effectAssets3D: [
EffectAsset3D(id: "full", url: "VALID-ASSET-URL") // Valid Asset url
]
),
),
SkuConfig(
category: "accessories",
subCategory: "caps",
status: "PUBLISHED",
productName: "Test cap",
productImage: "VALID-ASSET-IMAGE-URL", // Valid image url
arEffect: ArEffect(
envSettings: EnvSettings(useDefaultEnvironment: true),
effectAssets3D: [
EffectAsset3D(id: "full", url: "VALID-ASSET-URL") // Valid Asset url
]
),
)
]

GlamAr.applyMultipleConfigData(data);

Users will see separate tabs for each category type in the SDK UI.

addEventListener

GlamAr.addEventListener(event: String, callback: @escaping (Any?) -> Void);

Adds the listener to the given event name.
Return Value: None

ParametersTypeDescription
eventNamestring

A Name of specific event or "*" To listen to the all the events.

handlerFunctionfunction Your handler function that will listen to callback.

removeEventListener

GlamAr.removeEventListener(event:String);

Removes the given listener for the event name.
Return Value: None

ParametersTypeDescription
eventNamestring

A Name of specific event or "*" To remove all the events.

isLoaded

GlamAr.isLoaded();

Returns the status of module loading.
Return Bool: true if loaded, otherwise false

ParametersDescription

None

No parameters required.

open

GlamAr.open(mode: String? = nil, imgURL: String? = nil);

Opens the AR widget.
Return Value: None

ParametersTypeDescriptionOptions
modestringOpens Live-Tryon, Model/Image-tryon and Model ViewermodelViewer imgTryOn
imgURLstringValid image URLAny valid URL
  • No parameters: Start Live VTO

    GlamAr.open();
  • Model Viewer: Start Model Viewer

    GlamAr.open("modelViewer");
  • Image Try-On:

    • Opens the image/model selection screen:
      GlamAr.open("imgTryOn");
    • Opens try-on directly with a specific image:
      GlamAr.open("imgTryOn", "url_of_image");

Switching Views

  • While in Live or Image mode, calling:

    GlamAr.open("modelViewer");

    will open the model viewer. Calling GlamAr.open() again returns to the selected Try-On type.

  • To switch from Live to Image mode, call:

    GlamAr.back();

    This resets the Try-On session and then call GlamAr.open() with desired parameter

Note: The SKU must already be applied. If not, the SDK will display an error.

reset

GlamAr.reset();

Removes all the current effects from the canvas.
Return Value: None

ParametersDescription

None

No parameters required.

close

GlamAr.close();

Closes canvas and returns to the main widget page.
Return Value: None

ParametersDescription

None

No parameters required.

snapshot

GlamAr.snapshot();

Takes a snapshot of the current result window. Result of the screen can be get from photo-loaded event in base64 formate.
Return Value: none

ParametersDescription

None

No parameters required.

comparison

GlamAr.comparison(state: String, skus: Any?);

Toggles comparison mode in AR widget.
Return Value: None

Pass a state (i.e, open or close) to toggle between UI and with it 2 SKU ids or Skuconfig of same subcategory say sunglasses or necklace. Diffrent subcategory comparision is not supoorted. The first sku will be shown on the left side and the other one on the right side.

ParametersTypeDescriptionOptions
statestringState to show or hide the UI respectively"open" "close"
skusstring[] | object[]Provide 2 SKU Ids or 2 SKU json in an array

["skudID1", "skudID2"]
["SkuConfig1", "SkuConfig2"]

GlamAr.comparison("open", ["skudID1", "skudID2"]); // replace skudID1 and skudID2 with two SKU id's
GlamAr.comparison("close"); // When we send close we don't need to send SKUs

Eye PD Measurement Flow

We provide an integrated supports for eye pupillary distance (PD) scanning. This is activated when viewing any eyeware categories. If user wants to show his own UI and use this service we have function GlamAR.eyePD() for that case.

GlamAr.eyePD("start"); // To launch or restart Eye PD flow
GlamAr.eyePD("close"); // To exit Eye PD and return to active Try-On

Events

The GlamAR SDK emits various events throughout its lifecycle to help you monitor state, respond to user actions, and handle success or failure cases.

GlamAr.addEventListener(event: "sku-applied") { (callbackValue) in
print("sku-applied: \(callbackValue ?? "")")
}

GlamAr.addEventListener(event: "sku-failed") { (callbackValue) in
print("sku-failed: \(callbackValue ?? "")")
}

Check Events Page for event details.