All Projects → CleanCocoa → Betaexpiration

CleanCocoa / Betaexpiration

Licence: mit
Beta period expiration code and window decoration for macOS app development

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Betaexpiration

Looli
a tiny web framework
Stars: ✭ 45 (-11.76%)
Mutual labels:  framework
Bast
Simple but Elegant Web Framework
Stars: ✭ 49 (-3.92%)
Mutual labels:  framework
Home Assistant Js
🐝 JavaScript implementation of the Home Assistant API using NuclearJS
Stars: ✭ 50 (-1.96%)
Mutual labels:  framework
Hexmachina
Releases, issues, documentation, website of hexMachina, framework written in Haxe
Stars: ✭ 45 (-11.76%)
Mutual labels:  framework
Miraigo Template
A template for MiraiGo
Stars: ✭ 47 (-7.84%)
Mutual labels:  framework
Angel
A polished, production-ready backend framework in Dart for the VM, AOT, and Flutter.
Stars: ✭ 1,055 (+1968.63%)
Mutual labels:  framework
Aplay
A Better(Maybe) iOS Audio Stream、Cache、Play Framework
Stars: ✭ 44 (-13.73%)
Mutual labels:  framework
Lemon
🍋 Minimal and responsive CSS framework for fast building websites.
Stars: ✭ 51 (+0%)
Mutual labels:  framework
Royjs
Royjs is only 4.8kb mvvm framework for React
Stars: ✭ 49 (-3.92%)
Mutual labels:  framework
Generator Baukasten
Awesome!
Stars: ✭ 50 (-1.96%)
Mutual labels:  framework
Fbbot
Minimal framework/SDK for facebook messenger bots. BYOS (Bring Your Own Server)
Stars: ✭ 46 (-9.8%)
Mutual labels:  framework
Vsalert
An drop-in replacement for UIAlertController with more power and better looks.
Stars: ✭ 48 (-5.88%)
Mutual labels:  framework
Cefsharp
.NET (WPF and Windows Forms) bindings for the Chromium Embedded Framework
Stars: ✭ 8,440 (+16449.02%)
Mutual labels:  framework
Angular Bootstrap With Material Design
Angular Bootstrap with Material Design - Powerful and free UI KIT
Stars: ✭ 1,031 (+1921.57%)
Mutual labels:  framework
Danode
Small and flexible web server written using the D 2.0 language
Stars: ✭ 50 (-1.96%)
Mutual labels:  framework
Activity
A PHP API to log anything anywhere
Stars: ✭ 44 (-13.73%)
Mutual labels:  beta
Pnet
High level Java network library
Stars: ✭ 49 (-3.92%)
Mutual labels:  framework
Rest Control
Framework for testing and validation REST services
Stars: ✭ 51 (+0%)
Mutual labels:  framework
Mvvmrecurve
MVVM框架, 这个架构支持RestFul风格的Api和GraphQL,你可以根据自身需求添加recurve-retrofit2-support库(RestFul)或recurve-apollo-support库(GraphQL)实现相应的支持。 该架构同时使用纯Kotlin开发,但是你也可以在Java中使用它。
Stars: ✭ 51 (+0%)
Mutual labels:  framework
Vue Native Core
Vue Native is a framework to build cross platform native mobile apps using JavaScript
Stars: ✭ 8,366 (+16303.92%)
Mutual labels:  framework

BetaExpiration

Swift 5.0 Version License Platform

Example showing how to implement a usable expiring beta to macOS apps.

Setup

⚠️ It doesn't make sense to put the example setup directly into your project.

That's because you frequently will want to modify BetaExpiration.swift. The library code has a hard-coded expiration date. You will want to change this with ongoing releases. To make this a Carthage or CocoaPods library would be useless.

There are two variants that'll work:

  1. You can copy the files from the library over to your project.
  2. You can check the whole project out (as a git submodule, for example) and include it as a sub-project in your app.

Whatever you do, it's important that you can easily change the expiration date in BetaExpiration.swift.

Integration

  1. Hard code a new expiration date in BetaExpiration.expiresAt. You can compute the date by running the unit tests and looking at the console output.
  2. Change the alert in BetaExpiration.guardExpiration() to show your e-mail address.
  3. Call BetaExpiration.guardExpiration() from your AppDelegate. This will display an alert and quit the app if the beta period is over.
  4. Optional: Decorate your app window with useful information for your beta testers, see below.

Window decoration

The decoration is achieved by adding a NSTitlebarAccessoryViewController to the window. The format is as follows:

 β v1.2.0 (107) - 23 days left
     ^      ^     ^
     |      |     |__  = (today - expiration date)
     |      |
     |      |__ build number
     |
     |__ version

You get all of this by calling BetaExpiration.decorate(window:hostBundle:). The hostBundle should be your app's main Bundle because that'll include version and build number information.

Code License

Copyright (c) 2017-2019 Christian Tietze. Distributed under the MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].