See LICENSE.txt
for license.
All app source code and assets copyright © 2014-2019 by MyMonero. All rights reserved.
-
MyMoneroCore
: Bridged MyMonero JS app core crypto code via async Swift calls; implemented specific functionality in Swift to keep synchrony -
Persistence
,Lists
,Passwords
: Object encryption, document persistence, password management, and business object implementations nearly equivalent to MyMonero JS app with various improvements- Of note: This iOS app presently encrypts whole document; JS app encrypts values at specified keys. This can and possibly should be ported to to the JS app for simplicity.
-
OpenAlias
,DNSLookup
: DNS lookup of TXT record content for OpenAlias address resolution now implemented via zero-configuration system-level API (dnssd
) instead of via server API endpoint, enabling proper DNSSEC status validation -
UICommonComponents
WalletPicker
: Diverged from JS app and original design due to mobile-specific UI by implementing wallet picker as a custom keyboard rather than hovering dropdown list.ContactPicker
: Now manages display of any 'Detected' fields (address and payment ID), and now encapsulates actual OA lookup call so it's not repeated. This can/should be ported to the JS app.
-
There are still various namespacing improvements which can be made to the earlier Swift code and
Forms
- e.g.FormViewController
should becomeForms.ViewController
,FormInputField
should becomeForms.InputField
, etc. in the manner ofUICommonComponents/Details
.
-
Xcode
-
Cocoapods (installable with
sudo gem install cocoapods
) -
Node.JS and npm (to run
setup
script to buildMyMoneroCore
dependency JS bundle file)
-
Clone or download this repo.s
-
cd
into the repo directory. -
For development/bleeding edge: Run
git checkout develop
. -
Important: Run
./bin/setup
.-
This will set up
./Modules/MyMoneroCore
, download the required submodules, and do apod install
. -
NOTE: If you ever need to pull the latest submodule commits, you can run
bin/update_submodules
.
-
-
Open
./MyMonero.xcworkspace
in Xcode. -
Select the desired target device.
-
Build & run.
Please submit any bugs as Issues unless they have already been reported.
Suggestions and feedback are very welcome!
NOTE: Not every enhancement or GitHub issue which applies to this repository has been created in this repo in situations where the same item needs to be done for the MyMonero JS app as well. For a complete picture of open items for the iOS app, please also look at Issues labeled "All app platforms" on the JS app repo.
If you have an improvement to the MyMonero iOS app source code and would like to have your code considered for usage in the production MyMonero iOS app, we'll be happy to review any pull requests and ship your code in the production app.
The maintainer will merge nearly anything which is not destructive, which is on-brand from a design standpoint, and generally production-ready in terms of its code quality, case coverage, problem-solution fit, UI implementation parity with exact design, security, performance, et al. Contributors to the MyMonero iOS and JS apps frequently collaborate over IRC private message and in the #mymonero room on freenode.net (Come say hello!), so PR'd submissions do not have to be at all complete or perfect on their first submission. (To submit a draft PR for review, simply mark it as '[DO NOT MERGE]')
MyMonero Donation Address (XMR): 48yi8KBxh7fdZzwnX2kFCGALRcN1sNjwBHDfd5i9WLAWKs7G9rVbXNnbJTqZhhZCiudVtaMJKrXxmBeBR9kggBXr8X7PxPT
Proceeds from donations are used to fund development on the MyMonero back-end server (a performant version of which we soon™ plan to open-source for anyone to run their own server at home). Any remaining funds will go towards product (app UI) R&D, and hosting costs.
We try to credit each contributor in App Store release notes.
-
⛰
endogenic
(Paul Shapiro) Maintainer; Lead developer -
🔥
mds
(Matt Smith) Mobile app variant designer -
👑
john_alan
iOS Engineer / Implemented Preferences slider and switch control views