Lightweight library helping to embed Mercuryo Widget into their mobile apps

Overview

Mercuryo-Widget

CocoaPods Compatible Carthage Compatible SPM Compatible Platform

Mercuryo Widget Wrapper is a lightweight library for developers of apps who embed Mercuryo Widget into their mobile UX.

Solely purpose of the library is to provide an easy way to initialize WebView passing correct parameters with all needed permissions.

https://mercuryo.io/widget/

Requirements

  • iOS 9.0+
  • Xcode 11+
  • Swift 5.1+

Communication

  • If you need to find or understand an API, check our documentation.
  • If you need more information, check our help page.
  • If you found a bug, open an issue. The more detail the better!
  • If you want to contribute, submit a pull request.

Installation

CocoaPods

CocoaPods is a dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate Mercuryo Widget into your Xcode project using CocoaPods, specify it in your Podfile:

pod 'MRCRWidget'

Carthage

Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. To integrate Mercuryo Widget into your Xcode project using Carthage, specify it in your Cartfile:

github "mercuryoio/Mercuryo-Widget-Wrapper-iOS" ~> 1.0

Swift Package Manager

The Swift Package Manager is a tool for automating the distribution of Swift code and is integrated into the swift compiler. It is in early development, but Mercuryo Widget does support its use on supported platforms.

Once you have your Swift package set up, adding MRCRWidget as a dependency is as easy as adding it to the dependencies value of your Package.swift.

dependencies: [
    .package(url: "https://github.com/mercuryoio/Mercuryo-Widget-Wrapper-iOS.git", .upToNextMajor(from: "1.0.0"))
]

Manually

If you prefer not to use either of the aforementioned dependency managers, you can integrate Mercuryo Widget into your project manually.

Embedded Framework

  • Open up Terminal, cd into your top-level project directory, and run the following command "if" your project is not initialized as a git repository:
$ git init
  • Add Mercuryo Widget as a git submodule by running the following command:
$ git submodule add https://github.com/mercuryoio/Mercuryo-Widget-Wrapper-iOS.git
  • Open the new MRCRWidget folder, and drag the MRCRWidget.xcodeproj into the Project Navigator of your application's Xcode project.

    It should appear nested underneath your application's blue project icon. Whether it is above or below all the other Xcode groups does not matter.

  • Select the MRCRWidget.xcodeproj in the Project Navigator and verify the deployment target matches that of your application target.

  • Next, select your application project in the Project Navigator (blue project icon) to navigate to the target configuration window and select the application target under the "Targets" heading in the sidebar.

  • In the tab bar at the top of that window, open the "General" panel.

  • Click on the + button under the "Embedded Binaries" section.

  • You will see MRCRWidget.xcodeproj folder.

  • And that's it!

    The MRCRWidget.framework is automagically added as a target dependency, linked framework and embedded framework in a copy files build phase which is all you need to build on the simulator and a device.


Usage

Widget Configuration

For the first, you should create a configuration for your widget. You can choose one of the standard environment production or sandbox

import MRCRWidget

do {
    let configuration = try WidgetConfiguration(
        widgetId: "67710925-8b40-4767-846e-3b88db69f04d",
        environment: .production,
        params: nil
    )
} catch {
    assertionFailure(error.localizedDescription)
}

or use your own widget url

import MRCRWidget

do {
    let configuration = try WidgetConfiguration(
        widgetId: "67710925-8b40-4767-846e-3b88db69f04d",
        widgetURL: URL(string: "https://exchange.mydomain.io"),
        params: nil
    )
} catch {
    assertionFailure(error.localizedDescription)
}

Presenting Widget

Next, you should create WidgetAssembly and call build method. It returns a ViewController that you can show as you want.

import MRCRWidget

let vc = WidgetAssembly(
    configuration: configuration,
    uiDelegate: self
)
    .build()

self.present(
    vc,
    animated: true
)

Supporting Widget UI Delegate

You can also support the error handling from Mercuryo Widget. Just implement WidgetUIDelegate.

import MRCRWidget

extension ViewController: WidgetUIDelegate {

    func widgetDidReceiveError(_ error: WidgetError) {
        switch error.errorCode {
        case .photoLibraryAuthorizationFailed:
            showAlert()

        default:
            break
        }
    }
}

License

Mercuryo Widget is released under the MIT license. See LICENSE for details.

You might also like...
Weather forecast app that allows the user to either look for weather at their current location based on the GPS data or search for another city manually.
Weather forecast app that allows the user to either look for weather at their current location based on the GPS data or search for another city manually.

⛅️ Cloudy Weather forecast app that allows the user to either look for weather at their current location based on the GPS data or search for another c

Forecast App is an ios application built on top of omdb movie api for batman lovers to see their favorite batman movies
Forecast App is an ios application built on top of omdb movie api for batman lovers to see their favorite batman movies

Catbon-Movie-App Forecast App is an ios application built on top of omdb movie api for batman lovers to see their favorite batman movies, users can al

Stocks-App - App that allows the user to track stocks of their choice
Stocks-App - App that allows the user to track stocks of their choice

Stocks-App App that allows the user to track stocks of their choice (Coming soon

SwiftUI-pokedexApp - Pokedex app. Libarary of pokemons and their description
SwiftUI-pokedexApp - Pokedex app. Libarary of pokemons and their description

SwiftUI-pokedexApp Pokedex app. Libarary of pokemons and their description (UNFI

ToDoList - An ios app that help users to set their todos and make it easy to remember this todos
ToDoList - An ios app that help users to set their todos and make it easy to remember this todos

An ios app that help users to set their todos and make it easy to remember this todos by reminders them when todo time's up, this app make sure that you don't forget any todos that you want to do just give it to the app and let the app hundle it for you.

ViruSafe aims to help the fight with COVID-19 by offering people to share their symptoms as well track the spread of COVID-19 with an interactive map

ViruSafe aims to help the fight with COVID-19 by offering people to share their symptoms as well track the spread of COVID-19 with an interactive map, that shows how the infection has spread throughout Bulgaria.

This is an app for a craft beer company called Cacique Bier that allows to see their available products and place orders. Made with Swift and SwiftUI.

Cacique Bier App This is an app for a Craft Beer company that shows their catalogue of products and in the future will allow purchases. The app is com

A mobile application that presents the news received via NewsAPI to the user. Built with SwiftUI.
A mobile application that presents the news received via NewsAPI to the user. Built with SwiftUI.

📰 SwiftUI News App with NewsAPI A mobile application that presents the news received via NewsAPI to the user. Built with SwiftUI. ✅ Features The data

iOS mobile app to find and display the nearest boba shop

iOSBoba - Boba App Description Basic mobile app where you can plug in a location (or let the app find your current location), and the app will tap int

Releases(1.0.0)
  • 1.0.0(Feb 10, 2022)

Space! – an iOS 14 widget displaying NASA's Astronomy Picture of the Day

Space! NASA's Astronomy Picture of the Day – now on your Home Screen with widgets! Space! displays the latest APOD photo curated by NASA every day. Se

Jacob Bandes-Storch 72 Dec 17, 2022
SwiftUI iOS Widget and WatchOS app that randomly shows a word of the day with description and example.

Word Of The Day iOS Widget and WatchOS app made in SwiftUI that displays a random word of the day with description and example of usuage. Requirements

Kyle Dold 53 Nov 29, 2022
Headline News Widget for Better Touch Tool. You can display the articles fetched by rss.

BTTPluginHeadLineNews This is a headline news widget plugin for BTT(Better Touch Tool) You can display the articles fetched by rss. (Pock version is h

null 4 Jul 23, 2022
Weather App with widget that fetches real weather data using the Open Weather API

WeatherExtension App Demo WeatherExtension.mp4 Description Weather App that fetches real weather data using the Open Weather API Getting Started clone

Kayla Golder 0 Oct 21, 2021
iOS 14 widget for stats on COVID -19.

A Covid-19 Tracking Widget for iOS 14 WidgetKit WidgetKit gives users ready access to content in apps by putting widgets on the iOS Home screen or mac

Aaryan Kothari 71 Jul 4, 2022
Aplikasi CrypTraces adalah MacOS Widget Crypto Tracker dengan SwiftUI, Combine & Cocoa Framework, dan WebSocket & CoinCap API

Aplikasi CrypTraces adalah MacOS Widget Crypto Tracker dengan SwiftUI, Combine & Cocoa Framework, dan WebSocket & CoinCap API. Aplikasi ini berbentuk Widget di Menu Bar MacOS dengan menampilkan beberapa Crypto Currency seperti Bitcoin (BTC), Ethereum (ETH), Dogecoin (DOGE), Monero (XMR), dan Litecoin (LTC).

DK 6 Aug 1, 2022
App which lets two people share their social media details by simply putting one phone on top of the other ("tapping"). Currently in development by Nikita Mounier.

Tap It Tap It enables two people to seamlessly share their social media information (e.g. Instagram, Snapchat, phone number) by simply placing one scr

Nikita Mounier 24 Oct 21, 2022
A todo list iOS app developed with swift5 and coredata to persist data, this app help people organise their tasks on categories.

A todo list iOS app developed with swift5 and coredata to persist data, this app help people organise their tasks on categories. The app is simple, intuitive, and easy to use and update tasks informations.

null 1 Oct 10, 2022
An App that gives a nice interface where the user can type in their start location and destination

SixtCarSummoner What it does We developed an App that gives a nice interface where the user can type in their start location and destination. The user

Dominik Schiwietz 1 Nov 21, 2021
Rhythm helps those with Parkinson's more easily coordinate their gait with rhythmic audio.

Rhythm-Parkinson-s-App Rhythm helps those with Parkinson's more easily coordinate their gait with rhythmic audio. Research https://davisphinneyfoundat

Andreas Ink 1 Dec 13, 2021