全部产品
Search
文档中心

Mobile Platform as a Service:Izin Privasi

更新时间:Jun 24, 2025

Latar Belakang

Otoritas pengatur mewajibkan aplikasi untuk tidak memanggil API relevan yang sensitif sebelum pengguna mengeklik tombol "Setuju" di jendela perjanjian privasi. Untuk memenuhi persyaratan ini, versi dasar mPaaS iOS 10.1.60.27 dan yang lebih baru (versi seri 60) serta 10.1.32.18 dan yang lebih baru (versi seri 32) mendukung fitur ini. Anda dapat memodifikasi proyek sesuai kebutuhan dengan merujuk pada dokumen ini.

Penggunaan

Metode penggunaan berbeda tergantung pada apakah kerangka kerja mPaaS iOS diizinkan mengelola siklus hidup aplikasi. Dengan memeriksa apakah DFApplication dan DFClientDelegate diaktifkan dalam file main.m proyek, Anda dapat menentukan apakah kerangka kerja mPaaS iOS diizinkan mengelola siklus hidup aplikasi. Jika DFApplication dan DFClientDelegate diaktifkan, maka pengelolaan diperbolehkan.

return UIApplicationMain(argc, argv, @"DFApplication", @"DFClientDelegate"); // SEKARANG MENGGUNAKAN KERANGKA KERJA MPAAS

Kerangka kerja mengelola siklus hidup aplikasi

1. Mengizinkan prompt pop-up privasi.

Dalam kategori MPaaSInterface, tulis ulang metode API enablePrivacyAuth dan kembalikan nilai YES.

image

**Contoh kode**

```objectivec
@implementation MPaaSInterface (Portal)

- (BOOL)enablePrivacyAuth
{
return YES;
}

@end
```

2. Implementasikan jendela pop-up izin.

Tulis ulang metode - (DTFrameworkCallbackResult)application:(UIApplication *)application privacyAuthDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions completionHandler:(**void** (^)(**void**))completionHandler; yang disediakan oleh kerangka kerja.

image

Contoh Kode

```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. Mulai kerangka kerja mPaaS.

Setelah pengguna mengeklik Agree untuk otorisasi, panggil balik completionHandler untuk melanjutkan memulai kerangka kerja mPaaS. Contoh kode adalah sebagai berikut:

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface AuthViewController : UIViewController

@property (nonatomic, copy) void (^completionHandler)(void);
@property (nonatomic, strong) UIWindow *window;

@end

NS_ASSUME_NONNULL_END
#import "AuthViewController.h"

@interface AuthViewController ()<UIAlertViewDelegate>

@end

@implementation AuthViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Lakukan pengaturan tambahan setelah memuat tampilan.

    [self showAlertWithTitle:@"Izin privasi"];
}

- (void)showAlertWithTitle:(NSString *)title
{
    if ([title length] > 0) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
                                                        message:nil
                                                       delegate:self
                                              cancelButtonTitle:@"Batal"
                                              otherButtonTitles:@"OK", 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. Inisialisasi manual konteks container.

Jika Anda telah mengintegrasikan komponen HTML5 container, paket offline, dan mini program, Anda harus secara manual menginisialisasi konteks Context dalam metode - (void)application:(UIApplication *)application afterDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions. Contoh kode adalah sebagai berikut:

- (void)application:(UIApplication *)application afterDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  ...
  // Inisialisasi konteks container.
  [MPNebulaAdapterInterface setNBContextWhenEnablePrivacyAuth];    

  ...
}

Kerangka kerja tidak mengelola siklus hidup aplikasi

1. Mendukung jendela pop-up privasi.

Dalam kategori MPaaSInterface, tulis ulang metode API enableUserOverWriteAuthAlert dan kembalikan status izin privasi yang sesuai.

image

Contoh Kode

@implementation MPaaSInterface (mPaaSdemo)

    - (BOOL)enableUserOverWriteAuthAlert {
        // Jika pengguna telah mengeklik "Setuju" untuk ketentuan privasi, "NO" dikembalikan, yang menunjukkan bahwa komponen mPaaS dapat memanggil API terkait secara normal.
        // Jika tidak, "Yes" dikembalikan, yang menunjukkan bahwa komponen mPaaS akan menahan pemanggilan API terkait.
        return ![[NSUserDefaults standardUserDefaults] boolForKey:@"xx_pr"];
    }

    @end

2. Mencegah pelaporan awal log pelacakan.

Jika Anda telah mengakses komponen terkait pelacakan, Anda harus memanggil metode MPAnalysisHelper holdUploadLogUntilAgreed selama proses startup untuk mencegah pelaporan awal log pelacakan.

null

Anda dapat menentukan apakah komponen terkait pelacakan telah diakses dengan memeriksa apakah APRemoteLogging.framework ada.

Contoh Kode (disarankan untuk memanggilnya secepat mungkin)

5

3. Inisialisasi manual konteks container.

Jika Anda telah mengintegrasikan komponen HTML5 container, paket offline, dan mini program, Anda harus secara manual menginisialisasi konteks Context dalam metode - (void)application:(UIApplication *)application afterDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions. Contoh kode adalah sebagai berikut:

- (void)application:(UIApplication *)application afterDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  ...
  // Inisialisasi konteks container.
  [MPNebulaAdapterInterface setNBContextWhenEnablePrivacyAuth];    

  ...
}