iOS 的远程配置
摆脱 App Store 批准流程两周的暴政!
许多开发者不知道,他们允许远程控制其应用程序的行为(前提是应用程序没有下载任何新代码)。
GroundControl 以一种极其简单的方式允许您远程配置应用程序,您可以添加如特性标志、即兴的A/B 测试或简单的“每日消息”。
它基于AFNetworking构建,并为NSUserDefaults
提供了一个类范畴(只需将 #import "NSUserDefaults+GroundControl.h"
添加到您想要使用的任何文件的顶部)。
该项目是系列开源库的一部分,涵盖了 iOS 应用程序基础设施的关键方面。请确保查看其姊妹项目:SkyLab,CargoBay,houston,和 Orbiter。
NSURL *URL = [NSURL URLWithString:@"http://example.com/defaults.plist"];
[[NSUserDefaults standardUserDefaults] registerDefaultsWithURL:URL];
...或者如果您需要成功/失败回调,并且不想监听 NSUserDefaultsDidChangeNotification
NSURL *URL = [NSURL URLWithString:@"http://example.com/defaults.plist"];
[[NSUserDefaults standardUserDefaults] registerDefaultsWithURL:URL
success:^(NSDictionary *) {
// ...
} failure:^(NSError *) {
// ...
}];
...或者如果您需要使用除了 GET 之外的 HTTP 方法,或者需要设置任何特殊头部,请指定一个 NSURLRequest
NSURL *URL = [NSURL URLWithString:@"http://example.com/defaults.plist"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
[[NSUserDefaults standardUserDefaults] registerDefaultsWithURLRequest:request
success:^(NSURLRequest *, NSHTTPURLResponse *, NSDictionary *) {
// ...
} failure:^(NSURLRequest *, NSHTTPURLResponse *, NSError *) {
// ...
}];
GroundControl 异步下载并读取一个远程的 plist 文件。这可以是一个静态文件,也可以是动态生成的,如下面的示例(也请参阅 example/server
中找到的完整 Sinatra 应用程序)。
require 'sinatra'
require 'plist'
get '/defaults.plist' do
content_type 'application/x-plist'
{
'Greeting' => "Hello, World",
'Price' => 4.20,
'FeatureXIsLaunched' => true
}.to_plist
end
from django.http import HttpResponse
import plistlib
def property_list(request):
plist = {
'Greeting': "Hello, World",
'Price': 4.20,
'FeatureXIsLaunched': True,
'Status': 1
}
return HttpResponse(plistlib.writePlistToString(plist))
var plist = require('plist'),
express = require('express')
var host = "127.0.0.1"
var port = 8080
var app = express()
app.use(app.router)
app.get("/", function(request, response) {
response.send(plist.build(
{
'Greeting': "Hello, World",
'Price': 4.20,
'FeatureXIsLaunched': true,
'Status': 1
}
).toString())
})
app.listen(port, host)
GroundControl 可在 MIT 许可证下使用。有关更多信息,请参阅 LICENSE 文件。