{"id":25892983,"url":"https://github.com/kc-2001ms/advertisementsui","last_synced_at":"2026-05-11T15:35:56.323Z","repository":{"id":276273984,"uuid":"928513047","full_name":"KC-2001MS/AdvertisementsUI","owner":"KC-2001MS","description":"Framework for displaying ads using SwiftUI","archived":false,"fork":false,"pushed_at":"2025-02-20T18:31:21.000Z","size":371,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-20T19:37:46.178Z","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":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KC-2001MS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-06T18:54:09.000Z","updated_at":"2025-02-20T18:31:26.000Z","dependencies_parsed_at":"2025-02-07T09:34:43.969Z","dependency_job_id":null,"html_url":"https://github.com/KC-2001MS/AdvertisementsUI","commit_stats":null,"previous_names":["kc-2001ms/advertisementsui"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KC-2001MS%2FAdvertisementsUI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KC-2001MS%2FAdvertisementsUI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KC-2001MS%2FAdvertisementsUI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KC-2001MS%2FAdvertisementsUI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KC-2001MS","download_url":"https://codeload.github.com/KC-2001MS/AdvertisementsUI/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241574658,"owners_count":19984719,"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","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-03-02T21:29:39.364Z","updated_at":"2026-05-11T15:35:51.298Z","avatar_url":"https://github.com/KC-2001MS.png","language":"Swift","funding_links":["https://www.buymeacoffee.com/iroiro","https://paypal.me/iroiroWork?country.x=JP\u0026locale.x=ja_JP"],"categories":[],"sub_categories":[],"readme":"# AdvertisementsUI\n\nFramework for displaying ads using SwiftUI\n\n## Description\n\nWith this library, you can display ads with simple SwiftUI code.\nIt will support AppLovin as well as Admob.\n\n## Requirement\n\nThe following environment is required to use this library.  \n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/iOS-17.0+-green.svg\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/iPadOS-17.0+-brightgreen.svg\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Swift-6.0-DE5D43.svg\" /\u003e\n    \u003ca href=\"https://twitter.com/IroIro1234work\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Contact-@IroIro1234work-lightgrey.svg?style=flat\" alt=\"Twitter: @IroIro1234work\" /\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n## Demo\nTo verify the operation of this library, I created a sample application in the library. Please refer to it.\n\n## Usage\nBasically, the following methods are used to display the information.\n### 1. Preparation\n``` swift\nimport SwiftUI\nimport AdMobUI\n\n@main\nstruct SampleApp: App {\n    var body: some Scene {\n        WindowGroup {\n            ContentView()\n        }\n        .admobContainer()\n    }\n}\n```\n### 2. Display\n#### Banner\n``` swift\nimport SwiftUI\nimport AdMobUI\n\nstruct ContentView: View {\n    var body: some View {\n        NavigationStack {\n            AdBannerCard()\n        }\n    }\n}\n```\n#### Native\n``` swift\nimport SwiftUI\nimport AdMobUI\n\nstruct ContentView: View {\n    var body: some View {\n        NavigationStack {\n            List {\n                Section {\n                    NativeAdCard()\n                } header: {\n                    Text(\"Google Admob\")\n                }\n            }\n            .navigationTitle(\"Sample\")\n        }\n    }\n}\n```\n#### Interstitial\n``` swift\nimport SwiftUI\nimport AdMobUI\n\nstruct ContentView: View {\n    @State private var isOpeningInterstitialAd = false\n    \n    var body: some View {\n        NavigationStack {\n            List {\n                Section {\n                    Button {\n                        isOpeningInterstitialAd.toggle()\n                    } label: {\n                        Text(\"Show Interstitial Ad\")\n                    }\n                } header: {\n                    Text(\"Google Admob\")\n                }\n            }\n            .navigationTitle(\"Sample\")\n        }\n        .interstitialAdSheet(isPresented: $isOpeningInterstitialAd)\n    }\n}\n```\n#### Reworded\n``` swift\nimport SwiftUI\nimport AdMobUI\n\nstruct ContentView: View {\n    @State private var isOpeningRewordedAd = false\n    \n    @State private var rewordedCount = 0\n    \n    var body: some View {\n        NavigationStack {\n            List {\n                Section {\n                    GroupBox {\n                        Button {\n                            isOpeningRewordedAd.toggle()\n                        } label: {\n                            Text(\"Show Reworded Ad\")\n                        }\n                    } label: {\n                        LabeledContent(\"Reworded Count\", value: rewordedCount, format: .number)\n                    }\n                    .listRowInsets(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0))\n                    .padding(5)\n                    .backgroundStyle(.clear)\n                } header: {\n                    Text(\"Google Admob\")\n                }\n            }\n            .navigationTitle(\"Sample\")\n        }\n        .rewardedAdSheet(isPresented: $isOpeningRewordedAd) {\n            rewordedCount += 1\n        }\n    }\n}\n```\n#### Reworded Interstitial\n``` swift\nimport SwiftUI\nimport AdMobUI\n\nstruct ContentView: View {\n    @State private var isOpeningRewordedInterstitialAd = false\n    \n    @State private var rewordedInterstitialCount = 0\n    \n    var body: some View {\n        NavigationStack {\n            List {\n                Section {\n                    GroupBox {\n                        Button {\n                            isOpeningRewordedInterstitialAd.toggle()\n                        } label: {\n                            Text(\"Show Reworded Interstitial Ad\")\n                        }\n                    } label: {\n                        LabeledContent(\"Reworded Interstitial Count\", value: rewordedInterstitialCount, format: .number)\n                    }\n                    .listRowInsets(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0))\n                    .padding(5)\n                    .backgroundStyle(.clear)\n                } header: {\n                    Text(\"Google Admob\")\n                }\n            }\n            .navigationTitle(\"Sample\")\n        }\n        .rewardedInterstitialAdSheet(isPresented: $isOpeningRewordedInterstitialAd) {\n            rewordedInterstitialCount += 1\n        }\n    }\n}\n```\n\n\u003c!--## Swift-DocC--\u003e\n\u003c!----\u003e\n\u003c!--Swift-DocC is currently being implemented.--\u003e\n\u003c!----\u003e\n\u003c!--[Documentation](https://kc-2001ms.github.io/AdvertisementsUI/documentation/admobui/)--\u003e\n\n## Install\n\nAdvertisementsUI comes with two different frameworks.\nEach framework has a different configuration method.\n\n### AdMobUI\n1. [Adding package dependencies to your app](https://developer.apple.com/documentation/xcode/adding-package-dependencies-to-your-app)\n2. Add the following to info.plist\n```plist\n    \u003ckey\u003eNSUserTrackingUsageDescription\u003c/key\u003e\n    \u003cstring\u003e{some reason}\u003c/string\u003e\n    \u003ckey\u003eSKAdNetworkItems\u003c/key\u003e\n    \u003carray\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003ecstr6suwn9.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003e4fzdc2evr5.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003e2fnua5tdw4.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003eydx93a7ass.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003ep78axxw29g.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003ev72qych5uu.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003eludvb6z3bs.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003ecp8zw746q7.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003e3sh42y64q3.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003ec6k4g5qg8m.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003es39g8k73mm.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003e3qy4746246.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003ehs6bdukanm.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003emlmmfzh3r3.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003ev4nxqhlyqp.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003ewzmmz9fp6w.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003esu67r6k2v3.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003eyclnxrl5pm.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003e7ug5zh24hu.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003egta9lk7p23.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003evutu7akeur.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003ey5ghdn5j9k.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003ev9wttpbfk9.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003en38lu8286q.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003e47vhws6wlr.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003ekbd757ywx3.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003e9t245vhmpl.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003ea2p9lx4jpn.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003e22mmun2rn5.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003e4468km3ulz.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003e2u9pt9hc89.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003e8s468mfl3y.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003eppxm28t8ap.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003euw77j35x4d.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003epwa73g5rt2.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003e578prtvx9j.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003e4dzt52r2t5.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003etl55sbb4fm.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003ee5fvkxwrpn.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003e8c4e2ghe7u.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003e3rd42ekr43.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n        \u003cdict\u003e\n            \u003ckey\u003eSKAdNetworkIdentifier\u003c/key\u003e\n            \u003cstring\u003e3qcr597p9d.skadnetwork\u003c/string\u003e\n        \u003c/dict\u003e\n    \u003c/array\u003e\n    \u003ckey\u003eGADIsAdManagerApp\u003c/key\u003e\n    \u003ctrue/\u003e\n```\n3. Add the following to info.plist\nThe values of the keys in the AdUnitIDs dictionary are the following keys if not specified in the Swift code.\nIf specified, custom keys can be used.\n\n```plist\n    \u003ckey\u003eGADApplicationIdentifier\u003c/key\u003e\n    \u003cstring\u003e{some identifier}\u003c/string\u003e\n    \u003ckey\u003eAdUnitIDs\u003c/key\u003e\n    \u003cdict\u003e\n        \u003ckey\u003eBanner\u003c/key\u003e\n        \u003cstring\u003e{some identifier}\u003c/string\u003e\n        \u003ckey\u003eInterstitial\u003c/key\u003e\n        \u003cstring\u003e{some identifier}\u003c/string\u003e\n        \u003ckey\u003eNative\u003c/key\u003e\n        \u003cstring\u003e{some identifier}\u003c/string\u003e\n        \u003ckey\u003eRewarded\u003c/key\u003e\n        \u003cstring\u003e{some identifier}\u003c/string\u003e\n        \u003ckey\u003eRewardedInterstitial\u003c/key\u003e\n        \u003cstring\u003e{some identifier}\u003c/string\u003e\n    \u003c/dict\u003e\n```\n4. Add code\nSee demo for details\n\n\u003c!--### AppLovinUI--\u003e\n\u003c!----\u003e\n\u003c!--It will be described in detail at a later date.--\u003e\n\n## Contribution\nSee [CONTRIBUTING.md](https://github.com/KC-2001MS/AdvertisementsUI/blob/main/CONTRIBUTING.md) if you want to make a contribution.\n\n## Licence\n[AdvertisementsUI](https://github.com/KC-2001MS/AdvertisementsUI/blob/main/LICENSE)\n\n## Dependencies\nThis project depends on the following Apache-2.0 licensed libraries:\n\n- **GogleMobileAds** (Version 12.0.0) - [License](LICENSES/GogleMobileAds_LICENSE)\n- **GoogleUserMessagingPlatform** (Version 2.7.0) - [License](LICENSES/GoogleUserMessagingPlatform_LICENSE)\n- **SwiftDocCPlugin** (Version 1.4.3) - [License](LICENSES/SwiftDocCPlugin_LICENSE)\n- **SymbolKit** (Version 1.0.0) - [License](LICENSES/SymbolKit_LICENSE)\n\n## Supporting\n\nIf you would like to make a donation to this project, please click here. The money you give will be used to improve my programming skills and maintain the application.   \n\u003ca href=\"https://www.buymeacoffee.com/iroiro\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Buy Me A Coffee\" style=\"height: 60px !important;width: 217px !important;\" \u003e\n\u003c/a\u003e  \n[Pay by PayPal](https://paypal.me/iroiroWork?country.x=JP\u0026locale.x=ja_JP)\n\n## Author\n\n[Keisuke Chinone](https://github.com/KC-2001MS)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkc-2001ms%2Fadvertisementsui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkc-2001ms%2Fadvertisementsui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkc-2001ms%2Fadvertisementsui/lists"}