Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/banghuazhao/adrevenue-watch

An iOS app built with SwiftUI and Swift Concurrency to fetch and display AdMob network reports. Follows MVVM + Clean Architecture for maintainability and scalability. Work in progress.
https://github.com/banghuazhao/adrevenue-watch

admob api-integration async-await clean-architecture google-apis ios ios-development mobile-app mvvm oauth2 swift swift-concurrency swiftui

Last synced: 2 months ago
JSON representation

An iOS app built with SwiftUI and Swift Concurrency to fetch and display AdMob network reports. Follows MVVM + Clean Architecture for maintainability and scalability. Work in progress.

Awesome Lists containing this project

README

        

# AdRevenue-Watch (Work in Progress)

This iOS app is currently under development. It is built using **SwiftUI** and **Swift Concurrency** to fetch and display AdMob network reports. The app follows **MVVM + Clean Architecture** to maintain a scalable and maintainable codebase.

## Project Status

🚧 **Work in Progress**: This app is actively being developed, with ongoing improvements and feature additions.

## Features (In Progress)

- Fetch AdMob network reports using the Google AdMob API.
- Display data such as clicks, ad requests, impressions, and estimated earnings.
- Supports authentication via OAuth2 with Google Sign-In.
- Uses **MVVM + Clean Architecture** for a clean, testable, and maintainable codebase.

### Planned Features

- Create AdMobAccountUseCase, AdMobAccountRepository, AdMobReportUseCase, AdMobReportRepository
- More granular report filtering options.
- Error handling
- Improved UI for better data presentation.

## Architecture

This project follows **MVVM + Clean Architecture**, with a focus on separating concerns into four layers:

### 1. **View (SwiftUI)**:
- Handles UI and displays data provided by the **ViewModel**.

### 2. **ViewModel**:
- Prepares data for the **View** and handles user interactions.
- Interacts with the **UseCase** to execute business logic.

### 3. **UseCase**:
- Contains business logic and interacts with the **Repository** for data.

### 4. **Repository**:
- Manages API requests and handles data retrieval from external sources (Google AdMob API).

## Technologies

- **SwiftUI**: For building the user interface.
- **Swift Concurrency**: Using `async/await` for handling asynchronous tasks.
- **MVVM + Clean Architecture**: Ensures separation of concerns and testability.
- **Google AdMob API**: Fetches network reports from the AdMob API.

## Setup Instructions

### 1. Prerequisites:
- A Google Cloud project with access to the **Google AdMob API**.
- OAuth2 credentials set up in the Google Cloud Console.
- Create `Secret.xcconfig` file in `Config` folder and add your credentials
```
GIDClientID = Your_GIDClientID
GOOGLE_REDIRECT_URL_SCHEMES = Your_GOOGLE_REDIRECT_URL_SCHEMES
```