Hello, I used Codeless IAP, and it works well for Android, but then I tried to upload build to App Store, they declined it with following message:
Here is a XCode console log:
UnityIAP StandardPurchasingModule Version: 1.15.0
UnityEngine.Purchasing.StandardPurchasingModule:Instance(AppStore)
UnityEngine.Purchasing.IAPButtonStoreManager:.ctor()
UnityEngine.Purchasing.IAPButtonStoreManager:.cctor()
UnityEngine.Purchasing.IAPButton:OnEnable()
UnityEngine.Events.UnityEvent:Invoke()
UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)
UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchPress(PointerEventData, Boolean, Boolean)
UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchEvents()
UnityEngine.EventSystems.StandaloneInputModule:Process()
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
(Filename: /Users/builduser/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)
2018-01-26 10:50:40.025965+0200 ZP[621:161352] UnityIAP:Requesting 1 products
2018-01-26 10:50:40.029161+0200 ZP[621:161352] UnityIAP:Requesting product data...
2018-01-26 10:50:41.327661+0200 ZP[621:161352] UnityIAP:Received 0 products
2018-01-26 10:50:41.364331+0200 ZP[621:161352] UnityIAP:No App Receipt found
2018-01-26 10:50:41.368409+0200 ZP[621:161352] UnityIAP:No App Receipt found
Unavailable product full_version -full_version
UnityEngine.Purchasing.PurchasingManager:CheckForInitialization()
UnityEngine.Purchasing.PurchasingManager:OnProductsRetrieved(List`1)
UnityEngine.Purchasing.AppleStoreImpl:OnProductsRetrieved(String)
UnityEngine.Purchasing.Extension.UnityUtil:Update()
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
(Filename: /Users/builduser/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)
Purchasing failed to initialize. Reason: NoProductsAvailable
UnityEngine.Purchasing.IAPButtonStoreManager:OnInitializeFailed(InitializationFailureReason)
UnityEngine.Purchasing.PurchasingManager:CheckForInitialization()
UnityEngine.Purchasing.PurchasingManager:OnProductsRetrieved(List`1)
UnityEngine.Purchasing.AppleStoreImpl:OnProductsRetrieved(String)
UnityEngine.Purchasing.Extension.UnityUtil:Update()
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
(Filename: /Users/builduser/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)
2018-01-26 10:50:41.369737+0200 ZP[621:161352] UnityIAP:addTransactionObserver
2018-01-26 10:50:41.369914+0200 ZP[621:161352] UnityIAP UnityEarlyTransactionObserver: Request to initiate queued payments
IAPButton.PurchaseProduct() with product ID: full_version
UnityEngine.Purchasing.IAPButton:PurchaseProduct()
UnityEngine.Events.UnityEvent:Invoke()
UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)
UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchPress(PointerEventData, Boolean, Boolean)
UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchEvents()
UnityEngine.EventSystems.StandaloneInputModule:Process()
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
(Filename: /Users/builduser/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)
Purchase failed because Purchasing was not initialized correctly
UnityEngine.Purchasing.IAPButtonStoreManager:InitiatePurchase(String)
UnityEngine.Events.UnityEvent:Invoke()
UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)
UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchPress(PointerEventData, Boolean, Boolean)
UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchEvents()
UnityEngine.EventSystems.StandaloneInputModule:Process()
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
(Filename: /Users/builduser/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)
IAPButton.OnPurchaseFailed(Product , PurchaseFailureReason PurchasingUnavailable)
UnityEngine.Purchasing.IAPButton:OnPurchaseFailed(Product, PurchaseFailureReason)
UnityEngine.Purchasing.IAPButtonStoreManager:InitiatePurchase(String)
UnityEngine.Events.UnityEvent:Invoke()
UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)
UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchPress(PointerEventData, Boolean, Boolean)
UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchEvents()
UnityEngine.EventSystems.StandaloneInputModule:Process()
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
(Filename: /Users/builduser/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)
InvalidOperationException: Collection was modified; enumeration operation may not execute.
at System.Collections.Generic.List`1+Enumerator[T].System.Collections.IEnumerator.Reset () [0x00000] in <filename unknown>:0
at System.Collections.Generic.List`1+Enumerator[T].VerifyState () [0x00000] in <filename unknown>:0
at UnityEngine.Purchasing.IAPButton+IAPButtonStoreManager.InitiatePurchase (System.String productID) [0x00000] in <filename unknown>:0
at UnityEngine.Events.UnityEvent.Invoke () [0x00000] in <filename unknown>:0
at UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) [0x00000] in <filename unknown>:0
at UnityEngine.EventSystems.StandaloneInputModule.ProcessTouchPress (UnityEngine.EventSystems.PointerEventData pointerEvent, Boolean pressed, Boolean released) [0x00000] in <filename unknown>:0
at UnityEngine.EventSystems.StandaloneInputModule.ProcessTouchEvents () [0x00000] in <filename unknown>:0
at UnityEngine.EventSystems.StandaloneInputModule.Process () [0x00000] in <filename unknown>:0
at System.Collections.Generic.IEqualityComparer`1[T].Equals (.T x, .T y) [0x00000] in <filename unknown>:0
at System.Collections.Generic.IEqualityComparer`1[T].Equals (.T x, .T y) [0x00000] in <filename unknown>:0
at System.Collections.Generic.IEqualityComparer`1[T].Equals (.T x, .T y) [0x00000] in <filename unknown>:0
UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)
UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchPress(PointerEventData, Boolean, Boolean)
UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchEvents()
UnityEngine.EventSystems.StandaloneInputModule:Process()
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
System.Collections.Generic.IEqualityComparer`1:Equals(T, T)
(Filename: currently not available on il2cpp Line: -1)
I noticed the string:
Purchase failed because Purchasing was not initialized correctly
I used Codeless IAP, so i did not any initialization manually… it should perform automatically, isn’t it?
Unity 2017.3.0f3