Author: nurnachman
Software Developer, Love Cats.
Garlic – A drag-n-drop Remote Configuration Framework for iOS (objective-c)
Features:
- Easy 1-line integration
- ZERO libraries required (not even AFNetworking!)
- Remote feature flags
- Local settings fallback
- Custom remote settings
- Force updates
- No collisions with other frameworks
Setup:
In most cases, you want to load remote settings either in the lifecycle events in your AppDelegate or ViewController, or anywhere else you like:
- #import “Garlic.h”
- Init and setup Garlic with a remote settings plist URL and a completion block: [[Garlic sharedInstance] setupWithRemoteConfigURL:@”{{your-remote-settings-plist-url-here.com}}” completionHandler:^(void){ // code to run when setup was done }
Force update:
Determine if the app should be updated, based on build numbers
if ([[Garlic sharedInstance] shouldForceUpdateApp]) { // ask user to update app }
Feature flags:
Check if a feature should be activated
if ([[Garlic sharedInstance] shouldAllowFeature:@”{{your-feature-name-here}}”]) { // show the button/menu that enables that feature}
Custom values:
Get remote values for your custom purposes
NSString *tipOfTheDay = [[Garlic sharedInstance] getSettingForKey:@”TipOfTheDay-2015-11-27″]
Future features:
- Force synchronous url request
- Load settings from JSONs and XMLs, in addition to plists
- POST remote settings: change remote settings in the server when shaking the device
- Web-based remote settings editor
- Push updates: engage a remote settings update using a push notification
- Targeted Feature Flags: toggle features for specific user IDs, geolocations, device models..
Made with ❤ by Nur Nachman – nur.xyz
Copy to clipboard
While working on the Baking Blogger’s special characters panel, I needed a way to copy the selected character to the clipboard. I used the following technique:
import java.awt.Toolkit;
import java.awt.datatransfer.*;
TextTransfer clipBoard = new TextTransfer();
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, this);
clipBoard.setClipboardContents(button4.getText());
class TextTransfer implements ClipboardOwner {
@Override
public void lostOwnership(Clipboard clipboard, Transferable contents) {
}
public void setClipboardContents(String aString) {
StringSelection stringSelection = new StringSelection(aString);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, this);
}
}
Start with writing a class that implements the ClipboardOwner interface. This enforces you to implement the method setClipaordContents(String string){}