热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

O3(OzoneWalletIOS)项目

2019独角兽企业重金招聘Python工程师标准ThemainrepofortheO3walletoniOS.OzoneWalletIOS:https:gith

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

The main repo for the O3 wallet on iOS.

  • OzoneWalletIOS:https://github.com/CityOfZion/OzoneWalletIOS
  • neo-swift:https://github.com/CityOfZion/neo-swift
  • neo-wallet-address-go:https://github.com/apisit/neo-wallet-address-go

下载 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_mliB61uda9iYChannel.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 LoginToCurrentWalletViewControllerlet walletExists = UserDefaultsManager.o3WalletAddress != nilif 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)或者加入社群,请戳这里!】

参考链接

  • OzoneWalletIOS:https://github.com/CityOfZion/OzoneWalletIOS
  • neo-swift:https://github.com/CityOfZion/neo-swift
  • neo-wallet-address-go:https://github.com/apisit/neo-wallet-address-go

更新日志

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

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


转:https://my.oschina.net/u/4005186/blog/2999431



推荐阅读
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 有没有一种方法可以在不继承UIAlertController的子类或不涉及UIAlertActions的情况下 ... [详细]
author-avatar
粉雪琪的天涯
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有