Unity3D no matching function for call to 'UnitySendMessage'

- (void) completeTransaction:(SKPaymentTransaction *)transaction
{
    NSLog(@"InAppPurchase completeTransaction");
    NSLog(@"InAppPurchase Transaction Identifier : %@", transaction.transactionIdentifier );
    NSLog(@"InAppPurchase Transaction Data : %@", transaction.transactionDate );
    ///< 구매 완료 아이템 인벤등 게임쪽 처리 진행
    /*
    const char* pszProductId = [[[transaction payment] productIdentifier] UTF8String];
    UnitySendMessage("iOSManager", "ResultBuyItem", pszProductId);
     */
   
    NSString* strReceipt = [[NSString alloc] initWithBytes:transaction.transactionReceipt.bytes length:transaction.transactionReceipt.length encoding:NSUTF8StringEncoding];
    
    UnitySendMessage("iOSManager", "ResultBuyItem", strReceipt);
   
    // Remove the transaction from the payment queue.
    [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}


 위 소스는 기존에유니티3D iOS 인앱 연동 작업했던 것 중에서 빌트인 모델로 했던 것을 서버 모델로 하기 위해 영수증 정보를 유니티3D에 넘기게 수정한 부분입니다. 자세한 인앱 영수증 서버 처리는 추후에 정리해보기로 하고, 일단 주석 된 것이 기존에 간단히 아이템id만 넘겼던 빌트인 모델용이고 그 밑에 처리한게 서버 모델을 위한 영수증을 넘긴건데

Unity3D no matching function for call to 'UnitySendMessage'

 이런 에러가 발생했습니다. 얼핏보면 이상 없을 것 같은 코드이지만


#ifdef __cplusplus
extern "C" {
#endif 
void UnitySendMessage(const char* obj, const char* method, const char* msg);
#ifdef __cplusplus
}
#endif 


 UnitySendMessage는 인자가 모두 const char* 죠. 생각없이 작업하다가 NSString*를 넘겨줘서 생긴 오류였습니다.


UnitySendMessage("iOSManager", "ResultBuyItem", [strReceipt UTF8String]);


 이렇게 해주면되죠. 그런데 제 맥에서는 며칠동안 에러코드인 상태로 빌드 및 테스트가 잘 되고 있던 상태였는데 이상하게도 작업한 플러그인 소스를 빌더분에게 넘기고 나니 그분이 에러나고 그 후로 저도 에러가 발생하더군요.

이 블로그의 인기 게시물

CMake Windows에 설치하기

Unity3D 안드로이드 Keystore 생성하기

Unity3D iOS Plugin 만들어 연동하기