iOS base is a boilerplate project created by Rootstrap for new projects using Swift 5. The main objective is helping any new projects jump start into feature development by providing a handful of functionalities.
This template comes with:
- Complete API service class to easily communicate with REST services.
- Examples for account creation and Facebook integration.
- Useful classes to manage User and Session data.
- Secure way to store keys of your third party integrations.
- Handy helpers and extensions to make your coding experience faster and easier.
This App Template also contains other branches with specific features that may be of use to you:
- feature/observe_root_vc: Detecting when rootViewController gets loaded.
- feature/util_gradients: Helper methods to easily add color gradients.
- feature/paginated_collections: Adds paginated subclasses of UITableView and UICollectionView.
- feature/mvvm+rxswift in case you want to work with RxSwift and MVVM.
To use them simply download the branch and locally rebase against master/develop from your initial iOS base clone. Important: See steps below on how to install this features.
- Clone repo.
- Install desired extensions from their branches.
- Run
swift init.swift
from the recently created folder. - Initialize a new git repo and add your remote url.
- Done!
To manage user and session persistence after the original sign in/up we store that information in the native UserDefaults. The parameters that we save are due to the usage of Devise Token Auth for authentication on the server side. Suffice to say that this can be modified to be on par with the server authentication of your choice.
- Moya + Alamofire for easy and elegant connection with an API.
- IQKeyboardManagerSwift for auto-scrolling to current input in long views. Note: this pod is not fully working on iOS 11. Here is the issue we encountered and the meantime solution.
- KIF for UI testing.
- KIF/IdentifierTests to have access to accesibility identifiers.
- OHHTTPStubs/Swift for network testing.
- FBSDKCoreKit facebook pods dependency.
- FBSDKLoginKit for facebook login.
- In
info.plist
on the URL types array, findfbXXXXXXXXXXX
and replace it for the string "fb" + the ID of your app. i.e:fb435272928934
. - Change the
FacebookAppID
value for the same AppID that you replace above. - Change the
FacebookDisplayName
value for the name of the app on Facebook. - Done :)
In order to meet the required code quality standards, this project runs SwiftLint during the build phase and reports warnings/errors directly through XCode. The current SwiftLint rule configuration is based on Rootstrap's Swift style guides and is synced with the CodeCliemate's configuration file.
NOTE: Make sure you have SwiftLint version 0.35.0 or greater installed to avoid known false-positives with some of the rules.
We strongly recommend that all private keys be added to a .plist
file that will remain locally and not be committed to your project repo. An example file is already provided, these are the final steps to set it up:
- Rename the
ThirdPartyKeys.example.plist
file on your project so that it is calledThirdPartyKeys.plist
. To add a set of keys simply add a dictionary with the name you want the key to have and add the corresponding Debug, Staging and Release keys as items. - Remove the reference of
ThirdPartyKeys.plist
from XCode but do not delete the file. This way, you will keep the file locally(it is already in the .gitignore list) in the project directory. Note: Do NOT move the file from the current location, the script uses the $(PROJECT_DIR) directory. - Go to Product -> Scheme -> Edit scheme. Then select Pre-actions for the Build stage and make sure that the
Provided build setting
is set to your current target. Repeat this step for the Post-actions script. - Done :)
Lanes for each deployment target are provided with some basic behavior:
- Each target has two options:
build_x
andrelease_x
. - The
build
lane will just archive the app and leave the.ipa
ready for upload. - The
release
lane will:- Check the repo status (it has to be clean, with no pending changes)
- Increment the build number.
- Tag the new release and push it to the set branch (dev and staging push to develop and production to master by default, but it's configurable).
- Build the app.
- Generate a changelog from the commit diff between this new version and the previous.
- Upload to testflight and wait until it's processed.
Check the Appfile
and Fastfile
for more information.
iOS-Base is available under the MIT license. See the LICENSE file for more info.
NOTE: Remove the free LICENSE file for private projects or replace it with the corresponding license.
iOS Base is maintained by Rootstrap with the help of our contributors.