PokeMap is a companion app for Pokemon Go. PokeMap allows you to track Pokemon locations by navigating a map or by sending you local notifications for watchlisted Pokemons near you!
Run the following two commands to install Xcode's command line tools and bundler, if you don't have that yet.
[sudo] gem install bundler
xcode-select --install
The following commands will clone the repo and install all the required dependencies.
git clone https://github.com/PokeMapCommunity/PokeMap-iOS.git
cd PokeMap-iOS
bundle install
bundle exec pod install
Now you can open PokeMap.xcworkspace
and Run the PokeMap
target onto your simulator or iOS device.
You can also run the tests by calling:
bundle exec fastlane ios test
This project will follow the GitHub Swift Styleguide in every way possible.
In order to enforce this, the project will also have a Swiftlint build phase to run the linter everytime the app is built.
Variable naming conventions will be ignored whenever a RxSwift-based variable is created (as the naming convention of the library is to start it with rx_ (e.g. rx_contentOffset
).
The project follows this folder structure:
PokeMap
├── App
│ └── AppDelegate
├── Enums
├── Extensions
├── Externals
├── Globals
├── Helpers
├── Models
├── Networking
├── Protocols
├── Resources
│ ├── LaunchScreen.storyboard
│ ├── Localizable.strings
│ └── Info.plist
├── Structs
├── ViewControllers
│ └── Main
│ └── Main.storyboard
├── ViewModels
└── Views
In order to enforce it to the filesystem we're using Synx to keep the folder structures clean and mirroring the project structure.
- ObjectMapper: Simple JSON Object mapping written in Swift
- DateTools: Dates and times made easy in Objective-C
- RxSwift: Reactive Programming in Swift
- NSObject+Rx: Handy RxSwift extensions on NSObject, including rx_disposeBag
- Cell+Rx: Handy RxSwift extensions on UITableViewCell and UICollectionViewCell, including rx_reusableDisposeBag
- RxOptional: RxSwift extensions for Swift optionals and "Occupiable" types
- RxDataSources: Table and Collection View Data Sources for RxSwift
- Moya: Network abstraction layer written in Swift
- Moya-ObjectMapper: ObjectMapper bindings for Moya and RxSwift
- Result: This is a Swift µframework providing Result
- RxAlamofire: RxSwift wrapper around the elegant HTTP networking in Swift Alamofire
- SDWebImage: Asynchronous image downloader with cache support as a UIImageView category
None at the moment
None at the moment
- SwiftLint: A tool to enforce Swift style and conventions.
- Fabric: Fabric is a mobile platform with modular kits you can mix and match to build the best apps
- Crashlytics: The most powerful, yet lightest weight crash reporting solution
- Synx: A command-line tool that reorganizes your Xcode project folder to match your Xcode groups
- Fastlane: The easiest way to automate building and releasing your iOS and Android apps
- Quick: The Swift (and Objective-C) testing framework.
- Nimble: A Matcher Framework for Swift and Objective-C
In order to run the tests execute:
bundle exec fastlane ios tests
We are using Travis alongside Fastlane to perform continuous integration both by unit testing and deploying to Fabric or iTunes Connect later on.
To make sure Fabric and iTunes can deploy, make sure you have them set to something similar to the following environment variables. The values are only examples!.
POKEMAP_SIGNING_IDENTITY_DEV
: iPhone Developer: Ivan Bruel (ID)POKEMAP_FABRIC_CLIENT_ID
: API Key from Fabric OrganizationPOKEMAP_FABRIC_SECRET
: Build Secret from Fabric Organization
POKEMAP_SIGNING_IDENTITY_PROD
: iPhone Distribution: Company Name (ID)POKEMAP_ITUNES_TEAM_ID
: Team ID from iTunes Membership
Although all the deployment is done through Travis, you can do it manually through Fastlane:
bundle exec fastlane ios fabric
bundle exec fastlane ios itunes