如何集成华为AGC远程配置- iOS

简介

AppGallery Connect远程配置服务提供了在线的配置参数管理能力,可以实现应用在线更改行为和外观,而无需用户下载应用更新。

AppGallery Connect远程配置服务提供云端服务,管理台和客户端SDK,应用集成客户端SDK后可以定期获取远程配置管理台配置下发的参数值,实现客户端行为和UI的修改。

开通服务

1、登录AppGallery Connect网站,点击“我的项目”。

2、在项目列表中找到您的项目,在项目下的应用列表中选择需要开通远程配置服务的应用。

cke_584.png

3、进入“增长 > 远程配置”,如果远程配置服务未开通,请点击“立即使用”,开通远程配置服务。

cke_585.png

集成SDK

针对Xcode开发环境,您可以通过Cocoapods集成方式将远程配置SDK集成到您的Xcode开发环境中。

1、在Xcode项目中添加当前应用的AppGallery Connect配置文件。

   a.登录AppGallery Connect网站,点击“我的项目”。

   b.在项目列表中找到您的项目,在项目下的应用列表中选择您需要集成SDK的应用。

   c.点击“项目设置”中“应用”栏下的“agconnect-services.plist”下载配置文件。

   d.将“agconnect-services.plist”文件拷贝到应用级根目录下。

cke_586.png

2、创建Podfile文件,打开命令行窗口,导航至Xcode项目所在的位置,创建Podfile文件。如果已经存在,可跳过本步骤。

cd project-directory

pod init

3、编辑Podfile文件,增加pod依赖pod ‘AGConnectRemoteConfig’。

target 'AGRemoteDemo' do

pod 'AGConnectRemoteConfig'

end

4、安装pod,然后打开.xcworkspace文件查看该项目。

pod install

界面设计

本次Codelab中,您可以在Xcode工程中创建一个布局页面,参照下图进行UI设计,新增三个Button。第一个按钮获取远程配置并立刻生效,第二个按钮获取远程配置并在下一次打开生效,第三个按钮可清空之前所有的参数值,将设置的默认值、云端参数值全部都清除:

cke_587.png

设置应用内默认值

您可以在远程配置对象中设置应用程序内的默认值,以便您的应用程序在连接到远程配置服务之前按照预期运行。如果云端未设置参数值,则可以使用本地默认值。

NSDictionary *defaultConfig = @{@"test1":@"value1", @"test2":@(2)}; 
[[AGCRemoteConfig sharedInstance] applyDefaults:defaultConfig];

设置云端配置值

1、登录AppGallery Connect网站,点击“我的项目”。

2、在项目列表中找到您的项目,在项目下的应用列表中选择您的应用。

3、在“增长”菜单下选择“远程配置”,此时页签选中“配置项管理”,点击“添加配置项”按钮。

cke_588.png

4、在添加配置项页填入配置默认值名称和默认值,即通过SDK获取的远程配置的key和value。点击“保存配置项”,返回远程配置页点击“发布”。

cke_589.png

功能开发

1、初始化AGConnectCore SDK。在项目的AppDelegate.m文件中导入头文件并添加初始化代码。

#import "AppDelegate.h"  
#import <AGConnectCore/AGConnectCore.h> 
@implementation AppDelegate  
- (BOOL)Application:(UIApplication *)Application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
     // Override point for customization after Application launch.  
     [AGCInstance startup];//初始化 
     return YES;  
}  
...  
@end

2、获取数据后立即生效,我们在Model1按钮跳转的新页面中,使用NSDictionary对象作为默认值。再获取云端配置项,调用fetch接口获取AGCConfigValues值,并在返回的Callback中调用apply接口,使其立刻生效。

#import "FirstModeViewController.h" 
#import <AGConnectRemoteConfig/AGConnectRemoteConfig.h> 
@implementation FirstModeViewController 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
     
    NSDictionary *defaultConfig = @{@"test1":@"value1", @"test2":@(2)}; 
    [[AGCRemoteConfig sharedInstance] applyDefaults:defaultConfig]; 
     
    [[[[AGCRemoteConfig sharedInstance] fetch] addOnSuccessCallback:^(AGCConfigValues * _Nullable result) { 
        [[AGCRemoteConfig sharedInstance] apply:result]; 
        [self showAllValue]; 
        NSLog(@"fetch successful"); 
    }] addOnFailureCallback:^(NSError * _Nonnull error) { 
        NSLog(@"fetch failed"); 
    }]; 
} 
  
- (void)showAllValue { 
    NSDictionary *val = [[AGCRemoteConfig sharedInstance] getMergedAll]; 
    _label.text = [val description]; 
} 
@end

3、获取数据后下次启动生效,在Model2按钮跳转的页面里设置默认值。调用apply方法传入上次fetch的AGCConfigValues数据使其生效。这种方式可以无需异步等待即可使用最新的值。

#import "SecondModeViewController.h" 
#import <AGConnectRemoteConfig/AGConnectRemoteConfig.h> 
@implementation SecondModeViewController 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
     
    NSDictionary *defaultConfig = @{@"test1":@"value1", @"test2":@(2)}; 
    [[AGCRemoteConfig sharedInstance] applyDefaults:defaultConfig]; 
     
    AGCConfigValues *lastFetchedConfig = [[AGCRemoteConfig sharedInstance] loadLastFetched]; 
    [[AGCRemoteConfig sharedInstance] apply:lastFetchedConfig]; 
    [self showAllValue]; 
     
    [[[[AGCRemoteConfig sharedInstance] fetch] addOnSuccessCallback:^(AGCConfigValues * _Nullable result) { 
        NSLog(@"fetch successful"); 
    }] addOnFailureCallback:^(NSError * _Nonnull error) { 
        NSLog(@"fetch failed"); 
    }]; 
} 
- (void)showAllValue { 
    NSDictionary *val = [[AGCRemoteConfig sharedInstance] getMergedAll]; 
    _label.text = [val description]; 
} 
@end

4、在清除按钮的点击事件里调用clearAll方法,可以清空之前所有的参数值,将设置的默认值、云端参数值全部都清除。

#import "ViewController.h" 
#import "FirstModeViewController.h" 
#import "SecondModeViewController.h" 
#import <AGConnectRemoteConfig/AGConnectRemoteConfig.h> 
@implementation ViewController 
...  
- (IBAction)ClearDataButtonTapped:(id)sender { 
    [[AGCRemoteConfig sharedInstance] clearAll]; 
} 
...  
@end

打包测试

1、点击配置项名称test1的卡片右上角“操作”,选择“修改”,修改默认值,点击“保存配置项”并发布。

cke_590.png

2、点击Xcode运行按钮,在手机或模拟器上运行应用。打开应用点击Model1按钮,可以看到获取的刚修改的远程配置项的值。

cke_591.png

3、点击清除按钮,之前所有的参数值被清除。第一次点击Model2按钮显示应用内设置默认值。返回重新点击Model2按钮,apply方法传入上次拉取的云端配置值,此时显示上文刚修改的远程配置项的值。

cke_592.pngcke_593.png

恭喜您

祝贺您,您已经成功地构建了您的第一个集成AGC远程配置服务的应用程序,并学到了如何在AGC控制台设置云端配置值。您也可以在AGC上添加不同类型的远程配置数据,然后在APP上查看。

参考文档

远程配置API参考

欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh
 

{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/u/4478396/blog/5551173