Compare commits
10 Commits
6422d3b760
...
e5ddd6f192
Author | SHA1 | Date |
---|---|---|
![]() |
e5ddd6f192 | 4 weeks ago |
![]() |
837c4734f5 | 1 month ago |
![]() |
0dabcda84d | 1 month ago |
![]() |
30be5eb7f7 | 2 months ago |
![]() |
ad2a54b779 | 2 months ago |
![]() |
a3ee877aed | 2 months ago |
![]() |
2e6fcc7798 | 2 months ago |
![]() |
cba3fc81ad | 2 months ago |
![]() |
5ad208a930 | 2 months ago |
![]() |
ff557ca73e | 2 months ago |
@ -0,0 +1,139 @@
|
||||
QR Code & Barcode Plus - App Store Listing Content
|
||||
==================================================
|
||||
|
||||
PROMOTIONAL TEXT (宣传文字)
|
||||
---------------------------
|
||||
Scan, Generate & Style QR Codes + Barcode Scanner with 80+ QR Templates
|
||||
|
||||
SUBTITLE (副标题)
|
||||
-----------------
|
||||
Professional QR Code Scanner & Generator with 80+ Custom Styles
|
||||
|
||||
DESCRIPTION (描述)
|
||||
------------------
|
||||
QR Code & Barcode Plus
|
||||
|
||||
Transform your device into a powerful QR code and barcode scanner with advanced generation capabilities. This comprehensive app combines cutting-edge scanning technology with creative design tools to meet all your code-related needs.
|
||||
|
||||
🔍 POWERFUL SCANNING FEATURES
|
||||
• Lightning-fast QR code and barcode scanning
|
||||
• Advanced camera technology for accurate detection
|
||||
• Support for multiple barcode formats (EAN, UPC, Code 128, Code 39, and more)
|
||||
• Real-time scanning with instant results
|
||||
• Works in various lighting conditions
|
||||
|
||||
✨ CREATIVE GENERATION TOOLS
|
||||
• Generate custom QR codes with your own content
|
||||
• Choose from 40+ unique QR code styles and patterns
|
||||
• Customize eye designs with 40+ creative options
|
||||
• Add custom logos and images to your QR codes
|
||||
• Create professional-looking codes for business or personal use
|
||||
|
||||
📱 COMPREHENSIVE FUNCTIONALITY
|
||||
• Scan and generate QR codes for URLs, text, contact information, WiFi networks, and more
|
||||
• Built-in barcode generator for various product codes
|
||||
• Calendar event creation with QR code sharing
|
||||
• Contact information sharing via QR codes
|
||||
• WiFi network sharing with easy connection setup
|
||||
|
||||
🎨 STYLE & CUSTOMIZATION
|
||||
• Extensive collection of modern QR code styles
|
||||
• Unique eye designs for distinctive appearance
|
||||
• Color customization options
|
||||
• Professional templates for business applications
|
||||
• Export high-quality images for printing and sharing
|
||||
|
||||
📊 SMART HISTORY & MANAGEMENT
|
||||
• Automatic scan history with search and filter
|
||||
• Favorite and organize your scanned codes
|
||||
• Export and share functionality
|
||||
• Cloud backup and synchronization
|
||||
• Privacy-focused with secure data handling
|
||||
|
||||
🌍 MULTILINGUAL SUPPORT
|
||||
• Available in 11 languages including English, Chinese, Japanese, Korean, French, German, Spanish, Italian, Portuguese, Russian, and Thai
|
||||
• Localized interface for global users
|
||||
• Region-specific barcode support
|
||||
|
||||
🔒 PRIVACY & SECURITY
|
||||
• No data collection or tracking
|
||||
• Local processing for enhanced privacy
|
||||
• Secure permission management
|
||||
• Transparent privacy policy
|
||||
|
||||
💼 PERFECT FOR
|
||||
• Business professionals and marketers
|
||||
• Event organizers and attendees
|
||||
• Students and educators
|
||||
• Small business owners
|
||||
• Anyone who needs reliable code scanning and generation
|
||||
|
||||
⭐ WHY CHOOSE QR CODE & BARCODE PLUS?
|
||||
• Professional-grade scanning accuracy
|
||||
• Unmatched customization options
|
||||
• Intuitive and user-friendly interface
|
||||
• Regular updates and improvements
|
||||
• Comprehensive feature set in one app
|
||||
• No subscription fees or hidden costs
|
||||
|
||||
Download QR Code & Barcode Plus today and experience the most advanced QR code and barcode solution available on the App Store. Whether you're scanning codes for work, creating custom codes for your business, or simply need a reliable scanner for everyday use, this app has everything you need and more.
|
||||
|
||||
Download now and unlock the full potential of QR codes and barcodes!
|
||||
|
||||
---
|
||||
|
||||
App Features:
|
||||
- QR Code Scanner & Generator
|
||||
- Barcode Scanner & Generator
|
||||
- Custom Style Templates
|
||||
- History Management
|
||||
- Multi-language Support
|
||||
- Privacy-First Design
|
||||
- No Ads or In-App Purchases
|
||||
|
||||
Compatibility: iOS 15.6+ | iPhone & iPad
|
||||
|
||||
==================================================
|
||||
|
||||
KEYWORDS (关键词)
|
||||
-----------------
|
||||
Primary Keywords:
|
||||
- QR code scanner
|
||||
- QR code generator
|
||||
- Barcode scanner
|
||||
- QR code maker
|
||||
- QR code creator
|
||||
- QR code designer
|
||||
- QR code customizer
|
||||
- QR code styles
|
||||
- QR code templates
|
||||
- QR code eye designs
|
||||
|
||||
Secondary Keywords:
|
||||
- Barcode reader
|
||||
- QR code app
|
||||
- QR code tool
|
||||
- QR code utility
|
||||
- QR code history
|
||||
- QR code manager
|
||||
- QR code organizer
|
||||
- QR code backup
|
||||
- QR code export
|
||||
- QR code sharing
|
||||
|
||||
Long-tail Keywords:
|
||||
- Professional QR code scanner
|
||||
- Custom QR code generator
|
||||
- Stylish QR code maker
|
||||
- Advanced QR code tool
|
||||
- Business QR code app
|
||||
- Creative QR code designer
|
||||
- Multi-language QR scanner
|
||||
- Privacy-focused QR app
|
||||
- No ads QR code scanner
|
||||
- Free QR code generator
|
||||
|
||||
==================================================
|
||||
Generated for App Store submission
|
||||
Date: 2024
|
||||
App: QR Code & Barcode Plus
|
After Width: | Height: | Size: 258 KiB |
@ -0,0 +1,36 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "1024.png",
|
||||
"idiom" : "universal",
|
||||
"platform" : "ios",
|
||||
"size" : "1024x1024"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"idiom" : "universal",
|
||||
"platform" : "ios",
|
||||
"size" : "1024x1024"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "tinted"
|
||||
}
|
||||
],
|
||||
"idiom" : "universal",
|
||||
"platform" : "ios",
|
||||
"size" : "1024x1024"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
@ -0,0 +1,112 @@
|
||||
import Foundation
|
||||
import UIKit
|
||||
|
||||
// MARK: - 启动性能监控器
|
||||
class LaunchPerformanceMonitor {
|
||||
static let shared = LaunchPerformanceMonitor()
|
||||
|
||||
private var startTime: CFAbsoluteTime = 0
|
||||
private var milestones: [String: CFAbsoluteTime] = [:]
|
||||
|
||||
private init() {}
|
||||
|
||||
// MARK: - 启动性能监控
|
||||
|
||||
/// 开始监控启动性能
|
||||
func startMonitoring() {
|
||||
startTime = CFAbsoluteTimeGetCurrent()
|
||||
milestones["app_launch_start"] = startTime
|
||||
print("🚀 启动性能监控开始: \(startTime)")
|
||||
}
|
||||
|
||||
/// 记录启动里程碑
|
||||
func recordMilestone(_ name: String) {
|
||||
let currentTime = CFAbsoluteTimeGetCurrent()
|
||||
milestones[name] = currentTime
|
||||
|
||||
if let startTime = milestones["app_launch_start"] {
|
||||
let elapsed = currentTime - startTime
|
||||
print("📊 启动里程碑 [\(name)]: \(String(format: "%.3f", elapsed))s")
|
||||
}
|
||||
}
|
||||
|
||||
/// 完成启动监控
|
||||
func finishMonitoring() {
|
||||
let endTime = CFAbsoluteTimeGetCurrent()
|
||||
milestones["app_launch_complete"] = endTime
|
||||
|
||||
if let startTime = milestones["app_launch_start"] {
|
||||
let totalTime = endTime - startTime
|
||||
print("✅ 启动完成,总耗时: \(String(format: "%.3f", totalTime))s")
|
||||
|
||||
// 分析各阶段耗时
|
||||
analyzeLaunchPhases()
|
||||
}
|
||||
}
|
||||
|
||||
/// 分析启动各阶段耗时
|
||||
private func analyzeLaunchPhases() {
|
||||
let sortedMilestones = milestones.sorted { $0.value < $1.value }
|
||||
|
||||
print("\n📈 启动阶段分析:")
|
||||
for i in 0..<sortedMilestones.count - 1 {
|
||||
let current = sortedMilestones[i]
|
||||
let next = sortedMilestones[i + 1]
|
||||
let duration = next.value - current.value
|
||||
|
||||
print(" • \(current.key) → \(next.key): \(String(format: "%.3f", duration))s")
|
||||
}
|
||||
|
||||
// 检查是否有耗时过长的阶段
|
||||
checkPerformanceIssues()
|
||||
}
|
||||
|
||||
/// 检查性能问题
|
||||
private func checkPerformanceIssues() {
|
||||
let sortedMilestones = milestones.sorted { $0.value < $1.value }
|
||||
|
||||
for i in 0..<sortedMilestones.count - 1 {
|
||||
let current = sortedMilestones[i]
|
||||
let next = sortedMilestones[i + 1]
|
||||
let duration = next.value - current.value
|
||||
|
||||
if duration > 0.5 { // 超过500ms的阶段
|
||||
print("⚠️ 性能警告: \(current.key) → \(next.key) 耗时 \(String(format: "%.3f", duration))s")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// 获取启动总耗时
|
||||
func getTotalLaunchTime() -> Double {
|
||||
guard let startTime = milestones["app_launch_start"],
|
||||
let endTime = milestones["app_launch_complete"] else {
|
||||
return 0
|
||||
}
|
||||
return endTime - startTime
|
||||
}
|
||||
|
||||
/// 获取特定阶段耗时
|
||||
func getPhaseDuration(from startMilestone: String, to endMilestone: String) -> Double? {
|
||||
guard let start = milestones[startMilestone],
|
||||
let end = milestones[endMilestone] else {
|
||||
return nil
|
||||
}
|
||||
return end - start
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - 启动阶段常量
|
||||
extension LaunchPerformanceMonitor {
|
||||
enum LaunchPhase: String, CaseIterable {
|
||||
case appDidFinishLaunching = "app_did_finish_launching"
|
||||
case coreDataInitialized = "core_data_initialized"
|
||||
case languageManagerInitialized = "language_manager_initialized"
|
||||
case memoryMonitorInitialized = "memory_monitor_initialized"
|
||||
case facebookSDKInitialized = "facebook_sdk_initialized"
|
||||
case vasKitInitialized = "vas_kit_initialized"
|
||||
case contentViewAppeared = "content_view_appeared"
|
||||
case launchScreenHidden = "launch_screen_hidden"
|
||||
case appFullyReady = "app_fully_ready"
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,140 @@
|
||||
# 网络权限检查功能实现说明
|
||||
|
||||
## 功能概述
|
||||
|
||||
在 LaunchScreenView 中实现了网络权限检查功能,如果用户没有授权网络权限,应用会停留在启动界面并提示用户授权。
|
||||
|
||||
## 实现的功能
|
||||
|
||||
### 1. 网络权限管理器 (NetworkPermissionManager)
|
||||
|
||||
**文件位置**: `MyQrCode/Utils/NetworkPermissionManager.swift`
|
||||
|
||||
**主要功能**:
|
||||
- 使用 `NWPathMonitor` 实时监控网络状态
|
||||
- 提供网络权限检查方法
|
||||
- 支持打开系统设置页面
|
||||
- 发布网络状态变化通知
|
||||
|
||||
**核心属性**:
|
||||
```swift
|
||||
@Published var isNetworkAvailable = false // 网络是否可用
|
||||
@Published var isCheckingNetwork = true // 是否正在检查网络
|
||||
@Published var showNetworkPermissionAlert = false // 是否显示权限提示
|
||||
```
|
||||
|
||||
### 2. 网络权限请求界面 (NetworkPermissionView)
|
||||
|
||||
**主要组件**:
|
||||
- 网络图标 (wifi.slash)
|
||||
- 权限说明文本
|
||||
- 重新检查按钮
|
||||
- 打开设置按钮
|
||||
|
||||
**交互功能**:
|
||||
- 点击"重新检查"按钮重新检测网络状态
|
||||
- 点击"打开设置"按钮跳转到系统设置
|
||||
- 网络恢复后自动继续启动流程
|
||||
|
||||
### 3. 启动界面集成 (LaunchScreenView)
|
||||
|
||||
**修改内容**:
|
||||
- 添加网络权限检查逻辑
|
||||
- 集成 NetworkPermissionView
|
||||
- 支持网络权限获取后的回调
|
||||
|
||||
**启动流程**:
|
||||
1. 显示正常的启动动画 (2秒)
|
||||
2. 检查网络权限状态
|
||||
3. 如果网络不可用,显示权限请求界面
|
||||
4. 如果网络可用,继续启动流程
|
||||
|
||||
## 本地化支持
|
||||
|
||||
### 中文 (zh-Hans.lproj/Localizable.strings)
|
||||
```strings
|
||||
"network_permission_required" = "网络权限需要";
|
||||
"network_permission_description" = "应用需要网络权限来提供完整的服务功能";
|
||||
"check_network" = "重新检查";
|
||||
"checking_network" = "检查中...";
|
||||
"open_settings" = "打开设置";
|
||||
"initializing" = "正在初始化...";
|
||||
```
|
||||
|
||||
### 英文 (en.lproj/Localizable.strings)
|
||||
```strings
|
||||
"network_permission_required" = "Network Permission Required";
|
||||
"network_permission_description" = "The app needs network permission to provide complete service functionality";
|
||||
"check_network" = "Check Again";
|
||||
"checking_network" = "Checking...";
|
||||
"open_settings" = "Open Settings";
|
||||
"initializing" = "Initializing...";
|
||||
```
|
||||
|
||||
## 使用方式
|
||||
|
||||
### 在 MyQrCodeApp.swift 中的集成
|
||||
```swift
|
||||
LaunchScreenView {
|
||||
hideLaunchScreen()
|
||||
}
|
||||
```
|
||||
|
||||
### 网络权限检查流程
|
||||
1. 应用启动时显示启动界面
|
||||
2. 2秒后开始检查网络权限
|
||||
3. 如果网络不可用,显示权限请求界面
|
||||
4. 用户可以通过以下方式解决:
|
||||
- 点击"重新检查"按钮
|
||||
- 点击"打开设置"按钮跳转到系统设置
|
||||
- 手动开启网络连接
|
||||
5. 网络恢复后自动继续启动流程
|
||||
|
||||
## 技术特点
|
||||
|
||||
### 1. 实时网络监控
|
||||
- 使用 `NWPathMonitor` 进行实时网络状态监控
|
||||
- 支持网络状态变化的即时响应
|
||||
|
||||
### 2. 用户体验优化
|
||||
- 平滑的界面过渡动画
|
||||
- 清晰的权限说明和操作指引
|
||||
- 支持多语言本地化
|
||||
|
||||
### 3. 错误处理
|
||||
- 网络检查失败时的重试机制
|
||||
- 优雅的降级处理
|
||||
|
||||
### 4. 性能优化
|
||||
- 异步网络检查,不阻塞主线程
|
||||
- 合理的检查时机和频率
|
||||
|
||||
## 测试建议
|
||||
|
||||
### 1. 网络权限测试
|
||||
- 关闭设备网络连接,验证权限请求界面显示
|
||||
- 重新开启网络,验证自动继续启动流程
|
||||
- 测试"重新检查"和"打开设置"按钮功能
|
||||
|
||||
### 2. 多语言测试
|
||||
- 切换系统语言,验证界面文本正确显示
|
||||
- 测试中英文界面的布局和功能
|
||||
|
||||
### 3. 边界情况测试
|
||||
- 网络状态快速变化时的处理
|
||||
- 应用在后台时网络状态变化
|
||||
- 长时间无网络时的用户体验
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **网络权限说明**: iOS 应用默认具有网络访问权限,此功能主要用于检测网络连接状态
|
||||
2. **用户体验**: 权限请求界面设计简洁明了,避免用户困惑
|
||||
3. **性能影响**: 网络监控对性能影响很小,但建议在不需要时及时停止监控
|
||||
4. **兼容性**: 支持 iOS 15.6+ 系统版本
|
||||
|
||||
## 后续优化建议
|
||||
|
||||
1. **网络质量检测**: 可以添加网络质量检测,区分网络不可用和网络质量差
|
||||
2. **离线模式**: 可以考虑添加离线模式支持
|
||||
3. **网络状态缓存**: 可以缓存网络状态,减少重复检查
|
||||
4. **更多权限检查**: 可以扩展支持其他权限检查,如相机、相册等
|
Loading…
Reference in new issue