Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

[Released] IOS Native Unity3D Plugin

Discussion in 'Assets and Asset Store' started by stanislav-osipov, Apr 22, 2013.

  1. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    We targeting to launch it in approximately one month.
     
  2. cavila

    cavila

    Joined:
    Jun 4, 2013
    Posts:
    67
    Hi Stan,

    Will it be too much to ask to have all contents of this asset inside the /Plugins folder? preferably inside /Plugins/StansAssets. This will really help us keep our project folders organized. It also allows us to know where to find and keep track of plugin changes. Many other asset store developers are, thankfully, switching to this practice since Unity 5 came out.

    Thanks
     
  3. dCoding

    dCoding

    Joined:
    Sep 9, 2014
    Posts:
    26
    I am sorry to say that this is NOT true - based on this reply I submitted my app (with the bug of hitting close on test Ads not firing InterstitialAdDidFinishAction()) which went live today, only to find it has exactly the same problem with live Ads. Very disappointed with this, as I have had to pull the app because it freezes after an interstitial ad is closed. :(

    So to recap - this is still a problem even with released builds, not just test Ads, and needs a fix, probably from Apple.
     
    Last edited: Aug 29, 2015
  4. Mikea15

    Mikea15

    Joined:
    Sep 20, 2012
    Posts:
    93
    hey @lacost , I've managed to arrange the folders correctly. There is a file that gets duplicated, but I think this is normal because its shared code. The only thing would be the menu, I think.

    And yes, on the plugins folder you have a StansAssets with Android inside, but the ios Native is outside, StansAssets folder :)
     

    Attached Files:

  5. MrEsquire

    MrEsquire

    Joined:
    Nov 5, 2013
    Posts:
    2,712
    I imported Android Native after importing iOS/OSX native and got this error:

    Assets/Extensions/IOSNative/Editor/IOSNativeSettingsEditor.cs(523,51): error CS0117: `SA_VersionsManager' does not contain a definition for `ParceMagorVersion'

    All versions are latest and using Unity 4.6.8p1
     
  6. Nimloc

    Nimloc

    Joined:
    Apr 29, 2015
    Posts:
    1
    Exact same issue running Unity 5.1.1f1 - latest versions of plugins.

    UPDATE - MAY HAVE FIXED IT

    I went through the StansAssetsCommon folder and renamed the duplicate entries there with the 1 on the end to be the original files rather than duplicates - deleting the original versions. I think in the end I ended up using the IOS Native versions of the common files.
     
    Last edited: Sep 7, 2015
  7. MrEsquire

    MrEsquire

    Joined:
    Nov 5, 2013
    Posts:
    2,712
    Do you think the problem is when importing different plugins from stans collection, the StansAssetsCommon is somehow getting mixed up with things? I think also this maybe reason my OSX plugin not working, but im not sure?
     
  8. logan_nk

    logan_nk

    Joined:
    May 22, 2014
    Posts:
    1
    Hi @lacost, having troubles with the IAP store. after setting up the callback OnStoreKitInitComplete and calling IOSInAppPurchaseManager.Instance.loadStore(); I'm not getting any response from OnStoreKitInitComplete. I've followed docs found here https://unionassets.com/iosnative/coding-guidelines-15, but still nothing
     
  9. Oniros88

    Oniros88

    Joined:
    Nov 15, 2014
    Posts:
    150
    I have two questions, both about in app purchasing. The first question is that from some time to now, even though i am correctly logged into the app store, my game keeps asking for my password to init the store when starting, even crashing the app sometimes. It used to work well, and without changing anything and all of a sudden it started doing this. Also RestorePurchases doesn't work.

    my other question is about cloud saving. New update removed the OnCloundDataChanged event so i only have init and received events. I can't subscribe to any event for when i save data on the cloud. Is this intentional?
     
  10. Oniros88

    Oniros88

    Joined:
    Nov 15, 2014
    Posts:
    150
    Great, thanks to the crash i can't even start my game anymore. And i didn't change anything... it was working, and suddenly this. I don't know if its related to trying to use the restore purchase option, but even after uninstalling the app, resetting the device and reinstalling the app, i cant run it anymore. It always crashes with that app store request (even though i am logged and no other game does this).Between this and the freeze problem in android login, I am starting to regret buying Ultimate plugin...
     
  11. Oniros88

    Oniros88

    Joined:
    Nov 15, 2014
    Posts:
    150
    Solved the crash issue, it crashes if you attempt to log in with a bugged gamecenter account. But the game still requests itunes store password on store init(). (it should request it when purchasing something instead of direcly on init i thing)
     
  12. Livealot

    Livealot

    Joined:
    Sep 2, 2013
    Posts:
    228
    iOS9 is coming soon. What are your timing expectations for plugin support?
     
    MrEsquire likes this.
  13. Flybye

    Flybye

    Joined:
    Mar 25, 2015
    Posts:
    100
    Hello. Just a few questions:
    1. Is the app rate window customizable? e.g can I edit the question asked?
    2. Do I need playmaker to use your Plugin?
     
  14. Tarzan111

    Tarzan111

    Joined:
    Oct 8, 2014
    Posts:
    72
    Hi, I'm Leo, indie developper for a startup.

    I'm using your ios and Android native plugin. I'm doing some inapp purchase for the first time, no problem on Android but Apple just rejected my review because of this :

    "We found that your app offers In-App Purchase(s) that can be restored but does not include a “Restore Purchases" feature to allow users to restore the previously purchased In-App Purchase(s), as specified in the “Restoring Purchase Products” section of the In-App Purchase Programming Guide

    "Users restore transactions to maintain access to content they’ve already purchased. For example, when they upgrade to a new phone, they don’t lose all of the items they purchased on the old phone. Include some mechanism in your app to let the user restore their purchases, such as a Restore Purchases button."

    To restore previously purchased In-App Purchase products, it would be appropriate to provide a "Restore" button and initiate the restore process when the "Restore" button is tapped by the user."


    -I'm not sure to know how to do it, i followed the IOSNativeDoc but i don't understand what do they want exactly and how to do it with your plugin.
    My app restore the purchase without paying but the user have to click on "buy" first. I don't know how to get the list of products already purchased.

    This is my script, if you can help me, it would be very nice.

    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3. using UnionAssets.FLE;
    4. using System.Collections.Generic;
    5.  
    6. public class paiement_os : MonoBehaviour {
    7.  
    8.     //--------------------------------------
    9.     // INITIALIZE
    10.     //--------------------------------------
    11.  
    12.  
    13.     private static bool IsInitialized = false;
    14.     public static void init() {
    15.  
    16.         if(!IsInitialized) {
    17.  
    18.             //You do not have to add products by code if you already did it in seetings guid
    19.             //Windows -> IOS Native -> Edit Settings
    20.             //Billing tab.
    21.             IOSInAppPurchaseManager.Instance.addProductId("classichot");
    22.             IOSInAppPurchaseManager.Instance.addProductId("coquinmedium");
    23.             IOSInAppPurchaseManager.Instance.addProductId("coquinehard");
    24.             IOSInAppPurchaseManager.Instance.addProductId("coupleexpert");
    25.             IOSInAppPurchaseManager.Instance.addProductId("questionbizare");
    26.             IOSInAppPurchaseManager.Instance.addProductId("questionfun");
    27.             IOSInAppPurchaseManager.Instance.addProductId("packall");
    28.  
    29.             //Event Use Examples
    30.             IOSInAppPurchaseManager.Instance.addEventListener(IOSInAppPurchaseManager.VERIFICATION_RESPONSE, onVerificationResponse);
    31.             IOSInAppPurchaseManager.Instance.OnStoreKitInitComplete += OnStoreKitInitComplete;
    32.  
    33.             //Action Use Examples
    34.             IOSInAppPurchaseManager.Instance.OnTransactionComplete += OnTransactionComplete;
    35.             IOSInAppPurchaseManager.Instance.OnRestoreComplete += OnRestoreComplete;
    36.  
    37.             IsInitialized = true;
    38.         }
    39.         IOSInAppPurchaseManager.Instance.loadStore();
    40.              
    41.      
    42.  
    43.  
    44.     }
    45.     void Start(){
    46.         init();
    47.     }
    48.     //--------------------------------------
    49.     //  PUBLIC METHODS
    50.     //--------------------------------------
    51.  
    52.  
    53.     public static void buyItem(string productId) {
    54.         IOSInAppPurchaseManager.Instance.buyProduct(productId);
    55.     }
    56.  
    57.     //--------------------------------------
    58.     //  GET/SET
    59.     //--------------------------------------
    60.  
    61.     //--------------------------------------
    62.     //  EVENTS
    63.     //--------------------------------------
    64.  
    65.  
    66.     private static void UnlockProducts(string productIdentifier) {
    67.         Debug.Log("just bought :" + productIdentifier);
    68.         switch(productIdentifier) {
    69.         case "classichot": PlayerPrefs.SetInt("spinbotlearticlebought",2);
    70.         break;
    71.         case "coquinmedium": PlayerPrefs.SetInt("spinbotlearticlebought",4);
    72.         break;
    73.         case "coquinehard": PlayerPrefs.SetInt("spinbotlearticlebought",5);
    74.         break;
    75.         case "coupleexpert": PlayerPrefs.SetInt("spinbotlearticlebought",7);
    76.         break;
    77.         case "questionbizare": PlayerPrefs.SetInt("spinbotlearticlebought",8);
    78.         break;
    79.         case "questionfun": PlayerPrefs.SetInt("spinbotlearticlebought",9);
    80.         break;
    81.         case "packall": PlayerPrefs.SetInt("spinbotlearticlebought",10);
    82.         break;
    83.         }
    84.         if(PlayerPrefs.HasKey("spinbottlethanks")) IOSNativePopUpManager.showMessage("SPIN IT",PlayerPrefs.GetString("spinbottlethanks"));
    85.     }
    86.  
    87.     private static void OnTransactionComplete (IOSStoreKitResponse response) {
    88.  
    89.  
    90.         switch(response.state) {
    91.         case InAppPurchaseState.Purchased:
    92.         case InAppPurchaseState.Restored:
    93.             //Our product been succsesly purchased or restored
    94.             //So we need to provide content to our user depends on productIdentifier
    95.             //PlayerPrefs.SetInt("spinbotlearticlebought",tounlock);
    96.             UnlockProducts(response.productIdentifier);
    97.             break;
    98.         case InAppPurchaseState.Deferred:
    99.             //iOS 8 introduces Ask to Buy, which lets parents approve any purchases initiated by children
    100.             //You should update your UI to reflect this deferred state, and expect another Transaction Complete  to be called again with a new transaction state
    101.             //reflecting the parent’s decision or after the transaction times out. Avoid blocking your UI or gameplay while waiting for the transaction to be updated.
    102.             break;
    103.         case InAppPurchaseState.Failed:
    104.             //Our purchase flow is failed.
    105.             //We can unlock intrefase and repor user that the purchase is failed.
    106.             //Debug.Log("Transaction failed with error, code: " + response.error.code);
    107.             //Debug.Log("Transaction failed with error, description: " + response.error.description);
    108.  
    109.  
    110.             break;
    111.         }
    112.  
    113.         if(response.state == InAppPurchaseState.Failed) {
    114.             //IOSNativePopUpManager.showMessage("Transaction Failed", "Error code: " + response.error.code + "\n" + "Error description:" + response.error.description);
    115.         } else {
    116.             //IOSNativePopUpManager.showMessage("Store Kit Response", "product " + response.productIdentifier + " state: " + response.state.ToString());
    117.         }
    118.  
    119.     }
    120.     private static void OnRestoreComplete (IOSStoreKitRestoreResponce res) {
    121.         if(res.IsSucceeded) {
    122.             //IOSNativePopUpManager.showMessage("Success", "Restore Compleated");
    123.         } else {
    124.             //IOSNativePopUpManager.showMessage("Error: " + res.error.code, res.error.description);
    125.         }
    126.     }  
    127.  
    128.     private static void onVerificationResponse(CEvent e) {
    129.         IOSStoreKitVerificationResponse response =  e.data as IOSStoreKitVerificationResponse;
    130.  
    131.         //IOSNativePopUpManager.showMessage("Verification", "Transaction verification status: " + response.status.ToString());
    132.  
    133.         Debug.Log("ORIGINAL JSON: " + response.originalJSON);
    134.     }
    135.  
    136.     private static void OnStoreKitInitComplete(ISN_Result result) {
    137.         if(result.IsSucceeded) {
    138.             //IOSNativePopUpManager.showMessage("StoreKit Init Succeeded "+PlayerPrefs.GetInt("spinbotlearticletobuy"), "Available products count: " + IOSInAppPurchaseManager.instance.products.Count.ToString());
    139.             if(PlayerPrefs.HasKey("spinbotlearticletobuy")){
    140.                 if(PlayerPrefs.GetInt("spinbotlearticletobuy")==2) IOSInAppPurchaseManager.Instance.buyProduct("classichot");
    141.                 else if(PlayerPrefs.GetInt("spinbotlearticletobuy")==4) IOSInAppPurchaseManager.Instance.buyProduct("coquinmedium");
    142.                 else if(PlayerPrefs.GetInt("spinbotlearticletobuy")==5) IOSInAppPurchaseManager.Instance.buyProduct("coquinehard");
    143.                 else if(PlayerPrefs.GetInt("spinbotlearticletobuy")==7) IOSInAppPurchaseManager.Instance.buyProduct("coupleexpert");
    144.                 else if(PlayerPrefs.GetInt("spinbotlearticletobuy")==8) IOSInAppPurchaseManager.Instance.buyProduct("questionbizare");
    145.                 else if(PlayerPrefs.GetInt("spinbotlearticletobuy")==9) IOSInAppPurchaseManager.Instance.buyProduct("questionfun");
    146.                 else if(PlayerPrefs.GetInt("spinbotlearticletobuy")==10) IOSInAppPurchaseManager.Instance.buyProduct("packall");
    147.             }
    148.         } else {
    149.             //IOSNativePopUpManager.showMessage("StoreKit Init Failed",  "Error code: " + result.error.code + "\n" + "Error description:" + result.error.description);
    150.         }
    151.     }
    152. }
    153.  

    Thanks!
    Leo
     
    Last edited: Sep 14, 2015
  15. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    Hello, the new IOS Native version will be much more organized with the ability to switch on/off the APIs.


    .

    Thx for the report, I will check this, early customers report was claimed that this issues was on sandbox mode only. I will contact the apple about this problem.


    Well, new update approach will help you to get rid of duplicated files.
    And yes, we had this menu issues, which is now fixed :)

    And about plugin structure, so far native ios files will bee steel in the Plugins/IOS folder, but it will be much more organized, and really clear to find what files was created by IOS native + you will able to disable/enable some APIs to keep your project event more cleaner.

    This was OSX plugin issue, please contact the support. Issues is already fixed.


    Are you testing on the device or inside the Unity editor?


    Thx for your observation, can you please specify what do you mean by the "bugged gamecenter account"?
    Plugin does not request it directly, and use the account request is started by IOS SDK, but it triggered only when you trying to purchase something. The StoreKit initialization will not trigger it. Are you sure you not starting purchase or restore flow right after initialization?



    IOS9 comes Spet 16, the next plugin update is scheduled to the Sept 20, you can be sure it will support and tested with iOS9, and in more 2 weeks ReplayKit will be added to the plugin features list.


    1. You can create your own rate window, as you create you game UI popups, and customize it as you wish, when user will push the rate button you can open your app rate page using this method:
    Code (CSharp):
    1. IOSNativeUtility.RedirectToAppStoreRatingPage();
    2. No, this is just an option for developer who prefer playmaker actions as alternative to the scripting.

    Hello @Tarzan111 .

    1) I think you simply do not have Restore Purchases button in your game menu (which is the requirements if you have non-consumable purchases in your game) This purchase button should trigger this method:
    Code (CSharp):
    1. IOSInAppPurchaseManager.Instance.RestorePurchases();
    rest of your code can remain untouched, you will get product purchased event fired for each product that was purchased by the user earlyer, you can find out more here:
    https://unionassets.com/iosnative/restoring-purchases-21

    2) About your code. You not using purchases validation, so no point to keep things like:

    Code (CSharp):
    1. IOSInAppPurchaseManager.Instance.addEventListener(IOSInAppPurchaseManager.VERIFICATION_RESPONSE, onVerificationResponse);      
    2.  
    3. private static void onVerificationResponse(CEvent e) {
    4.     IOSStoreKitVerificationResponse response =  e.data as IOSStoreKitVerificationResponse;
    5.  
    6.     //IOSNativePopUpManager.showMessage("Verification", "Transaction verification status: " + response.status.ToString());
    7.  
    8.     Debug.Log("ORIGINAL JSON: " + response.originalJSON);
    9. }

    3) this part is looks very weird as well, can you please explain why are you triggering purchase flow after store kit initialization?
    Code (CSharp):
    1. private static void OnStoreKitInitComplete(ISN_Result result) {
    2.     if(result.IsSucceeded) {
    3.         //IOSNativePopUpManager.showMessage("StoreKit Init Succeeded "+PlayerPrefs.GetInt("spinbotlearticletobuy"), "Available products count: " + IOSInAppPurchaseManager.instance.products.Count.ToString());
    4.         if(PlayerPrefs.HasKey("spinbotlearticletobuy")){
    5.             if(PlayerPrefs.GetInt("spinbotlearticletobuy")==2) IOSInAppPurchaseManager.Instance.buyProduct("classichot");
    6.             else if(PlayerPrefs.GetInt("spinbotlearticletobuy")==4) IOSInAppPurchaseManager.Instance.buyProduct("coquinmedium");
    7.             else if(PlayerPrefs.GetInt("spinbotlearticletobuy")==5) IOSInAppPurchaseManager.Instance.buyProduct("coquinehard");
    8.             else if(PlayerPrefs.GetInt("spinbotlearticletobuy")==7) IOSInAppPurchaseManager.Instance.buyProduct("coupleexpert");
    9.             else if(PlayerPrefs.GetInt("spinbotlearticletobuy")==8) IOSInAppPurchaseManager.Instance.buyProduct("questionbizare");
    10.             else if(PlayerPrefs.GetInt("spinbotlearticletobuy")==9) IOSInAppPurchaseManager.Instance.buyProduct("questionfun");
    11.             else if(PlayerPrefs.GetInt("spinbotlearticletobuy")==10) IOSInAppPurchaseManager.Instance.buyProduct("packall");
    12.         }
    13.     } else {
    14.         //IOSNativePopUpManager.showMessage("StoreKit Init Failed",  "Error code: " + result.error.code + "\n" + "Error description:" + result.error.description);
    15.     }
    16. }

    Cheers!
     
  16. nyrang

    nyrang

    Joined:
    Sep 14, 2015
    Posts:
    3
    Hi Stan,
    it appears that in ISN_GameCenterTBM you've implemented the EndTurn method with endTurnWithNextParticipant, which is deprecated since iOS6 and, more crucially, doesn't allow to set a timeout.
    This is easy to fix, but I'd suggest you to switch to endTurnWithNextParticipants in next versions. You might even keep the original method and add a new EndTurnWithTimeout, or something like that.

    Also, the correct DateTime.ToString format is "dd MMM yyyy HH:mm:ss" (you used "DD MMM YYYY HH:mm:ss" in the match info debug method).

    Oh, I was forgetting: you should move the friends list initialization:
    _friendsList = newList<string>();
    inside the OnFriendListLoadedEvent method, otherwise you'll keep adding the same names to the list in case of multiple authentications.
     
    Last edited: Sep 14, 2015
  17. Flybye

    Flybye

    Joined:
    Mar 25, 2015
    Posts:
    100
    Hello. Just a few questions:
    1. Is the app rate window customizable? e.g can I edit the question asked?
    2. Do I need playmaker to use your Plugin?
     
  18. headcrap

    headcrap

    Joined:
    Jul 29, 2014
    Posts:
    37
    Did you plan to support tvOS ?
     
  19. MrEsquire

    MrEsquire

    Joined:
    Nov 5, 2013
    Posts:
    2,712
    Dont want to sound negative but I'm seeing more and more similar issues with Deprecated things.
    Whole GameCentre needs to be recoded to a higher standard..most things from iOS6 era, we now on iOS9!
    Good for small users but not for advanced customers.

    Example crash line:

    Code (CSharp):
    1. -(void) initNotificationHandler {
    2.      if(isInited) { return; }  isInited = TRUE;
    3.    
    4.      [GKMatchmaker sharedMatchmaker].inviteHandler = ^(GKInvite *acceptedInvite, NSArray *playersToInvite) {
    5.    
    6.          if (acceptedInvite) {
    7.  
     
  20. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    Hey @Flybye I answered yout quastions in pervios message, please have a look:

    1. You can create your own rate window, as you create you game UI popups, and customize it as you wish, when user will push the rate button you can open your app rate page using this method:
    Code (CSharp):
    1. IOSNativeUtility.RedirectToAppStoreRatingPage();
    2. No, this is just an option for developer who prefer playmaker actions as alternative to the scripting.
     
    Flybye likes this.
  21. _saby

    _saby

    Joined:
    Aug 31, 2014
    Posts:
    11
    Hello,
    please I have question, is possible to do with this plugin something like check if is In-App purchase purchased?

    Example: I have in my game In-App that will remove Ads. I want always check (when game starts in main menu) if is this Remove Ads product purchased. If yes, it will show Remove Ads button and will keep showing Ads. If is purchased, it will hide Remove Ads button and will continue to showing Ads.

    Is possible with this plugin? And how to do it, have you something in documentation?

    Thank you!
     
  22. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    Hello
    Good point, I will take this into account and add to the next version changes.

    this is not very popular feature for the game development, so I am not sure that we going to implement it in the nearest future.

    Well, from my perspective, I do no see anything bad in the deprecations, while it's working on all IOS versions with no issues, as soon as it may be the crash reason, it should be changed to support both IOS versions. I will check invitation header, but all multiplayer standards was written with latest API.

    This is simple.
    You should have "remove ads" non-consumable product int your game
    When customer purchasing "remove ads" product you should remove ads and save state that ads should be removed to the PlayerPrefs.
    You can read here about purchase flow:
    https://unionassets.com/iosnative/coding-guidelines-15


    In case customer has re-installed your app, or switched to another device, he will still see the ad, since PlayerPrefs is the local device storage. But due to Apple policy, if you have non-consumable product in your app, you should have "Restore purchases" button which will run restore purchases flow. It will allow customer to restore "remove ads" product purchase. And you do not have to change anything in your code, since standard purchase event will be fired for each purchase.
    You can read more about purchase restoring here:
    https://unionassets.com/iosnative/restoring-purchases-21

    Cheers!
     
    _saby likes this.
  23. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    Hello, I just want to mention that IOS Native was updated to the 8.0 version.
    Here is most important feature of 8.0 version
    • You can now enable / disable IOS Native API's which will help you to keep your project event more thinner! Read more
    • Fully Tested with IOS9!
    • New IOS9 ReplayKit API added!
    Looking forward to hear your feedbacks!
     
  24. ababab5

    ababab5

    Joined:
    Apr 15, 2014
    Posts:
    508
    Hi,

    Do you plan to add the ReplayKit in a next update ?
    (and other is new feature)

    Thanks !
     
  25. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    Sorry @ababab5 but in the post above I've announced the Replay Kit feature. It's currently available with the current version.
    What other new feature you would like to see?
     
  26. kazumasa0421

    kazumasa0421

    Joined:
    Nov 17, 2014
    Posts:
    16
    Hi,

    I have a few questions about notifications.
    1)
    I think OnRemoteNotificationReceived() action of push notification doesn't called correctly.
    It is supposed that OnRemoteNotificationReceived is static in manual(https://unionassets.com/iosnative/push-notifications-14), but not in code.
    Tentatively I modified it manually, but it doesn't work. If you can, please give me sample code.

    2)
    I use both Push and Local notification. In this case,
    if I conducted IOSNotificationController.Instance.RegisterForRemoteNotifications(),
    IOSNotificationController.instance.RequestNotificationPermitions() is not necessary?

    3)
    Contents of OnDeviceTokenReceived in code and manual is different about delegate.
    Is manual side correct?
     
  27. Crz

    Crz

    Joined:
    Jul 30, 2013
    Posts:
    5
    Last edited: Sep 23, 2015
  28. WolfBeardedLion

    WolfBeardedLion

    Joined:
    Apr 5, 2013
    Posts:
    27
    I am receiving the following error when trying to build for Android:

    Assets/Extensions/IOSNative/Notifications/IOSNotificationController.cs(60,52): error CS0234: The type or namespace name `RemoteNotification' does not exist in the namespace `UnityEngine.iOS'. Are you missing an assembly reference?

    I am using both your Android and iOS Native Plugin with Unity 5.2.0p1.

    To fix this: I wrapped all the files that were causing issues with "#if UNITY_IOS"
     
    Last edited: Sep 24, 2015
  29. redccoma

    redccoma

    Joined:
    Feb 15, 2015
    Posts:
    13
    hi stan.

    sendbox toggle is gone.(on IOS9)
    i checked from apple dev forums. "sendbox option is integrated real develop environment."

    how can i integration GameCenter?
    always return GKErrorDomain Code = 2.

    Please help ;(

    * use IOS Native 8.0.1
     
  30. Hoskins355

    Hoskins355

    Joined:
    Jan 3, 2013
    Posts:
    142
    just updated ios native and now I am getting this error in xcode 7.0 Unity 5

    I am getting 95 errors all from ios native



    Any Ideas?
     
    Last edited: Sep 27, 2015
  31. drmop

    drmop

    Joined:
    Aug 26, 2014
    Posts:
    21
  32. Hoskins355

    Hoskins355

    Joined:
    Jan 3, 2013
    Posts:
    142
    Yes I ran the setup

    Updated unity to latest version, but still no luck.

    So I deleted all ios native files and then reimported them then reset everything up now I am only getting 10 errors, but it still is not working
     
    Last edited: Sep 29, 2015
  33. kazumasa0421

    kazumasa0421

    Joined:
    Nov 17, 2014
    Posts:
    16
  34. blunzn

    blunzn

    Joined:
    Jan 14, 2015
    Posts:
    14
    Hi Stan,

    i am testing the ReplayKit demo level on an iPad mini 2, iOS 9.0.1, Unity 5.2.0f3, Xcode 7.0.
    It crashes when trying to open the share dialog:

    Terminating app due to uncaught exception 'NSGenericException', reason: 'UIPopoverPresentationController (<UIPopoverPresentationController: 0x1699e260>) should have a non-nil sourceView or barButtonItem set before the presentation occurs.'

    Any idea?
    Thanks!
     
  35. Zumhru

    Zumhru

    Joined:
    Apr 18, 2015
    Posts:
    1
    We're searching for a native plugin kit that allows us to get exif info from images imported from camera roll / image library. Is this possible in your IOS Native plugin?
     
  36. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    Hello, @kazumasa0421
    I've just fixed the documentation, and do not forget that you need to enable push notifications API in the plugin editor settings window.

    RegisterForRemoteNotifications will trigger RequestNotificationPermitions, this method also will be triggered if you will try to schedule the local notification.

    The manual is correct, I Just checked.



    In iOS9 it doesn't required anymore, no code changes required as well. Error you getting comes from Apple not from the plugin itself, so I wouls recommend yo check your app settings, and in case you need additional help, please contact the support team.

    Hey @Hoskins355 , I see you have support case in progress, currently I can't tell what causes problem in your project, but please contact me directly in case it's urgent or if you will be not satisfied with the support team service.


    Hey @blunzn the issues is solved I will submit IOS Native v8.0.2 tomorrow it will contact the fix. The UIPopoverPresentationController requires a bit different setup, I missed it during initial API implementation.

    Currently we are providing only image itself without image info. Sin in most cases this is all what game developers need.

    Cheers!
     
    drmop likes this.
  37. kazumasa0421

    kazumasa0421

    Joined:
    Nov 17, 2014
    Posts:
    16
    I'm sorry for question 1). This was caused by using old version plugin. After plugins updated, notification works correctly.
    I understood reply of other questions.
    Thanks very much!
     
  38. Hoskins355

    Hoskins355

    Joined:
    Jan 3, 2013
    Posts:
    142
    Yes I need help please I have been trying since Sunday to get this to work and I am making no progress.
     
  39. drmop

    drmop

    Joined:
    Aug 26, 2014
    Posts:
    21
    When I had similar issue I completely removed the plugin via Window->Stans Assets->IOS Native->Edit Settings->More Actions->Remove iOS Native and installed it again, give that a try to see if it helps
     
  40. Hoskins355

    Hoskins355

    Joined:
    Jan 3, 2013
    Posts:
    142
    ok I will try that now. Thanks

    I removed ios native like described then restarted unity now When I try to reimport ios native from the asset store I get error
    Error importing folder (The pathName assets/extensions is already mapped to 9abd802db75e7462a9f4d21b583af1b4. But the meta data wants it to be mapped to 1e0aaa3a560ac49c0a43083ffecce4fb)

    I will try to build and see what happens It looks like it imported despite the error

    Update: No still get same 10 errors after trying that but thanks for the suggestion
     
    Last edited: Oct 1, 2015
  41. Hoskins355

    Hoskins355

    Joined:
    Jan 3, 2013
    Posts:
    142
    Never mind I finally figured it out.
     
    Last edited: Oct 2, 2015
  42. afterbeta

    afterbeta

    Joined:
    Feb 20, 2013
    Posts:
    10
    Hello,
    I want to detect if an IAP product is free or not using IOSProductTemplate. I couldn't find details about what are returned from IOSProductTemplate.price or IOSProductTemplate.localizedPrice. Do they include the currency symbol? What would be the best practice to parse the price/localizedPrice string to detect if a product is free?
    Thanks in advance!
     
  43. Tinytouchtales

    Tinytouchtales

    Joined:
    Dec 30, 2013
    Posts:
    23
    Hey, i've just integrated iCloud support, which was rather easy on the plugin side but quite a hassle on the iOS side. If you have trouble getting iCloud.init to successfully respond, check if your device has iCloud Drive activated. Settings -> iCloud -> iCloud Drive needs to be "on".

    Here's my one question / request: Is it possible to integrate a callback for when you have successfully uploaded a keyValue? Right now i'm kind of fishing in the dark since i can't confirm if my save game was ever uploaded successfully.
     
  44. David-DNA-Studios

    David-DNA-Studios

    Joined:
    Nov 7, 2014
    Posts:
    5
    @Tinytouchtales I had the same issue; not knowing if anything was saved, but it was actually not being saved. If I uninstalled my app, then installed back, it returned empty data. I checked everything even the native implementation and I stopped at the synchronize method calls. Looking at the documentation, it says:

    I checked the return value which was YES, so the problem would be somewhere between local storage and iCloud. I Googled this problem and I came across this post which solved my issue. Basically, I only had to log off from iCloud and log in again. I was then able to uninstall my app and get data back after a fresh install.

    Hope this helps.

    David
     
    Last edited: Oct 8, 2015
  45. Tinytouchtales

    Tinytouchtales

    Joined:
    Dec 30, 2013
    Posts:
    23
    Thanks @David.DNA Studios . It's working for me so far, the only problem would be if a users saves and somehow it's connection breaks down while syncing and as a result fails to sync. In which case i have no way of knowing if the sync was complete or not.
     
  46. fred_gds

    fred_gds

    Joined:
    Sep 20, 2012
    Posts:
    184
    Hi,

    Just bought the asset and it looks great :)
     
    Last edited: Oct 9, 2015
  47. nyrang

    nyrang

    Joined:
    Sep 14, 2015
    Posts:
    3
    Stan and all,
    I've found a very nasty race condition in the Show/Hide Preloader methods in this asset.
    It took me a lot of headaches to find out why my app would sometimes become completely unresponsive, but I finally traced back the cause to a HidePreloader() call closely followed by a ShowPreloader().
    If the two calls are close enough, the ShowSpinner method in ISN_NativeUtility can be called when the 'spinner' object has not yet been destroyed by the previous Hide. This causes a state in which beginIgnoringInteractionEvents has been called, but no spinner object is present, so any following HidePreloader call is ineffective.

    The most obvious solution is to move the beginIgnoringInteractionEvents call right after the (spinner != nil) check at the start of ShowSpinner. I find no side effect to this fix but still, I would like to know if there's any particular reason why these instructions are currently swapped (maybe there's something I'm missing?).
     
  48. fred_gds

    fred_gds

    Joined:
    Sep 20, 2012
    Posts:
    184
    I have a question. Will IOSRateUsPopUp find my app by itself in the app store or do I need to tell it my App-ID somewhere? Because I could not find such an option and I can not really test it as the app I am developing is not available on the app store yet.
     
  49. acidduck

    acidduck

    Joined:
    Apr 20, 2014
    Posts:
    12
    After upgrading iOS Native to version 8.0.2 and Google Analytics version 2.8.1, XCode can't compile.



    What to do? o_O
     
  50. nyrang

    nyrang

    Joined:
    Sep 14, 2015
    Posts:
    3