델파이에서 Project - Options - Orientation에서 Enable custom orientation에서 Landscape 를 체크 후
Mac OS 배포 시에 다음과 같은 에러가 난다면
ERROR ITMS-90474: "Invalid Bundle. iPad Multitasking support requires these orientations: 'UIInterfaceOrientationPortrait,UIInterfaceOrientationPortraitUpsideDown,UIInterfaceOrientationLandscapeLeft,UIInterfaceOrientationLandscapeRight'. Found 'UIInterfaceOrientationLandscapeRight' in bundle 'com.test.test'."
다음과 같이 해보자
Project - Options - Version Info에 들어가서 밑에 영역에서 오른쪽 키 클릭 - Add Key
이것 역시 App Store Connet - 사용자 및 액세스 - 메뉴 하단 Sandbox - 테스터
사용자를 등록합니다. 단, 기존에 Apple 에 등록되어 있는 계정과 중복되어선 안됩니다!
위와 같이 등록을 해주시고 코드를 이제 살펴보겠습니다.
우선 델파이에서 인앱 컴포넌트를 추가합니다.
검색이 안되는 경우 맨위 상단 uses 절에 FMX.InAppPurchase을 추가합니다.
procedure TMainForm.iosInAppPurchase(Sender: TObject);
begin
InAppPurchase1.ProductIDs.Add('Test'); // 등록한 제품 ID
InAppPurchase1.OnSetupComplete := InAppPurchaseSetupComplete;
InAppPurchase1.SetupInAppPurchase;
end;
procedure TMainForm.InAppPurchaseSetupComplete(Sender: TObject);
begin
InAppPurchase1.QueryProducts;
InAppPurchase1.RestorePurchasedProducts;
end;
저같은 경우 위와 같은 함수를 만들어서 처음 FormCreate 시 실행하게 하였습니다.
여기서 RestorePurchasedProducts을 참고하셔야 합니다.
안드로이드 같은 경우 알아서 재구매를 해주지만 IOS 같은 경우 비소모성 상품인 경우 위와 같이
RestorePurchasedProducts를 호출하여 결제 여부를 확인해줘서 이미 결제했을 경우 결제 처리가 됩니다.
{IFDEF IOS}
try
if InAppPurchase1.IsSetupComplete then
begin
if InAppPurchase1.IsProductPurchased('TEST') then
begin
결제 성공 시 이동
end
else
begin
if InAppPurchase1.CanMakeInAppPurchases then
begin
InAppPurchase1.PurchaseProduct('TEST');
end;
end;
end;
except
on e: Exception do
begin
ShowMessage(e.Message);
end;
end;
{ENDIF}
IsSetupComplete을 통해 Boolen값을 반환 받은 뒤
IsProductPurchased으로 이미 구입이 된 상품이면 다음을 처리하고 그렇지 않은 경우
CanMakeInAppPurchases 처리 후 PurchaseProduct('제품 ID')로 결제 루틴에 들어간다.