> For the complete documentation index, see [llms.txt](https://docs.mediamelon.com/mediamelon/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mediamelon.com/mediamelon/smartsight-player-sdk-integration/ios/mediamelon-ios-kaltura-player-plugin-integration-document.md).

# MediaMelon iOS Kaltura Player Plugin Integration Document

[**Step 1:** Import Frameworks](#step-1-import-frameworks)

[**Step 2:** Register MediaMelon Plugin](#step-2-register-mediamelon-plugin)

[**Step 3:** Configure and Initialise MediaMelon SDK](#step-3-configure-and-initialise-mediamelon-sdk)

### Step 1: Import Frameworks

```swift
import KalturaPlayer
import MediaMelonKPPlugin
```

### Step 2: Register MediaMelon Plugin

Register the MediaMelon Plugin in the App Delegate after the player setup.

```swift
KalturaBasicPlayer.setup()
PlayKitManager.shared.registerPlugin(MediaMelonKPPlugin.self)
```

### Step 3: Configure and Initialise MediaMelon SDK

#### **Swift:**

```swift
func createPluginConfig() ->  MediaMelonKPPluginConfig {
        
    let mediaMelonPluginParams: [String: Any] = [
        "customerId": "CUSTOMER_ID",
        "domainName": "DOMAIN_NAME",
        "subscriberTag": "SUBSCRIBER_TAG",
        "subscriberId": "SUBSCRIBER_ID",
        "subscriberType": "SUBSCRIBER_TYPE",
        "doHash": true,
        "playerName": "PLAYER_NAME",
        "playerVersion": "PLAYER_VERSION",
        "playerBrand": "PLAYER_BRAND",
        "playerModel": "PLAYER_MODEL",
        "assetId": "ASSET_ID",
        "assetName": "ASSET_NAME",
        "videoId": "VIDEO_ID",
        "seriesTitle": "SERIES_TITLE",
        "episodeNumber": "EPISODE_NUMBER",
        "season": "SEASON",
        "contentType": "CONTENT_TYPE",
        "genre": "GENRE",
        "appName": "APP_NAME",
        "appVersion": "APP_VERSION",
        "deviceMarketingName": "DEVICE_MARKETING_NAME",
        "videoQuality": "VIDEO_QUALITY",
        "deviceId": "DEVICE_ID",
        "disableManifestFetch": false,
        "customTags": [
            "KEY1": "VALUE1",
            "KEY2": "VALUE2"
        ]
    ]
    
    var mmPluginConfig = MediaMelonKPPluginConfig(params: mediaMelonPluginParams)
    return mmPluginConfig
  }
```

```swift
func playerOptions(_ videoData: VideoData?) -> PlayerOptions {
    let playerOptions = PlayerOptions()
    
    .....
    
    playerOptions.pluginConfig.config[MediaMelonKPPlugin.pluginName] = createPluginConfig()
    return playerOptions
}
```

{% hint style="info" %}

* **doHash**: To hash the subscriber ID, set it to <mark style="color:orange;">`true`</mark>. To leave the subscriber ID un-hashed, set it to <mark style="color:orange;">`false`</mark>. This is optional.
  {% endhint %}

| Variable         | Description                                                                                                                                                                          |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| PLAYER\_NAME     | String containing the Player Name.                                                                                                                                                   |
| CUSTOMER\_ID     | String containing your MediaMelon-assigned Customer ID.                                                                                                                              |
| SUBSCRIBER\_ID   | String containing your Subscriber’s ID. If you do not use subscriber IDs, enter null                                                                                                 |
| DOMAIN\_NAME     | String containing your section of your subscriber or assets.                                                                                                                         |
| SUBSCRIBER\_TYPE | String containing the Subscriber Type (e.g. “Free”, “Paid”). If you do not use subscriber types, enter null                                                                          |
| SUBSCRIBER\_TAG  | String containing an additional subscriber-specific information. This is sent in clear (not hashed) to SmartSight and it is advised to not send sensitive information in this field. |
| ASSET\_ID        | String containing Asset Id.                                                                                                                                                          |
| ASSET\_NAME      | String containing Asset Name.                                                                                                                                                        |
| VIDEO\_ID        | String containing your video’s ID. If you do not use videos IDs, enter null.                                                                                                         |
| CONTENT\_TYPE    | String containing type of the Content. For example - "Movie", "Special", "Clip", "Scene Epis Lifts".                                                                                 |
| GENRE            | String containing Genre of the content. For example - "Comedy", "Horror".                                                                                                            |
| DRM\_PROTECTION  | Widevine, Fairplay, Playready etc. Unknown means content is protected, but protection type is unknown. For clear contents, do not set this field                                     |
| EPISODE\_NUMBER  | String containing sequence number of the Episode.                                                                                                                                    |
| SEASON           | String containing the Season. For example - "Season1".                                                                                                                               |
| SERIES\_TITLE    | String containing Title of the Series.                                                                                                                                               |
| CUSTOM\_TAGS     | Extra custom metadata can be added here if required.                                                                                                                                 |
| PLAYER\_BRAND    | String containing Player Brand.                                                                                                                                                      |
| PLAYER\_MODEL    | String containing Player Model. For example - This could be a variant of player. Say name of third party player used by organisation. Or any human readable name of the player.      |
| PLAYER\_VERSION  | String containing Player Version.                                                                                                                                                    |
