baseauth 弹框_隐私权限弹框的使用说明

背景

监管部门要求在用户点击隐私协议弹框中“同意” 按钮之前,App 不可以调用相关敏感API。为应对此监管要求,mPaaS iOS 10.1.60.27 以上(60 版本) 和 10.1.32.18 以上(32 版本)的基线提供了支持,请您根据实际情况参考本文对工程进行改造。

使用方法

根据是否让 mPaaS iOS 框架托管 App 的生命周期,需要采用不同的使用方法。通过查看工程 main.m 文件中是否启用了框架的 DFApplication 和 DFClientDelegate,可以判断是否让 mPaaS iOS 框架托管了 App 的生命周期;启用了框架的 DFApplication 和 DFClientDelegate即表示进行了托管。

returnUIApplicationMain(argc,argv,@"DFApplication",@"DFClientDelegate");// NOW USE MPAAS FRAMEWORK

框架托管App生命周期

1. 允许隐私弹框提示

在 MPaaSInterface category中重写以下 enablePrivacyAuth 接口方法,并返回 YES。

820e62f2170cfc67db81573d320b0e2e.png

**代码示例**

```objectivec

@implementation MPaaSInterface (Portal)

- (BOOL)enablePrivacyAuth

{

return YES;

}

@end

```

2. 实现权限弹框

重写框架提供的- (DTFrameworkCallbackResult)application:(UIApplication *)application privacyAuthDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions completionHandler:(**void** (^)(**void**))completionHandler;方法。

abd310789c68dc841ad19b482af749ac.png

代码示例

```objectivec

- (DTFrameworkCallbackResult)application:(UIApplication *)application privacyAuthDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions completionHandler:(void (^)(void))completionHandler

{

UIWindow *authWindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

authWindow.backgroundColor = [UIColor redColor];

authWindow.windowLevel = UIWindowLevelStatusBar+5;

AuthViewController *vc = [[AuthViewController alloc] init];

vc.completionHandler = completionHandler;

vc.window = authWindow;

authWindow.rootViewController = vc;

[authWindow makeKeyAndVisible];

return DTFrameworkCallbackResultContinue;

}

```

3. 启动 mPaaS 框架

在用户点击 同意 授权后,回调 completionHandler,继续启动 mPaaS 框架。示例代码如下所示。

#import

NS_ASSUME_NONNULL_BEGIN

@interfaceAuthViewController:UIViewController

@property(nonatomic,copy)void(^completionHandler)(void);

@property(nonatomic,strong)UIWindow*window;

@end

NS_ASSUME_NONNULL_END

#import "AuthViewController.h"

@interfaceAuthViewController()

@end

@implementationAuthViewController

-(void)viewDidLoad{

[superviewDidLoad];

// Do any additional setup after loading the view.

[selfshowAlertWithTitle:@"隐私权限"];

}

-(void)showAlertWithTitle:(NSString*)title

{

if([title length]>0){

UIAlertView*alert=[[UIAlertViewalloc]initWithTitle:title

message:nil

delegate:self

cancelButtonTitle:@"取消"

otherButtonTitles:@"确定",nil];

[self.window makeKeyWindow];

[alert show];

}

}

-(void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

{

if(buttonIndex==1){

if(self.completionHandler){

self.completionHandler();

self.window.rootViewController=nil;

self.window=nil;

}

}else{

exit(0);

}

}

@end

4. 手动初始化容器 Context

如果您集成了 H5 容器和离线包、小程序组件,则需要在 - (void)application:(UIApplication *)application afterDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中手动初始化容器 Context。代码示例如下。

-(void)application:(UIApplication*)application afterDidFinishLaunchingWithOptions:(NSDictionary*)launchOptions

{

...

// 初始化容器Context

[MPNebulaAdapterInterfacesetNBContextWhenEnablePrivacyAuth];

...

}

非框架托管App生命周期

1. 支持隐私弹框

在 MPaaSInterface category 中重写 enableUserOverWriteAuthAlert 接口方法,并返回相关隐私权限状态。

17dfa06fba845b74c4473f76f4749e3e.png

代码示例

@implementationMPaaSInterface(mPaaSdemo)

-(BOOL)enableUserOverWriteAuthAlert{

// 如果隐私条款用户已经点过“同意”,这里返回“NO”,表示 mPaaS 组件可以正常调用相关 API。

// 反之,返回 “Yes”,mPaaS 组件会 hold 住相关 API 调用。

return![[NSUserDefaultsstandardUserDefaults]boolForKey:@"xx_pr"];

}

@end

2. 阻止提前上报日志埋点

如果接入过埋点相关组件,需要在启动流程中额外调用 MPAnalysisHelper holdUploadLogUntilAgreed 方法,来阻止提前上报日志埋点。

说明:可通过是否有 APRemoteLogging.framework 来判断是否接入过埋点相关组件。

代码示例(推荐在尽量早的时机调用)

b876d00bd389fa704f6bafee96633516.png

3. 手动初始化容器 Context

如果您集成了 H5 容器和离线包、小程序组件,则需要在 - (void)application:(UIApplication *)application afterDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中手动初始化容器 Context。代码示例如下。

-(void)application:(UIApplication*)application afterDidFinishLaunchingWithOptions:(NSDictionary*)launchOptions

{

...

// 初始化容器Context

[MPNebulaAdapterInterfacesetNBContextWhenEnablePrivacyAuth];

...

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值