Monogame에서 Windows Phone 8 용 IAP를 구현하는 데 문제가 있습니다. 내가 API 문서 다음 봤는데 : 실버 라이트 애플리케이션에 다른 Monogame/XNA 업데이트로 WP8 In-App Purchase API
을, 나는 UI 스레드에서 IAP를 실행하고 있습니다. 스토어의 베타 앱을 테스트했으며 Store Front UI를로드하고 내 제품을 표시 할 수 있습니다. 구매를 시도 할 때 구매 한 것처럼 보이지만 게임으로 돌아가려고하지만 충돌이 발생합니다. 더 많은 앱이로드되면 이후에도 스토어가 표시되지 않습니다.
나는 행운이 문제를 해결하기 위해 어디에서나 검색했습니다. 아무도 이걸 도와 줄 수 없다면 정말 고마워. 내가 InvokeOnUIThread (Part1Purchase)를 호출하는 데 사용할Monogame : Windows Phone 8 IAP (In App Purchases)
public static void InvokeOnUIThread(Action action)
{
#if WINDOWS8 || OPENGL
action();
#else
var dispatcher = System.Windows.Deployment.Current.Dispatcher;
if (dispatcher.CheckAccess() /*IsUIThread*/)
action();
else
dispatcher.BeginInvoke(action);
#endif
}
; 여기
내 코드 샘플입니다async void Part1Purchase()
{
ListingInformation li = await CurrentApp.LoadListingInformationAsync();
string pID = li.ProductListings["img.1"].ProductId;
try
{
string receipt = await Windows.ApplicationModel.Store.CurrentApp.RequestProductPurchaseAsync(pID, false);
Part2Fulfillment();
}
catch (Exception ex)
{}
}
public void Part2Fulfillment()
{
var productLicenses = Windows.ApplicationModel.Store.CurrentApp.LicenseInformation.ProductLicenses;
Part3DeliverGold(productLicenses["img.1"], 50);
}
void Part3DeliverGold(ProductLicense license, int goldCount)
{
if (license.IsConsumable && license.IsActive)
{
gold += goldCount;
CurrentApp.ReportProductFulfillment(license.ProductId);
}
}
나는 또한 내가 당신의 상황을 정확히 무엇이 잘못되었는지 모르겠어요
private void RestoreTitleDelayed(int delay)
{
ThreadPool.QueueUserWorkItem((object o) =>
{
Thread.Sleep(delay);
System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() =>
{
Part1Purchase();
});
});
}
좋아 좋아! 구매를 시작하는 메소드의 ReturnFromStoreCallback 값에 무엇을 전달합니까? – xDev
은 System.Action 또는 단순히 string, string, bool 인수가있는 메서드로 정의 된 동작을 전달합니다. 이 메소드는 구매가 완료되고 첫 번째 문자열 인수에 productID가 있고 두 번째 문자열에 영수증이 있고 세 번째 bool에 true가 설정된 경우 구매 오류가 발생했을 때 호출됩니다. –