GroundControl:基于 AFNetworking 的 iOS 远程配置工具项目

Remote configuration for iOS

分支1Tags6
文件最后提交记录最后更新时间
6 年前
13 年前
10 年前
10 年前
13 年前
10 年前
13 年前
5 年前

地面控制站

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文件。

项目介绍

远程配置iOS设备【此简介由AI生成】

定制我的领域
891.94 K114访问 GitHub