none
windows phone universal app 如何添加 in-app purchase功能 (C++的实现) RRS feed

  • 问题

  • 调用CurrentApp::RequestProductPurchaseAsync总是crash掉。

    原来还担心是不是从游戏线程调用UI线程出的这个错,我通过这几个链接

    1.) https://social.msdn.microsoft.com/Forums/en-US/7bee4c28-a123-41f3-a37d-48fe3ccc4dab/inapp-purchase-in-a-native-c-app?forum=wpdevelop2.) http://www.datazx.cn/Forums/en-US/6efb19e6-579d-4bb4-9e7b-d7e394f1ae45/action?forum=wpdevelop,

    试用了create_task([](){ .... }) 和 ThreadPool::RunAsync ,依然crash在CurrentApp::RequestProductPurchaseAsync这行。

    该如何在c++里面实现in-app purchase? 有没有完整的sample呢?

    2015年5月12日 13:15

答案

全部回复

  • 你好 ragame,

    对调试程序而言,应该使用的是 CurrentAppSimulator 而不是 CurrentApp,CurrentApp应该在程序通过验证上传到应用商店的时候替换。

    例子的话可以参考:https://code.msdn.microsoft.com/windowsapps/Licensing-API-Sample-19712f1a

    --James


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年5月14日 2:54
    版主
  • Hi Jamles,

    	auto licenseInformation = CurrentApp::LicenseInformation;
    	if (!licenseInformation->ProductLicenses->Lookup("product1")->IsActive)
    	{
    		//Buying Product 1...
    		create_task(CurrentApp::RequestProductPurchaseAsync("Product 1")).then([this](task<PurchaseResults^> currentTask)
    		{
    			try
    			{
    				currentTask.get();
    				auto licenseInformation = CurrentApp::LicenseInformation;
    				if (licenseInformation->ProductLicenses->Lookup("Product 1")->IsActive)
    				{
    					//success
    				}
    				else
    				{
    					//fail
    				}
    			}
    			catch (Platform::Exception^ exception)
    			{
    				//expception
    			}
    		});
    	}
    	else
    	{
                 //already owned it
    	}

    我的iap已经上线了,应用程序没上线,下面这句执行正常,就是购买那句的时候会crash...

    licenseInformation->ProductLicenses->Lookup("product1")->IsActive
    2015年5月14日 5:32
  • 你好 ragame,

    你可以定位到当程序crash的时候,会有什么样的信息报出么?一般来说,应用程序没有上线就不可以用CurrentApp,必须使用CurrentAppSimulator来替代,参考: CurrentApp Class

    如果你需要C++的 In app purchase 的例子,可以看一下online的代码示例:https://code.msdn.microsoft.com/windowsapps/Licensing-API-Sample-19712f1a

    --James


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年5月17日 6:08
    版主
  • 你好 Jamles,

    问题解决了,应该把create_task()丢到window->Dispather里面执行就正常了。

    谢谢回复

    2015年5月17日 23:23
  • OK,原来是没有在主线程上执行啊。

    --James


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年5月18日 1:47
    版主