--- title: "샘플 코드" slug: "appsafer-sample" tags: ["android", "App Safer", "ios", "sdk"] updated: 2026-09-17T09:08:11Z published: 2026-09-17T09:08:11Z canonical: "guide.ncloud-docs.com/appsafer-sample" stale: true --- > ## Documentation Index > Fetch the complete documentation index at: https://guide.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # 샘플 코드 Classic/VPC 환경에서 이용 가능합니다. App Safer 이용에 도움이 되는 다양한 샘플 코드를 확인할 수 있습니다. 참고 운영체제별 샘플코드는 다음과 같은 언어로 제공합니다. - 안드로이드: Kotlin, Java - iOS: Swift, Objective-C ## 안드로이드 안드로이드에서 사용 가능한 샘플 코드를 확인할 수 있습니다. ### SDK SDK 연동 방식으로 적용한 App Safer를 실행하는 샘플 코드는 다음과 같습니다. **Kotlin** ``` import android.os.Bundle import android.util.Log import androidx.appcompat.app.AppCompatActivity import com.nbp.appsafer.AppSafer import java.io.File import java.util.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // prevent screenshot AppSafer.INSTANCE.preventScreenshot(window) // set user id AppSafer.INSTANCE.userId = "ExampleUserId" // get user id val userId = AppSafer.INSTANCE.userId // app safer start runBlocking { AppSafer.INSTANCE.start(applicationContext); // get udid val udid = AppSafer.INSTANCE.userDeviceId } } } ``` **Java** ``` import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Map; import com.nbp.appsafer.AppSafer; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // prevent screenshot AppSafer.INSTANCE.preventScreenshot(getWindow()); // set user id AppSafer.INSTANCE.setUserId("ExampleUserId"); // get user id String userId = AppSafer.INSTANCE.getUserId(); // app safer start Thread thread = new Thread(new Runnable() { @Override public void run() { AppSafer.INSTANCE.start(applicationContext); // get udid String udid = AppSafer.INSTANCE.getUserDeviceId(); } }); thread.start(); } } ``` ## iOS iOS에서 사용 가능한 샘플 코드를 확인해 주십시오. ### 초기화 초기화를 위한 샘플 코드는 다음과 같습니다. **Swift** ``` import SwiftUI struct ContentView: View { func initAppSaferExample() { // APP_SAFER_KEY generated when registering an app to the Console let result = AppSafer().initAppSafer(AppSaferDelegator.delegator, serviceCode: "ncloud", key: "") NSLog("initAppSafer() result: %d", result); if(result == SUCCESS) { // init success } else if(result == FAIL) { // init fail } } var body: some View { Button("initAppSafer") { initAppSaferExample() } } } class AppSaferDelegator: NSObject, AppSaferDelegate { static let delegator = AppSaferDelegator() private override init() {} func appSaferDidInitFinish(_ result: Int32) { print("appSaferDidInitFinish result \(result)"); if(result == BLOCK) { print("Device is blocked!"); // add to exit application logic } } } ``` **Objective-C** ``` #import @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; AppSafer *appSafer = [[AppSafer alloc] init]; int res = FAIL; if(appSafer != nil) { // APP_SAFER_KEY generated when registering an app to the Console res = [appSafer initAppSafer:self serviceCode:@"ncloud" key:""]; NSLog(@"initAppSafer result %d", res); if(res == SUCCESS) { // init success } else if(res == FAIL) { // init fail } } else { NSLog(@"AppSafer is nil"); } } - (void)appSaferDidInitFinish:(NSUInteger)result msg:(NSString *)message { NSLog(@"appSaferDidInitFinish result %d", result); if(result == BLOCK) { NSLog(@"Device is blocked!"); // add to exit application logic } } ``` ### 실시간 보안 탐지 실시간 보안 탐지를 실행하는 샘플 코드는 다음과 같습니다. **Swift** ``` import SwiftUI struct ContentView: View { func checkTamperingExample() { let result = AppSafer().checkTampering() switch(result) { case FAIL: print("Failed to check tampering") break case SUCCESS: print("Check Tampering Success") break case BLOCK: print("Device is blocked") break case BEFOREINIT: print("AppSafer is not initialized") break default: break } } var body: some View { Button("checkTampering") { checkTamperingExample() } } } class AppSaferDelegator: NSObject, AppSaferDelegate { static let delegator = AppSaferDelegator() private override init() {} func appSaferDidCheckTamperingFinish(_ result: Int32) { print("appSaferDidCheckTamperingFinish result: " + ( result == FAIL ? "FAIL" : result == SAFE ? "SAFE" : result == DETECT ? "DETECT" : result == BLOCK ? "BLOCK": "UNKNOWN")) if(result == BLOCK) { print("Device is blocked!") // add to exit application logic } } func appSaferDetectedJailbreak() { print("[DETECT] appSaferDetectedJailbreak"); } func appSaferDetectedSimulator() { print("[DETECT] appSaferDetectedSimulator"); } func appSaferDetectedDebugging() { print("[DETECT] appSaferDetectedDebugging"); } func appSaferDetectedMemoryTampered() { print("[DETECT] appSaferDetectedMemoryTampered"); } } ``` **Objective-C** ``` @implementation ViewController - (IBAction)checkAppSafer:(id)sender { AppSafer *appSafer = [[AppSafer alloc] init]; if(appSafer != nil) { int res = [appSafer checkTampering]; switch(res) { case FAIL: NSLog(@"Failed to check tampering"); break; case SUCCESS: NSLog(@"Check Tampering Success"); break; case BLOCK: NSLog(@"Device is blocked"); break; case BEFOREINIT: NSLog(@"AppSafer is not initialized"); break; } } else { NSLog(@"AppSafer is nil"); } } - (void)appSaferDidCheckTamperingFinish:(int)result { if(result == BLOCK) { [self.msgbox setText:@"Device is blocked!"]; // add to exit application } NSLog(@"appSaferDidCheckTamperingFinish result %@", result == FAIL ? @"FAIL" : result == SAFE ? @"SAFE" : result == DETECT ? @"DETECT" : result == BLOCK ? @"BLOCK": @"UNKNOWN"); } - (void)appSaferDetectedJailbreak { NSLog(@"[DETECT] appSaferDetectedJailbreak"); } - (void)appSaferDetectedSimulator { NSLog(@"[DETECT] appSaferDetectedSimulator"); } - (void)appSaferDetectedDebugging { NSLog(@"[DETECT] appSaferDetectedDebugging"); } - (void)appSaferDetectedMemoryTampered { NSLog(@"[DETECT] appSaferDetectedMemoryTampered"); } ```