- Supported OS Versions
- Supported Devices
- Development Tools
- Codesigning
- Dependency Management
- Coding Conventions
- Apple Guidelines
- .gitignore
- Test-Driven Development
- Automated Builds
- Crash Logs
- Best Practices
- Distributing To AppStore
- iOS 8.1+
- iOS 9.x
- watchOS 2.0+
- tvOS 9.0+
We support:
- iPhones:
- iPhone 4S
- iPhone 5, iPhone 5C, iPhone 5S
- iPhone 6, iPhone 6 Plus
- iPhone 6s, iPhone 6s Plus
- iPads:
- iPad 2, iPad 3, iPad 4
- iPad Air, iPad Air 2
- iPad Mini 1st generation, iPad Mini Retina
- iPad Pro
- iPods:
- iPod 5th generation
- iPod 6th generation
- Swift 2.1+ (preferred)
- Objective-C
- xCode 7.2+
- Homebrew for package management (not MacPorts)
- If you need to manage Ruby environment, prefer rbenv to rvm. System Ruby is OK for iOS development needs, though.
- Never revoke certificates yourself, ask Team Leader to do that if needed.
- Never use "Fix Issue" option of xCode when you experience any issue with certificate (but you can use it for provisioning profile issues).
- Use MLSDev development certificate for running apps which do not use Push Notifications.
- For testing Push Notifications use client's development certificate.
- Follow Provisioning Portal Naming Conventions (profiles, certificates and devices)
- Use match from Fastlane for generating development and distribution certificates as well as provisioning profiles. When generating certificates, specify not empty password, other way you won't be able to open certificate by tools like Knuff.
Use CocoaPods to add third-party components (frameworks, libraries) to your project. Use frameworks, not static libraries, for dependencies. This is done by calling use_frameworks!
method in Podfile
.
Pods
directory is considered a build artefact, and therefore should be added to .gitignore
.
Podfile.lock
file should be committed to repository, along with .xcworkspace file.
Strictly follow these guidelines:
- AppStore Review Guidelines
- iOS Human Interface Guidelines
- watchOS Human Interface Guidelines
- tvOS Human Interface Guidelines
https://www.gitignore.io/api/swift
Use XCTest for unit tests
Matcher Frameworks:
Mocking Frameworks(Objective-C):
- OCMock
- OCMockito
- OHHTTPStubs
- KIF for functional tests
- Use fastlane for app building and submission
- Make schemes shared and commit them to repository
- Before submitting build, all unit tests must pass. If even 1 test is failing, build should also fail
- Stable builds are made in the end of each development cycle (Iteration, Sprint, Milestone etc)
- Access should be given to developers, testers, managers and client team
- Apple's Testflight is preferred service for delivering beta builds
- There should be 2 types of builds - nightly and stable
Use Fabric for crash logs.
- AFNetworking 2.x+ for networking - Objective-C
- EasyMapping for JSON parsing - Objective-C
- Alamofire + AlamofireImage + SwiftyJSON for networking and parsing - Swift
- CoreData for app local database (TBD: links to useful articles, about background context for example)
- Use Knuff for testing push notifications.
- Do not store push certificates in repository.
- Use development certificate for debug builds and production certificate for release builds.
- Create app user interface in Interface Builder, using XIBs or Storyboards. Custom UIView creation in a source code files is undesirable.
- Avoid big Storyboards. Split Storyboards into smaller ones. More than 7-8 ViewControllers in one Storyboard are unacceptable. Use Storyboard references in XCode 7 to refactor large storyboards into small ones.
- Do not let UIViewController subclasses grow to more than 400 lines of code. Always try to keep them simple and short, preferably under 100 lines of code.