{"id":48431396,"url":"https://github.com/verloop/ios-sdk","last_synced_at":"2026-04-06T11:01:13.781Z","repository":{"id":35153325,"uuid":"208224360","full_name":"verloop/ios-sdk","owner":"verloop","description":null,"archived":false,"fork":false,"pushed_at":"2026-02-11T05:47:02.000Z","size":1009,"stargazers_count":1,"open_issues_count":3,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-02-11T16:53:39.031Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/verloop.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-09-13T08:24:27.000Z","updated_at":"2026-02-11T05:47:06.000Z","dependencies_parsed_at":"2024-02-22T21:26:43.453Z","dependency_job_id":"a6c7d6aa-c549-4a1a-8b91-b84ec201b3e8","html_url":"https://github.com/verloop/ios-sdk","commit_stats":{"total_commits":125,"total_committers":7,"mean_commits":"17.857142857142858","dds":0.744,"last_synced_commit":"63dd3a9f7cea90dd04bc972c8869094e3e224db9"},"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"purl":"pkg:github/verloop/ios-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verloop%2Fios-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verloop%2Fios-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verloop%2Fios-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verloop%2Fios-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/verloop","download_url":"https://codeload.github.com/verloop/ios-sdk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verloop%2Fios-sdk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31469743,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T08:36:52.050Z","status":"ssl_error","status_checked_at":"2026-04-06T08:36:51.267Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-06T11:01:13.161Z","updated_at":"2026-04-06T11:01:13.772Z","avatar_url":"https://github.com/verloop.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\nThis framework helps you configure and launch Verloop's chat. Inorder to integrate, one needs to initiase our `VerloopSDK` instance by passing a configuration `VLConfig` object and present it's navigation controller. This will present Verloop's chat modally. The APIs on `VerloopSDK` and `VLConfig` are described in detail below. \n\n\n## **Requirements**\n\n- XCode 13.1+\n- Min IOS version support IOS10\n\n## **Installation**\n\nTwo ways to install\n\n- CocoaPods is a dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate Verloop into your Xcode project using CocoaPods, add the following line in your Podfile:\n  ```\n  pod 'VerloopSDKiOS'\n  ```\n  \n- Manually build the repo and generate the VerloopSDK framework and embed the framework in Linked Binaries in your project as shown below. \n\u003cp align=\"center\"\u003e\n\u003cimg width=\"700\" alt=\"Screenshot 2022-03-15 at 3 08 56 PM\" src=\"https://user-images.githubusercontent.com/98142458/158394191-f40ef1b5-89eb-41cb-8110-dfcd54b700be.png\"\u003e\n\u003c/p\u003e\n\n\n\n## **Change Log**\n\nKindly refer to our change log for the added features and deprecated APIs on every release. You'll find it here -\u003e [change log](https://github.com/verloop/ios-sdk/wiki/Change-log) \n\n\n## **SDK Usage - Swift** \n\n \nImport the library with the following command: \n\n```\nimport VerloopSDK\n```\n\nInitialise the configuration object `VLConfig`. You could pass an identifier to uniquely indentify a user  - `userId`. Will be useful to manage logged in user sessions. \n\n```\nlet config = VLConfig(clientId: String)\n\nlet config = VLConfig(clientId: String, userId: String?)    //clientId is required parameter while userId.\n```\nYou could otherwise update the userId using the method `setUserId` on an instance of `VLConfig`.  \n\n```\nlet config = VLConfig(clientId: String)\n\nconfig.setUserId(userId: String)\n```\n\n\n### APIs on `VLConfig`\n\nYou could configure your chat's instance with the following APIs on VLConfig:\n\n- **Recepie ID:** To set the recipe before launching the chat. If this api isn't used, then default recipe would be picked up.\n\n``` \nconfig.setRecipeId(recipeId id: String?)\n```\n\n- Notification Token: To receive notifications, you'll need to pass your device token via this API apart from setting you bundle id, p12 apns cert and its password in the dashboard. \n\n```\nconfig.setNotificationToken(notificationToken: string)\n```\n\n\n- UserName, UserEmail and UserPhone: To set user parameters such as username, email and phone number. \n\n\n```\nconfig.setUserName(username name:String)\n\nconfig.setUserEmail(userEmail email:String)\n\nconfig.setUserPhone(userPhone phone:String)\n```\n\n- User Parameters: You could pass in one or more of the above details using the api `setUserParam`. Key can be either `name`, `email`, and/or `phone`.\n\n```\nconfig.setUserParam(key:String, value:String)\n\nExample: \n\nconfig.setUserParam(key: \"name\", value: \"Test User\")\n\nconfig.setUserParam(key: \"email\", value: \"user@test.com\")\n```\n\n- Custom Fields: Use this api setCustomField to pass any custom parameters. This helps to add your own logic into conversation. This could be fetched via webhooks while running the bot recipe. `key` and `value` are the details saved within the set scope. Scope takes in two values, `user` and `room`.\n\n```\nconfig.putCustomField(key: String, value: String, scope: SCOPE)\n\nExample:\n                        \nconfig?.putCustomField(key: \"custom_key\", value: \"custom_value\", scope: .USER)\n\n```\n\n\n- Listeners: You could set two listenrs when an end user taps on a button or url in the recipe. \n\n```\n//Button Click Listener\n\nconfig.setButtonOnClickListener(onButtonClicked buttonClicked: LiveChatButtonClickListener?)\n\nExample: \n\nconfig.setButtonOnClickListener(onButtonClicked:{ (title, type, payload) in\n     print(title)\n})\n\n\n// URL Click Listener\n\nsetUrlClickListener(onUrlClicked urlClicked: LiveChatUrlClickListener?)\n\n```\n- Menu Widget: If you're recipe has a menu list, it can be set to auto open state using the following api.\n\n```\n//Button Click Listener\n\nconfig.openMenuWidget()\n\n```\n\n- Show Download for Media Messages: You can enable download of media message be calling the below API with value true.\n  \n```\n//Show Download Button on Media Messages \n\nconfig.showDownloadButton(true)\n\n```\n\n- Title: Set title on the widget.\n  \n```\n//Setting title on the widget \n\nconfig.setTitle(widgetTitle: \"Title\")\n\n\n```\n\n- Branding Color: Set branding color on the widget.\n  \n```\n//Setting branding color on the widget \n\nconfig.setWidgetColor(widgetColor: UIColor.label)\n\n\n```\n\n\n\n\n\n### APIs on `VerloopSDK`\n\nVerloopSDK class is the SDK class which expects a `VLConfig` instance as an initialisation parameter. An instance of VerloopSDK is used to present or close the chat. You could manage user session with the login and logout APIs on this class. Here we'll walk you through the APIs with the scenarios.  \n\n- To initialise the SDK\n```\nlet verloop = VerloopSDK(config: config)     \n```\n\n- To prsent the chat, you'll need to get the root view controller of the chat and present it modally from your controller. This will launch the converstation too. Use `getNavController` method of the `VerloopSDK` to create an instance of the SDK's root view controller. \n\n```\nlet chatController = verloop.getNavController()\n\nyourViewController.present(chatController, animated: true)\n```\n\n- To manage user session, use the login and logout methods. You could login with a user identifier. \n\n```\nlet verloop = VerloopSDK(config: config)    \n\nverloop.login(userId: string)\n\nverloop.logout()\n```\n\n### For Apple Push Notifications \n\nTo recieve notifications, add the BundleID, APNS Certificate file(.p12) and it's corresponding password on the dashboard's setting page. Homepage \u003e Settings \u003e Chat (under product settings) \u003e iOS SDK / Android SDK\n\nNote: Set the device token on the configuration object, before initialising the SDK. The notification payload from Verloop will have a key `_by` with value `verloop`. \n\n```\njson { \"_by\": \"verloop\", \"aps\": { \"alert\": { \"body\": \"notification message body\" } } }\n```\n\n\n## **SDK Usage - Objective C** \n\n\nAfter importing the Framework, add the following line in your controller:\n\n```\nimport \u003cVerloopSDK/VerloopSDK-Swift.h\u003e\n```\n\nCreate the `VLConfig` object. Configure the object. Then initialise `VerloopSDK` with the configuration object. Few of the APIs are listed below. \n\n```\nVLConfig *config = [[VLConfig alloc] initWithClientId:@\"clientId\" userId:@\"userId\"];\n\n[config setUserName:@\"Name\"]; [config setUserEmail:@\"hello@verloop.io\"]; [config setUserPhone:@\"+919xxxxxxxx\"];\n[config setNotificationTokenWithNotificationToken:@\"token\"]; \n[config setStagingWithIsStaging:YES]; \n[config putCustomFieldWithKey:@\"key\" value:@\"value\" scope:SCOPEUSER];\n\nVerloopSDK *verloop = [[VerloopSDK alloc] initWithConfig:config]; \n```\n\nAfter this, when user want to open the chat, you can simply ask for the UINavigationController and present it on your viewcontroller. \n\n```\n[[self navigationController] presentViewController:[verloop getNavController] animated:YES completion:NULL];\n```\n\nNote: Kindly go through the swift's documentation for further APIs and appropriately call corresponding methods. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fverloop%2Fios-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fverloop%2Fios-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fverloop%2Fios-sdk/lists"}