안드로이드 및 iOS용 네이티브 확장 소스 코드 예제
이 문서에서는 안드로이드와 iOS 플랫폼을 위한 네이티브 확장을 만드는 데 도움이 되는 예제와 정보를 제공합니다.
안드로이드 (기본 예제)
안드로이드용 예제 확장은 다음과 같은 기능을 포함합니다:
- 두 숫자를 더한 값을 반환
- 입력 문자열과 값을 결합한 문자열 반환
- 두 입력 문자열을 결합한 문자열 반환
Async - Social
이벤트를 트리거하고 값을async_loadmap
에 채움
GenericTest.java
이 파일을 확장에 추가하려면 Android Properties에서 클래스 이름(예: "GenericTest")을 입력한 후 "Add Source"를 클릭하고 .java
파일을 선택합니다. 선택한 파일이 프로젝트 디렉토리에 추가됩니다.
함수 정의
다음은 확장에서 사용할 수 있는 함수 목록입니다:
함수 / 외부 이름 | 도움말 | 인수 | 반환 타입 |
---|---|---|---|
AddTwoNumbers | AddTwoNumbers(value1, value2) | double, double | double |
HowManyObjects | HowManyObjects(value1, value2, string) | double, double, string | string |
BuildAString | BuildAString(string1, string2) | string, string | string |
ReturnAsync | ReturnAsync(value1, value2) | double, double | double |
함수 사용 예제
이제 게임 코드에서 이러한 함수를 호출하고 사용할 수 있습니다:
var result1 = string(AddTwoNumbers(irandom(100), 50));
var result2 = BuildAString("Hello", "World");
var result3 = HowManyObjects(irandom(1000), irandom(1000), "Targets");
ReturnAsync(irandom(1000), irandom(1000));
ReturnAsync()
함수는 Async - Social
이벤트를 트리거하므로, 해당 이벤트를 객체에 추가하고 async_loadmap
에서 데이터를 읽어야 합니다.
var type = async_load[? "type"];
if (type == "finished") {
var result4 = "value1: " + string(async_load[? "argument0"]) + ", ";
result4 += "value2: " + string(async_load[? "argument1"]);
}
iOS (기본 예제)
iOS용 예제는 위의 안드로이드 예제와 동일하지만, 소스 파일이 다릅니다. iOS 확장은 .hand
및 .mm
파일을 사용합니다.
GenericTest iOS 소스 파일
이 파일을 확장에 추가하려면 iOS Properties에서 클래스 이름(예: "GenericTest")을 입력한 후, "Enter framework path" 또는 "Add Source" 옵션을 사용하여 .hand
및 .mm
파일이 있는 디렉토리를 지정합니다.
이전에 설정한 안드로이드 확장과 동일한 확장에 이러한 소스 파일을 추가할 수 있으며, 모든 함수의 외부 이름이 동일하면 iOS에서도 작동합니다.
안드로이드 (콜백)
다음은 .java
확장 파일에서 사용할 수 있는 콜백 함수입니다:
public void onStart();
public void onRestart();
public void onStop();
public void onDestroy();
public void onPause();
public void onResume();
public void onActivityResult(int requestCode, int resultCode, Intent data);
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults);
public void onNewIntent(android.content.Intent newIntent);
public void onWindowFocusChanged(boolean hasFocus);
public void onConfigurationChanged(Configuration newConfig);
iOS (콜백)
다음은 .mm
확장 파일에서 사용할 수 있는 콜백 함수입니다:
-(void) Init;
-(void) onLaunch:(NSDictionary*)launchOptions;
-(void) onResume;
-(void) onPause;
-(void) applicationDidEnterBackground:(UIApplication *)application;
-(void) applicationWillEnterForeground:(UIApplication *)application;
-(void) onStop;
-(void) applicationProtectedDataDidBecomeAvailable:(UIApplication *)application;
-(void) applicationProtectedDataWillBecomeUnavailable:(UIApplication *)application;
-(void) applicationDidReceiveMemoryWarning:(UIApplication *)application;
-(void) applicationSignificantTimeChange:(UIApplication *)application;
-(void) application:(UIApplication *)application willEncodeRestorableStateWithCoder:(NSCoder *)coder;
-(void) application:(UIApplication *)application didDecodeRestorableStateWithCoder:(NSCoder *)coder;
-(void) application:(UIApplication *)application didUpdateUserActivity:(NSUserActivity *)userActivity;
-(void) application:(UIApplication *)application didFailToContinueUserActivityWithType:(NSString *)userActivityType error:(NSError *)error;
-(void) application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *replyInfo))reply;
-(void) applicationShouldRequestHealthAuthorization:(UIApplication *)application;
-(void) openURL:(NSURL *)url sourceApplication:(NSString *) sourceApplication annotation:(id)annotation;
-(void) application:(UIApplication *)application userDidAcceptCloudKitShareWithMetadata:(CKShareMetadata *)cloudKitShareMetadata;