This project is becoming widely adopted and its growth is now limited by the time the main maintainer can allocate.
Going forward, the aim is to transfer some of the maintainance and development effort to the community.
If you want to help developing SwiftyStoreKit, please look for issues marked with a blue contributions welcome label. See this issue for an example.
The maintainer will use this label initially for simple tasks that are appropriate for beginners and first time contributors.
As the project and its community grows:
Note: While the maintainer(s) try to regularly keep the project alive and healthy, issues and pull requests are not always reviewed in a timely manner. 🕰
SwiftyStoreKit aims to be a lightweight wrapper on top of StoreKit.
While SwiftyStoreKit offers access to the local receipt data, it is a non-goal to add support for persisting IAP data locally. It is up to clients to do this with a storage solution of choice (i.e. NSUserDefaults, CoreData, Keychain).
Swift Version: SwiftyStoreKit includes Swift 2.3 and Swift 2.2 branches. These legacy versions are no longer maintained and all active development happens on master and develop, which support Swift 3.x and Swift 4.x.
Objective-C: Currently, SwiftyStoreKit cannot be used in Objective-C projects. The main limitation is that most classes and types in the library are Swift-only. See related issue.
The project uses gitflow as a branching model.
In short:
develop
branch.master
and develop
.develop
into master
and create a release tag as new features are added.These are intermediate / advanced tasks that will hopefully be implemented in the future:
SwiftyStoreKit offers a reference implementation for receipt validation with Apple.
This could be extended by implementing local receipt validation as recommended by Apple. See related issue.
See related issue.
The payment flows are unit tested fairly extensively. Additional unit test coverage is welcome:
See related issue.
If SwiftyStoreKit doesn't work as you expect, please review any open issues before opening a new one.