The main repo for the O3 wallet on iOS.git
下载 OzoneWalletIOS 项目到本地:github
下载 OzoneWalletIOS 项目swift
用 Xcode 打开项目并运行:api
运行出错缓存
缺乏文件网络
运行出错,发现缺乏文件。打开项目目录,发现有这两个文件 Cartfile
、Cartfile.resolved
:app
Cartfile 文件ui
该项目是用 Carthage 管理 iOS 依赖库的,安装使用方法看这里,若是安装不成功请下载 Releases 版本进行安装。spa
打开终端,cd 到该项目目录,运行以下命令:3d
$ carthage update --platform iOS
$ carthage update –platform iOS 命令
缺乏的文件已下载完成
命令运行成功以后,再次运行项目:
info.plist 文件错误
发现 info.plist 文件读取错误,没法打开。个人解决方法是,新建一个 Project,而后把新工程里的 info.plist 文件拷贝到该项目里替换掉,而后再次运行:
Reason image not found 错误
在 Finder 里前往文件夹 ~/Library/Developer/Xcode/DerivedData
,删除缓存目录下的文件 :
删除缓存目录下的文件
再次运行,发现仍是一样的错误,后来发现新加的一个库文件 AutoInsetter
没有加进去:
*** Building scheme "AutoInsetter" in AutoInsetter.xcworkspace
添加库文件 1
添加库文件 2
添加好后再次运行:
“networkKey” 出错
这个错误不知道怎么分析,全局搜索了一下“ networkKey”,发现是跟用户数据有关,后来总体看了一下项目,而后把项目的 Main Interface 改了一下:
修改 Main Interface
再一次运行:
Info.plist 文件缺乏 Fabric 字段 1
Info.plist 文件缺乏 Fabric 字段 2
开启 Background Modes:
开启 Background Modes
向 Info.plist 文件添加 Fabric
字段,包含一个 String
类型的 APIKey
和一个 Array
类型的 Kits
:
QQ20180131-144207@2x.png
好了,再次运行:
模拟器运行界面
终于运行成功了!!!/(ㄒoㄒ)/~~
Channel.framework 大概是跟推送通知有关的库:
func setupChannel() { //O3 Development on Channel app_gUHDmimXT8oXRSpJvCxrz5DZvUisko_mliB61uda9iY Channel.setup(withApplicationId: "app_gUHDmimXT8oXRSpJvCxrz5DZvUisko_mliB61uda9iY") }
设置应用的外观样式:
func setupApperances() { UIBarButtonItem.appearance().setTitleTextAttributes([ NSAttributedStringKey.font: ThemeManager.barButtonItemFont, NSAttributedStringKey.foregroundColor: UserDefaultsManager.theme.primaryColor], for: .normal) UINavigationBar.appearance().largeTitleTextAttributes = [ NSAttributedStringKey.foregroundColor: UserDefaultsManager.theme.textColor, NSAttributedStringKey.font: UIFont(name: "Avenir-Heavy", size: 32) as Any] }
建立用户的默认配置:
func registerDefaults() { let userDefaultsDefaults: [String: Any] = [ "networkKey": "main", "usedDefaultSeedKey": false, "selectedThemeKey": Theme.light.rawValue ] UserDefaults.standard.register(defaults: userDefaultsDefaults) }
开启网络状态监测:
let alertController = UIAlertController(title: "Uh oh! There is no internet connection. ", message: nil, preferredStyle: .alert) @objc func reachabilityChanged(_ note: Notification) { switch reachability.connection { case .wifi: print("Reachable via WiFi") alertController.dismiss(animated: true, completion: nil) case .cellular: print("Reachable via cellular") alertController.dismiss(animated: true, completion: nil) case .none: print("Network not reachable") UIApplication.shared.keyWindow?.rootViewController?.presentFromEmbedded(alertController, animated: true, completion: nil) } } let reachability = Reachability()! func setupReachability() { NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged(_:)), name: .reachabilityChanged, object: nil) do { try reachability.startNotifier() } catch { print("could not start reachability notifier") } }
检查本地是否存在钱包,若是存在就将主窗口设置为登陆到本地钱包的界面:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { Fabric.with([Crashlytics.self]) self.registerDefaults() self.setupChannel() self.setupApperances() self.setupReachability() //check if there is an existing wallet in keychain //if so, present LoginToCurrentWalletViewController let walletExists = UserDefaultsManager.o3WalletAddress != nil if walletExists { let login = UIStoryboard(name: "Onboarding", bundle: nil).instantiateViewController(withIdentifier: "LoginToCurrentWalletViewController") if let window = self.window { window.rootViewController = login } } return true }
欢迎留言讨论,有错误请指出,谢谢!
【联系我(QQ:3500229193)或者加入社群,请戳这里!】
做者:AlleniCoder 连接:https://www.jianshu.com/p/85a05c70c6fd 來源:简书 简书著做权归做者全部,任何形式的转载都请联系做者得到受权并注明出处。