O3(OzoneWalletIOS)项目

The main repo for the O3 wallet on iOS.

下载 OzoneWalletIOS 项目

下载 OzoneWalletIOS 项目到本地:

下载 OzoneWalletIOS 项目

 

用 Xcode 打开项目并运行:

运行出错

 

缺少文件

 

运行出错,发现缺少文件。打开项目目录,发现有这两个文件 CartfileCartfile.resolved

Cartfile 文件

 

该项目是用 Carthage 管理 iOS 依赖库的,安装使用方法看这里,如果安装不成功请下载 Releases 版本进行安装。

打开终端,cd 到该项目目录,运行如下命令:

$ 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ㄒ)/~~

AppDelegate.swift

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
    }

Onboarding.storyboard

OnboardingHomeViewController.swift

总结

欢迎留言讨论,有错误请指出,谢谢!

【联系我(QQ:3500229193)或者加入社群,请戳这里!】

参考链接

更新日志

  • 2018.02.02 第一次更新
  • 2018.02.23 第二次更新
  • 2018.08.07 第三次更新

作者:AlleniCoder
链接:https://www.jianshu.com/p/85a05c70c6fd
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值