# BSPHP — bsphp.mac.demo (macOS account-mode demo app)

## Overview

macOS SwiftUI + AppKit demo: login/register, web login, SMS/email OTP, recharge, unbind, feedback. Card-only demo: **bsphp.mac.demo.card**.

## Directory tree

```
bsphp.mac.demo/
├── bsphp.mac.demo.xcodeproj/
├── bsphp.mac.demo/
│   ├── bsphp_mac_demoApp.swift
│   ├── ContentView.swift              kBSPHPURL block at top
│   ├── demo_bsphp_*_view.swift
│   ├── demo_bsphp_form_helpers.swift
│   ├── demo_bsphp_otp_common.swift
│   ├── demo_bsphp_console_window_view.swift
│   ├── bsphp_api_http/
│   ├── bsphp.mac.demo-Bridging-Header.h
│   ├── bsphp_mac_demo.entitlements
│   ├── Assets.xcassets/
│   └── Preview Content/
├── bsphp.mac.demoTests/
├── bsphp.mac.demoUITests/
├── 效果图-配置说明/
├── 文件结构说明.md
├── 说明中文.md / 说明繁体.md / 说明英文.md
└── (Build output in DerivedData)
```

## Configuration

Edit the required `private let` constants at the top of `bsphp.mac.demo/ContentView.swift` (API URL, mutual key, RSA, captcha URL, web login/renew URLs) to match your BSPHP app and webapi params (e.g. `daihao`).

## Run

Open the project in Xcode; **destination: My Mac** (not iOS Simulator).

## Screenshots

![](效果图-配置说明/1.png)

![](效果图-配置说明/2.png)

![](效果图-配置说明/3.png)

![](效果图-配置说明/4.png)

![](效果图-配置说明/5.png)

![](效果图-配置说明/6.png)

![](效果图-配置说明/7.png)

![](效果图-配置说明/8.png)

![](效果图-配置说明/9.png)

![](效果图-配置说明/10.png)

![](效果图-配置说明/11.png)

![](效果图-配置说明/12.png)

![](效果图-配置说明/13.png)

![](效果图-配置说明/14.png)

![](效果图-配置说明/15.png)

![](效果图-配置说明/配置说明.png)

## Build output

**Product → Show Build Folder in Finder**.
