{"id":32150739,"url":"https://github.com/mappls-api/mappls-feedback-kit-ios-distribution","last_synced_at":"2025-10-21T10:19:17.373Z","repository":{"id":309362482,"uuid":"986805421","full_name":"mappls-api/mappls-feedback-kit-ios-distribution","owner":"mappls-api","description":"Mappls Feedback Kit Native for iOS distributed via the SPM (Swift Package Manager).","archived":false,"fork":false,"pushed_at":"2025-06-10T09:43:26.000Z","size":6,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-13T05:34:40.591Z","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":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mappls-api.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2025-05-20T06:38:42.000Z","updated_at":"2025-06-10T09:43:19.000Z","dependencies_parsed_at":"2025-08-11T13:35:17.898Z","dependency_job_id":"e72e582d-4f72-49aa-bc9e-db87ec1a44f1","html_url":"https://github.com/mappls-api/mappls-feedback-kit-ios-distribution","commit_stats":null,"previous_names":["mappls-api/mappls-feedback-kit-ios-distribution"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/mappls-api/mappls-feedback-kit-ios-distribution","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mappls-api%2Fmappls-feedback-kit-ios-distribution","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mappls-api%2Fmappls-feedback-kit-ios-distribution/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mappls-api%2Fmappls-feedback-kit-ios-distribution/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mappls-api%2Fmappls-feedback-kit-ios-distribution/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mappls-api","download_url":"https://codeload.github.com/mappls-api/mappls-feedback-kit-ios-distribution/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mappls-api%2Fmappls-feedback-kit-ios-distribution/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280242061,"owners_count":26296900,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":"2025-10-21T10:19:13.457Z","updated_at":"2025-10-21T10:19:17.364Z","avatar_url":"https://github.com/mappls-api.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"[\u003cimg src=\"https://about.mappls.com/images/mappls-b-logo.svg\" height=\"80\"/\u003e \u003c/p\u003e](https://www.mapmyindia.com/api)\n\n# MapplsFeedbackKit for iOS\n\n## [Introduction](#Introduction)\n\nFeedback Kit for IOS is a wrapper SDK for Mappls's feedback API. It allows developers to integrate feedback module in their application. Using feedback module user can submit location related feedback to Mappls's server.\n\n**Note:** Sample for UI view controllers with source code is also provided by Mappls which user can directly use to show feedback screen. Information about how to use UI sample is also provided in this documentation.\n\nIf you don't want to implement own logic and use sample from Mappls Jump to Sample UI Kit section.\n\n### [Version History](#Version-History)\n\n| Version | Dated | Description |\n| :------ | :---- | :---------- |\n| `3.0.0 `| 09 Feb 2025 | - Authentication and authorization mechanisms have been revised.|\n| --- | --- | --- |\n| `2.0.0` | 14 Nov, 2024 | URL property for icon is set in responnse of Report Categories master to use in UI. |\n| `1.0.1` | 23 Sep, 2024 | Provision of callbacks is added by subscribing to different notifications. |\n| `1.0.0` | 22 June, 2022 | Initial release. |\n\n## [Installation](#Installation)\n\nTo add a package dependency to your Xcode project, select File \u003e Swift Packages \u003e Add Package Dependency and enter its repository URL. See [Adding Package Dependencies to Your App](https://developer.apple.com/documentation/xcode/adding-package-dependencies-to-your-app).\n\n## [Usage](#Usage)\n\n**Steps to submit feedback:**\n\n1. An authoraization key i.e moduleId (provided by Mappls) against which feedback will be submitted wiil be required to use this SDK .\n\n1. List of categories need to be fetched first under which feedback will be submitted. For more informatatio see [here](#Get-Report-Categories).\n\n    **Notes:**\n\n    - Fetched report categories can be saved for offline use or to prevent fetching report categories multiple times.\n\n    - It will require to separate out them on basis of parentId i.e Separate as Parent and Child Categories, where if parent Id is null means they are parent categories otherwise child of some parent category.\n    **Note:** ParentId of a child category is reportId of parent category.\n\n1. On basis of parent and child categories, different User Interfaces or scenarios can be designed as per requirements.\n\n1. User must pass have location oordinate for which feedback will be submitted.\n\n1. After selecting of parent and child category user must take some input as a text for feedback.\n\n1. After Collection all values i.e Module Id, Location Coordinates, Parent Category, Child Category and Feedback Text, feedback can be submitted using functions available in this SDK. See [here](#Submit-Feedback).\n\n## [Get Report Categories](#Get-Report-Categories)\n\nCategories for reporting can be fetched using getReportCategories method of MapplsFeedBackKitManager class by using shared instance.\nIn response you will receive an error or an array of MapplsReportCategories. Yo will find below useful properties in reportCategories object which is an array of  `ParentCategories`:\n\n- *ParentCategories*\n\n- *ChildCategories*\n\n- *SubChildCategories*\n\n##### Swift\n\n```swift\nMapplsFeedBackKitManager.shared.getReportCategories { (reportCategories, error)  in\n    if let error = error {\n        print(error.localizedDescription)\n        self.dismiss(animated: true, completion: nil)\n    } else {\n        let categories = reportCategories ?? [ParentCategories]()\n        if categories.count \u003e 0 {\n            self.allReportCategories = categories\n            print(self.allReportCategories.first?.id)\n            self.currentStep = 1\n        } else {\n            print(\"No report categories found\")\n            self.dismiss(animated: true, completion: nil)\n        }\n}\n```\n\n## [Submit Feedback](#Submit-Feedback)\n\nTo submit feedback to Mappls's server you can use `saveUserData` function of `MapplsSaveUserDataAPIManager` class by using shared instance.\n\n`saveUserData` function will accept an object of `MapplsSaveUserDataOptions` class.\n\nTo create instance of MapplsSaveUserDataOptions user provide following parameters.\n\n### [Mandatory Parameters](#Mandatory-Parameters)\n1. location(String) : It can be either Mappls Pin (The 6-digit alphanumeric code for any location) or coordinate (latitude, longitude) in `string` format.\n1. parentCategory(Integer) : Parent category of the report. \n1. childCategory (Integer) : Child category of the report. \n\n### [Optional Parameters](#Optional-Parameters)\n1. placeName(string) : Name of the place where the event is taking place. It should be derived on the basis of Mappls Pin and coordinates.\n2. desription(String) : A description about your event. Min length 10 characters and Max length 250 characters.\n3. subChildCategory(Integer)(Internal) : Sub Child category of the report. \n4. flag(Integer) : If navroute is active then 1 else 0. \n5. speed(Integer) : User's speed in kilometers. \n6. alt(Integer) : Altitude of the user’s location, in meters. \n7. quality(Integer) : Quality of user's location. \n8. bearing(Integer) : Bearing of the user’s location, in degrees. \n9. accuracy(Integer) : Accuracy of user's location. \n10. utc(Long) : Date time in unix timestamp format. \n11. expiry(Long) : Date time in unix timestamp format to set expiry for the report. \n12. zeroId(String) : to be used only incase of NAVIMAPS . \n13. pushEvent(Boolean)(internal) : to be used only when traffic events are to be pushed back to the traffic event editor. Allowed values: a) true \nb) false \n14. appVersion(String) : Version of the app \n15. osVersionoptional(String) : Version of the os \n16. deviceName(String) : Name of the device \n\n\n\n##### Swift\n\n```swift\nlet saveOptions = MapplsSaveUserDataOptions(location: \"MMI000\", parentCategory: parentCategory.id ?? 0, childCategory: childCategory.id ?? 0, description: \"This is descriptions\", subChildCategory: self.selectedSubChildCategories?.id, accuracy: 3)\n\nMapplsSaveUserDataAPIManager.shared.saveUserData(saveOptions, { (isSucess, error) in\n\n    if let error = error {\n        print(error.localizedDescription)\n    } else if isSucess {\n        print(\"feedback submited successfully\")\n        self.dismiss(animated: true, completion: nil)\n    } else {\n        print(\"No results\")\n    }\n})\n```\n\n## [Callbacks](#Callbacks)\n\nDifferent events can be tracked by subscribing to different notificaitons.\n\n```swift\nNotificationCenter.default.addObserver(self, selector: #selector(handleFeedbackSubmit), name: .feedbackSubmitSuccessNotification, object: nil)\nNotificationCenter.default.addObserver(self, selector: #selector(handleFeedbackFailed), name: .feedbackSubmitFailedNotification, object: nil)\nNotificationCenter.default.addObserver(self, selector: #selector(handleReportCategoriesFetchSuccess), name: .reportCategoriesFetchSuccessNotification, object: nil)\nNotificationCenter.default.addObserver(self, selector: #selector(handleReportCategoriesFetchFailed), name: .reportCategoriesFetchFailedNotification, object: nil)\n```\n\n**feedbackSubmitSuccessNotification:**\n\nSubscribe to this notification to get callback when report submitted successfully.\n\n**feedbackSubmitFailedNotification:**\n\nSubscribe to this notification to get callback when report submission get failed.\n\n**reportCategoriesFetchSuccessNotification:**\n\nSubscribe to this notification to get callback when report fetched successfully to show in feedback controller.\n\n**reportCategoriesFetchFailedNotification:**\n\nSubscribe to this notification to get callback when report fetching get failed.\n\n***Note:*** Remember to remove observer when callbacks are no longer needed:\n\n```swift\nNotificationCenter.default.removeObserver(self, name: .feedbackSubmitSuccessNotification, object: nil)\nNotificationCenter.default.removeObserver(self, name: .feedbackSubmitFailedNotification, object: nil)\nNotificationCenter.default.removeObserver(self, name: .reportCategoriesFetchSuccessNotification, object: nil)\nNotificationCenter.default.removeObserver(self, name: .reportCategoriesFetchFailedNotification, object: nil)\n```\n\n# [Mappls Feedback UI Kit](#Mappls-Feedback-UI-Kit)\n\nA UI control `MapplsFeedbackUIKit` is available to use SDK MapplsFeedbackKit. To know more about it see [here](MapplsFeedbackUIKit.md).\n\n\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\n\n## Our many happy customers:\n\n![](https://www.mapmyindia.com/api/img/logos1/PhonePe.png)![](https://www.mapmyindia.com/api/img/logos1/Arya-Omnitalk.png)![](https://www.mapmyindia.com/api/img/logos1/delhivery.png)![](https://www.mapmyindia.com/api/img/logos1/hdfc.png)![](https://www.mapmyindia.com/api/img/logos1/TVS.png)![](https://www.mapmyindia.com/api/img/logos1/Paytm.png)![](https://www.mapmyindia.com/api/img/logos1/FastTrackz.png)![](https://www.mapmyindia.com/api/img/logos1/ICICI-Pru.png)![](https://www.mapmyindia.com/api/img/logos1/LeanBox.png)![](https://www.mapmyindia.com/api/img/logos1/MFS.png)![](https://www.mapmyindia.com/api/img/logos1/TTSL.png)![](https://www.mapmyindia.com/api/img/logos1/Novire.png)![](https://www.mapmyindia.com/api/img/logos1/OLX.png)![](https://www.mapmyindia.com/api/img/logos1/sun-telematics.png)![](https://www.mapmyindia.com/api/img/logos1/Sensel.png)![](https://www.mapmyindia.com/api/img/logos1/TATA-MOTORS.png)![](https://www.mapmyindia.com/api/img/logos1/Wipro.png)![](https://www.mapmyindia.com/api/img/logos1/Xamarin.png)\n\n\u003cbr\u003e\n\nFor any queries and support, please contact:\n\n[\u003cimg src=\"https://mmi-api-team.s3.amazonaws.com/Mappls-SDKs/Resources/mappls-logo.png\" height=\"40\"/\u003e \u003c/p\u003e](https://about.mappls.com/api/)\n\nEmail us at [apisupport@mappls.com](mailto:apisupport@mappls.com)\n\n![](https://www.mapmyindia.com/api/img/icons/support.png)\n[Support](https://about.mappls.com/contact/)\nNeed support? contact us!\n\n\u003cbr\u003e\u003c/br\u003e\n\n[\u003cp align=\"center\"\u003e \u003cimg src=\"https://www.mapmyindia.com/api/img/icons/stack-overflow.png\"/\u003e ](https://stackoverflow.com/questions/tagged/mappls-api)[![](https://www.mapmyindia.com/api/img/icons/blog.png)](https://about.mappls.com/blog/)[![](https://www.mapmyindia.com/api/img/icons/gethub.png)](https://github.com/mappls-api)[\u003cimg src=\"https://mmi-api-team.s3.ap-south-1.amazonaws.com/API-Team/npm-logo.one-third%5B1%5D.png\" height=\"40\"/\u003e \u003c/p\u003e](https://www.npmjs.com/org/mapmyindia) \n\n[\u003cp align=\"center\"\u003e \u003cimg src=\"https://www.mapmyindia.com/june-newsletter/icon4.png\"/\u003e ](https://www.facebook.com/Mapplsofficial)[![](https://www.mapmyindia.com/june-newsletter/icon2.png)](https://twitter.com/mappls)[![](https://www.mapmyindia.com/newsletter/2017/aug/llinkedin.png)](https://www.linkedin.com/company/mappls/)[![](https://www.mapmyindia.com/june-newsletter/icon3.png)](https://www.youtube.com/channel/UCAWvWsh-dZLLeUU7_J9HiOA)\n\n\u003cdiv align=\"center\"\u003e@ Copyright 2020 CE Info Systems Pvt. Ltd. All Rights Reserved.\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e \u003ca href=\"https://about.mappls.com/api/terms-\u0026-conditions\"\u003eTerms \u0026 Conditions\u003c/a\u003e | \u003ca href=\"https://www.mappls.com/about/privacy-policy\"\u003ePrivacy Policy\u003c/a\u003e | \u003ca href=\"https://www.mappls.com/pdf/mappls-sustainability-policy-healt-labour-rules-supplir-sustainability.pdf\"\u003eSupplier Sustainability Policy\u003c/a\u003e | \u003ca href=\"https://www.mappls.com/pdf/Health-Safety-Management.pdf\"\u003eHealth \u0026 Safety Policy\u003c/a\u003e | \u003ca href=\"https://www.mappls.com/pdf/Environment-Sustainability-Policy-CSR-Report.pdf\"\u003eEnvironmental Policy \u0026 CSR Report\u003c/a\u003e\n\n\u003cdiv align=\"center\"\u003eCustomer Care: +91-9999333223\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmappls-api%2Fmappls-feedback-kit-ios-distribution","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmappls-api%2Fmappls-feedback-kit-ios-distribution","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmappls-api%2Fmappls-feedback-kit-ios-distribution/lists"}