Remote configuration for iOS
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 6 年前 | ||
| 13 年前 | ||
| 10 年前 | ||
| 10 年前 | ||
| 13 年前 | ||
| 10 年前 | ||
| 13 年前 | ||
| 5 年前 |
以下内容由 AI 翻译,如有问题请 点此提交 issue 反馈
地面控制站
iOS 远程配置
注意:此项目已不再维护。
许多开发者可能不知道,他们可以在不下载新代码的情况下远程控制应用程序的行为。
地面控制站提供了一种简单直接的方法来远程配置你的应用,使你可以添加诸如特性标志、即兴A/B测试或者一个简单的"每日提示信息"等功能。
它基于AFNetworking,并在NSUserDefaults上提供了一个单一类别(只需在任何你想使用它的文件顶部添加#import "NSUserDefaults+GroundControl.h"即可)。
客户端代码
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 *) {
// ...
}];
服务器代码
地面控制站异步下载并读取远程plist文件。这可以是静态文件,也可以动态生成,如下例所示(还可以查看example/server中的完整Sinatra应用程序):
Ruby
require 'sinatra'
require 'plist'
get '/defaults.plist' do
content_type 'application/x-plist'
{
'Greeting' => "你好,世界",
'Price' => 4.20,
'FeatureXIsLaunched' => true
}.to_plist
end
Python
from django.http import HttpResponse
import plistlib
def property_list(request):
plist = {
'Greeting': "你好,世界",
'Price': 4.20,
'FeatureXIsLaunched': True,
'Status': 1
}
return HttpResponse(plistlib.writePlistToString(plist))
Node.js
var plist = require('plist'),
express = require('express')
var host = "127.0.0.1"
var port = 8080
var app = express()
app.get("/", function(request, response) {
response.send(plist.build(
{
'Greeting': "你好,世界",
'Price': 4.20,
'FeatureXIsLaunched': true,
'Status': 1
}
).toString())
})
app.listen(port, host)
许可证
地面控制站遵循MIT许可证。更多信息请参阅LICENSE文件。