유 니 티 와 iOS 의 상호작용 에 대한 소감
*[DllImport("__Internal")] // using System.Runtime.InteropServices; sdk c __ fuck
* AOT.MonoPInvokeCallback static ,c# .mm typedef void (*yourcallbacl)(arg1s) demo .mm
* Assetsm Plugins/IOS/ xxx.mm , c c# string .mm char *
/ / 물론 swift 를 사용 해 야 하 는 것 은 여기 서 도입 하면 됩 니 다.
xxx. mm 파일 을 사용 하면 mm 에서
// oc
extern "c"{
//c void void* int char* char ** int long
//
void Ctest( ){
}
}
여기에 가장 간단 한 demo 가 있 습 니 다.
https://github.com/lotawei/IosUnityFrameTest 사용 방식 유 니 티 는 항목 을 열 고 직접 포장 하여. mm 실현 함수 와. cs 의 함 수 를 비교 하면 완전한 인쇄 정 보 를 xcode 에서 볼 수 있 습 니 다.
글 업데이트
swift 와 oc 와 유 니 티 의 상호작용 을 어떻게 사용 하 는 지 에 대한 세부 사항 은 Ccharp 전송 기본 유형 에 대한 설명 이 끝 났 습 니 다. sdk 차원 을 고려 할 때 Oc 는 유 니 티 를 통 해 포장 할 수 있 지만 자체 의 유 니 티 sendmsg 방법 으로 호출 할 수 있 습 니 다. 그러나 이런 것 은 sdk 차원 에서 적절 하지 않 습 니 다.본질 적 인 디 결합 은 유 니 티 에 도달 하 기 를 바 라 는 것 이기 때문에 저 는 SDK 를 호출 하고 받 기만 하면 처리 하고 배포 하 는 것 이 좋 습 니 다. 예 를 들 어 C - charp 이쪽 매개 변 수 는 리 셋 함수 이 고 oc 이쪽 은 리 셋 함수 주 소 를 받 을 수 있 습 니 다.처리 가 끝 난 후에 이 리 셋 을 주동 적 으로 실행 하면 c - charp 이쪽 이 더 잘 처리 되 지만 sdk 는 swift 든 oc 든 상호작용 의 실제 본질 이 든 c c + + 와 상호작용 을 해 야 합 니 다. 그러면 c + + 를 어떻게 사용 하여 oc 와 유사 한 protocol 과 패 킷 방식 을 정의 하 는 것 이 가능 한 방안 입 니 다.
여기 서 oc 를 예 로 들 면 swift 는 oc 폐쇄 방식 과 직접 상호작용 을 할 수 있 기 때 문 입 니 다. SDK 쪽 은 기본적으로 프로 토 콜 이나 block 방식 으로 처리 하기 때 문 입 니 다.
typedef void(^SDKProcesscall)(NSString*);#oc
c + + 에 대응 하 는 방법
typedef void (*SDKProcesscall)(const char *data);
그리고 mm 파일 에서 c \ # 저쪽 에 정 해진 방법 c \ # 저쪽 은 다음 과 같이 정 합 니 다.
public delegate void iosMsgcallback(string datajson);
[DllImport("__Internal")]
public extern static void dealcallback(string params,iosMsgcallback callback);
[AOT.MonoPInvokeCallback(typeof(iosMsgcallback))]
public static void recieveCallBack(string result)
{
// sdk
//
}
. mm 파일
extern "C"{
void sdkdealprocess(const char *params ,SDKProcesscall back){
//char * NSString
// swift oc
[SDkProcess sdkdealprocess:str delaprocessblock:^(NSString result) {
// const char * result = ;
back(result);
}];
}
}
이렇게 완전한 인 터 랙 션 프로 세 스 를 사용 하면 좋 습 니 다. sdk 처리 가 필요 한 곳 에서 c \ # 여 기 는 aot 방식 으로 만 자신 이 쓴 sdk 를 처리 할 수 있 습 니 다. 이 반전 을 찾 을 수 없 기 때문에 [AOT. MonoPInvokeCallback (type: of (iosMsgcallback)] 표 시 된 형식 함수 로 결 과 를 처리 할 수 밖 에 없습니다.
dealcallback("{\"username\":\"hitbit\"}", recieveCallBack)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.