Search Unity

  1. Looking for a job or to hire someone for a project? Check out the re-opened job forums.
    Dismiss Notice
  2. Unity 2020 LTS & Unity 2021.1 have been released.
    Dismiss Notice
  3. Good news ✨ We have more Unite Now videos available for you to watch on-demand! Come check them out and ask our experts any questions!
    Dismiss Notice

Introducing IOS Native Pro

Discussion in 'Assets and Asset Store' started by stanislav-osipov, Jun 7, 2018.

  1. J_P_

    J_P_

    Joined:
    Jan 9, 2010
    Posts:
    1,027
    Can the share function only do text and images? Is there a way to share generic files?
     
  2. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
    Hey @J_P_ I don't think so, but I will look into it.
     
  3. RustySong

    RustySong

    Joined:
    Jan 6, 2019
    Posts:
    6
    Hi @lacost, great asset! Can I change the language of date time picker? Now month and week and the "done" button is showed in English, is it possible to change to other languages? Thanks for your help!
     
  4. RustySong

    RustySong

    Joined:
    Jan 6, 2019
    Posts:
    6
    Maybe it's about locale.LanguageCode? I changed iphone's language several times, but locale.LanguageCode always be "en", my unity version is 2019.2.17f1, iOS Native Pro version is 2019.20, iOS version is 13.3
     
  5. RustySong

    RustySong

    Joined:
    Jan 6, 2019
    Posts:
    6
    After adding my language in iOS native pro's xcode panel, date time picker now shown in other languages. Everything is perfect again!
     
  6. faolad

    faolad

    Joined:
    Jan 27, 2013
    Posts:
    118
    Hello recently I got this message from Apple in App Store Connect

    These in-app purchases can’t be promoted on the App Store because your latest approved binary doesn’t include the SKPaymentTransactionObserver method.
     
  7. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
    Hey @RustySong sorry for the slow replay. Well, holidays, you know :)
    I am glad to heta that you figured out how to achieve what you need, and thx a lot for sharing the experience, I feel like it would be really valuable for other users.
     
  8. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
    Are you using InApps API with iOS Native plugin?
     
  9. faolad

    faolad

    Joined:
    Jan 27, 2013
    Posts:
    118
  10. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
    That seems to be not really plugin related issue. My iOS developers have this warning message.

    If you enable the InApps section inside the plugin services UI the SKPaymentTransactionObserver is 100% there.
    I suggest you make a ticket for Apple support. Here is what I found about that issue:
    https://stackoverflow.com/a/48077649/4442673
    https://forums.developer.apple.com/thread/88167


    Edit:
    But actually while reviewing my SKPaymentTransactionObserver implementation I noticed that it's missing implementation of the

    paymentQueueDidChangeStorefront callback - It's new one, and only avaliable for iOS 13
    https://developer.apple.com/documen...paymentqueuedidchangestorefront?language=objc

    That fact might cause an issue during Apple's automatic review. I will add this callback into the plugin and let's see if it helps.

    I will aslo add a new Storefront API to the plugin.
    @faolad I have the same report to the support e-mail, I assume this was from you, so I will send an updated version using that e-mail. If that wasn't you, please PM me, and I will send you an updated plugin.
     
    faolad likes this.
  11. pistoleta

    pistoleta

    Joined:
    Sep 14, 2017
    Posts:
    249
    Hello guys, first of all congratulations for your asset.
    We are trying to use iCloud to save our player's savegame data, and the api seems to work correctly for the KeyValue Storage system.
    But I have a some doubts I hope you can help me with:

    1.It doesn't seem to be any way of clearing just one key, is this correct? the only removing method I found removes all the dictionary.

    2. iCloud document storage doesn't seem to be available. Found it here:
    https://developer.apple.com/library...d.html#//apple_ref/doc/uid/TP40012094-CH2-SW1
    and seems to be useful, not sure why it's not included.

    3. Is there a way to avoid the user accessing to this Key-Value storage? I researched and found a lot about privacy and encryption when sending data but nothing about this values being exposed. I mention this because I used this tool called iExplorer and the whole dictionary of the app was available inside.

    4. Is possible to save a Dictionary inside one of the Key-Values ? Specifically a Dictionary<string,string>, I tried to follow the example on the documentation but I dont seem to make it work, is it a limitation or am I doing something wrong?

    Thanks a lot for your support,
    Regards,
    pistoleta
     
    Last edited: Jan 14, 2020
  12. pistoleta

    pistoleta

    Joined:
    Sep 14, 2017
    Posts:
    249
    Since Apple is going to force any app using third party authentication methods like Facebook or google to use Apple Sign In by April 2020, do you plan adding Apple Sign In feature on your asset?
    Regards
     
    BenWilles likes this.
  13. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
    Hey @pistoleta sorry for a bit slow replay.

    Why not use save games API that is specifically designed to be used for saving game state:
    https://unionassets.com/ios-native-pro/saving-a-game-662


    You can assign it to an empty string like an option.
    That feature isn't inclided to the plugin due to low demand :)

    I am not aware of any security issue that may cause. But you can always apply encryption before you set data into the cloud.


    You can save Dictionary as an object, but you can convert your dictionary to the JSON string and save it into the cloud.
    But keep in mind data limits per key.


    Yes Apple Sing in is coming for sure :)
     
    BenWilles likes this.
  14. BenWilles

    BenWilles

    Joined:
    Mar 9, 2018
    Posts:
    38
    When? Cause new Apps already need it!
     
  15. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
    Should be part of the next update, we already working on it :)
     
    BenWilles likes this.
  16. Colin_MacLeod

    Colin_MacLeod

    Joined:
    Feb 11, 2014
    Posts:
    171
    Hi @lacost !

    I'm interested in using the UIKit elements of iOS Native Pro to enhance a UI we are already developing in Unity UGUI.

    Specifically, we'd like to integrate a native picker into our app. It looks like iOS Native Pro includes "Wheel Picker" for this but that would appear in a separate dialog.

    Can you confirm? Is there any way to embed a native UIKit picker into a Unity UGUI Canvas?
     
  17. Colin_MacLeod

    Colin_MacLeod

    Joined:
    Feb 11, 2014
    Posts:
    171
    If that is not possible, can we create a picker view that pops-up like the native mobile keyboard normally does, when the user clicks on a Unity input field to show feet and inches?
     
  18. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
    Hey @Colin_MacLeod

    No, there is literally no way of doing this. Since UGUI is rendered on GL View and wheel picker dialog would aapear as popover screen on top of the Unity GL view.

    Sure, you can do this. I haven't worked much with UGUI for the past year but I assume it should look something like this:
    • Subscribe toUGUI filed focus event
    • When filed is focused call the IOS Native Pro API to display wheel picker dialog with option you need
    • When the dialog is closed (user made his choice) get dialog result value and set it to UGUI filed.
     
  19. Colin_MacLeod

    Colin_MacLeod

    Joined:
    Feb 11, 2014
    Posts:
    171
    Hey @lacost really appreciate your getting right back to me - must be very late for you!

    We bought your asset - it certainly covers a lot of ground and looks clear and easy to follow. One thing we would like is to be able to have a wheel picker view with 2 columns - for feet and inches.

    Is there any way to do this?
     
  20. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
    This is probably the one piece of code that was made by the external developer for me :) Hate working with ios UI via Objective-C. I'll take a look if I can add it really quick. On the side note, in case it would take me too much time all the source is open ;)
     
    Colin_MacLeod likes this.
  21. Colin_MacLeod

    Colin_MacLeod

    Joined:
    Feb 11, 2014
    Posts:
    171
    Let me know if you manage to add this - would be absolutely fantastic and I'm sure we're not the only ones needing it, so would be a great addition to the library for sure.

    The Date Time Picker is similar - I wonder if that's something we could adapt?
     
  22. Colin_MacLeod

    Colin_MacLeod

    Joined:
    Feb 11, 2014
    Posts:
    171
    Hi @lacost

    I implemented the single column version and noticed a couple of things we'll need to tweak:
    • Is there a way to set a default/start value? When I create the picker, I supply the values to choose from but it always appears at the top of the list - I'd like to start it at the current value (from the Unity text field).
    • Is it possible to detect a click outside the picker and call Done (call the result callback)? Ideally, we'd want to remove the Cancel/Done buttons altogether.
    Do you have any pointers?
     
  23. jrDev

    jrDev

    Joined:
    Nov 5, 2008
    Posts:
    1,736
    Hello,

    can you use this with Playmaker?

    Thanks,
    jrDev
     
  24. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
  25. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
    Hey, folks, I am happy to announce that Sign in with Apple will be available starting from IOS Native Pro 2020.2.
    Here is a small code demo:

    To Perform Sing in Request:
    Code (CSharp):
    1. using SA.iOS.UIKit;
    2. using SA.iOS.AuthenticationServices;
    3. ...
    4.  
    5. var provider = new ISN_ASAuthorizationAppleIDProvider();
    6. var request = provider.CreateRequest();
    7.  
    8. var requests = new ISN_ASAuthorizationRequest[] { request };
    9. var authorizationController = new ISN_ASAuthorizationController(requests);
    10.  
    11. var @delegate = new AuthorizationDelegateExample();
    12. authorizationController.SetDelegate(@delegate);
    13. authorizationController.PerformRequests();
    The result delivered into the delegate you set to ISN_ASAuthorizationController. Here is AuthorizationDelegateExample class implementation that was used as a delegate instance in the previous snippet.
    Code (CSharp):
    1. using SA.Foundation.Templates;
    2. using SA.iOS.AuthenticationServices;
    3. using UnityEngine;
    4.  
    5. public class AuthorizationDelegateExample : ISN_IASAuthorizationControllerDelegate
    6. {
    7.     public void DidCompleteWithAuthorization(ISN_ASAuthorizationAppleIDCredential credential)
    8.     {
    9.         Debug.LogError("Apple Sing In Completed: ");
    10.         Debug.Log("credential.User: " + credential.User);
    11.         Debug.Log("credential.Email: " + credential.Email);
    12.         Debug.Log("credential.State: " + credential.State);
    13.      
    14.         Debug.Log("credential.AuthorizationCode: " + credential.AuthorizationCode);
    15.         Debug.Log("credential.IdentityToken: " + credential.IdentityToken);
    16.      
    17.         Debug.Log("credential.FullName.Nickname: " + credential.FullName.Nickname);
    18.         Debug.Log("credential.FullName.FamilyName: " + credential.FullName.FamilyName);
    19.         Debug.Log("credential.FullName.GivenName: " + credential.FullName.GivenName);
    20.         Debug.Log("credential.FullName.MiddleName: " + credential.FullName.MiddleName);
    21.         Debug.Log("credential.FullName.NamePrefix: " + credential.FullName.NamePrefix);
    22.         Debug.Log("credential.FullName.NameSuffix: " + credential.FullName.NameSuffix);
    23.     }
    24.  
    25.     public void DidCompleteWithError(SA_Error error)
    26.     {
    27.         Debug.LogError("Apple Sing In Failed: " + error.FullMessage);
    28.     }
    29. }
     
  26. jrDev

    jrDev

    Joined:
    Nov 5, 2008
    Posts:
    1,736
    Hello,

    So this is another asset? I bought iOS NativePro awhile ago, is there an upgrade fee to get this Ultimate version?

    Thanks,
    jrDev
     
  27. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
    @jrDev. Yes, this is another asset.
    UltimateMobile Pro - Contains iOS NativePro + Android Native Pro + CorssPlatfrom API. And there is an ability to add Playmaker Actions for free as an addon.

    Since you own iOSNative Pro already you will get more than 50% off.
     
  28. jrDev

    jrDev

    Joined:
    Nov 5, 2008
    Posts:
    1,736
    Hello,

    Awesome! What do I need to do to get the discount?

    Thanks,
    jrDev
     
  29. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
    @jrDev nothing :) You should just see the discounted price in the asset store.
    If you not for some reason, please PM me your plugin purchase info, I will poke the Asset Store support team. Thank you!
     
  30. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
    IOS Native Pro 2020.2 is now available!

    • Sign In with Apple API Added.
    • Replay Kit: View presentation controller fixed
    • IOS Native hash storage objects link fixed.
    • ISN_AVCaptureDevice.RequestAccess bug when using with audio permission fixed.
    • Deprecated UIApplicationExitsOnSuspend plist flag will be automatically removed during the build post process.
    • AuthenticationServices added.
    • UIActivityViewController - added and ability to share urls (web and local)
    • Storefront API added.
     
  31. jrDev

    jrDev

    Joined:
    Nov 5, 2008
    Posts:
    1,736
    Hello,

    So I don’t see the discount.

    Check your PM!

    Thanks,
    jrDev
     
  32. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
    Thx for pm with invoice details I'll get in touch with asset store support and get back to you.
    If you don't want to wait until they replay you can just buy for the full price and I will request partial refund for you.
     
  33. YHX2000

    YHX2000

    Joined:
    Aug 2, 2015
    Posts:
    17
    Hi @lacost, I'm having problem with using the iCloud Load feature using GameKit.

    Using: latest plugin version/ unity 2019.20, Xcode 11.3

    The problem:
    1. I'm obviously saving game to iCloud successfully
    2. When I use the example code from the manual on Stan's Assets site to get the savegame back from iCloud
    Logs are telling me that I have fetched 1 save game but then I have this error in XCode 11.3 when use methods: MySaveGame.load() or ISN_GKLocalPlayer.LoadGameData:

    Failed to invoke callback System.Action`1[SA.iOS.GameKit.ISN_GKSavedGameLoadResult] with arg {"m_error":{"m_message":"Saved game not found. Check the game's name of fetch saved games before using this method, please!","m_code":999}}: Exception has been thrown by the target of an invocation.

    SA.iOS.Utilities.ISN_MonoPCallback:MonoPCallbackInvoke(IntPtr, String)

    by the way I'm 110% sure about the name -> "testX"

    I tried both Methods i.e. MySaveGame.load() or ISN_GKLocalPlayer.LoadGameData

    Can someone please post example code to save and load save games ?

    Anyone else had this problem ?

    Here is the functions that is getting & loading the save game
    Code (CSharp):
    1. public bool loadCloudSaveGameData(ISN_GKSavedGame chosenGame)
    2.     {
    3.         bool isLoaded = false;
    4.         if (chosenGame != null)
    5.         {
    6.             ISN_GKLocalPlayer.LoadGameData(chosenGame, (ISN_GKSavedGameLoadResult result) => {
    7.                 Debug.Log("Loading game data is starting NOW! ");
    8.                 if (result.IsSucceeded)
    9.                 {
    10.                     Debug.Log("Loading game data is succeeded! " +
    11.                         "StringData = " + result.StringData + " " +
    12.                         "byte array length " + result.BytesArrayData.Length);
    13.  
    14.                     CloudSaveData = ByteArrayToObject(result.BytesArrayData);
    15.                     Debug.Log("CloudSaveData.option3 Value is Z: " + CloudSaveData.option3.ToString());
    16.                     Debug.Log("CloudSaveData.option5 Value is Z: " + CloudSaveData.option5.ToString());
    17.                     Debug.Log("CloudSaveData.initDB Value is Z: " + CloudSaveData.initDB.ToString());
    18.                     isLoaded = true;
    19.                 }
    20.                 else
    21.                 {
    22.                     Debug.Log("Loading game data has failed! Error with code: " + result.Error.Code + " and description: " + result.Error.Message);
    23.                     isLoaded = false;
    24.                 }
    25.  
    26.                 if (result.HasError == true)
    27.                 {
    28.                     Debug.Log("result.Error.FullMessage" + result.Error.FullMessage);
    29.                 }
    30.  
    31.                 if (result.IsFailed == true)
    32.                 {
    33.                     Debug.Log("Loading has failed brother !!!!");
    34.                     Debug.Log("StringData" + result.StringData);
    35.                     Debug.Log("BytesArrayData.Length" + result.BytesArrayData.Length.ToString());
    36.                 }
    37.  
    38.             });
    39.         }
    40.        
    41.  
    42.         return isLoaded;
    43.     }


    Code (CSharp):
    1. public void LoadGame()
    2.     {
    3.         ISN_GKSavedGame tempSaveGamePulled = getCloudSaveGame("testX");
    4.  
    5.         tempSaveGamePulled.Load((ISN_GKSavedGameLoadResult result) => {
    6.  
    7.             if (result.IsSucceeded)
    8.             {
    9.                 Debug.Log("YES !!!");
    10.                 Debug.Log(result.BytesArrayData.Length.ToString());
    11.             }
    12.    
    13.              });
    14.  
    15.  
    16.         if (tempSaveGamePulled != null)
    17.         {
    18.             Debug.Log("Save Game Is NOT NULL !!!!");
    19.             if (ISN_GKLocalPlayer.LocalPlayer.Authenticated == true)
    20.             {
    21.                 if (loadCloudSaveGameData(tempSaveGamePulled) == true)
    22.                 {
    23.                     Debug.Log("Save Game Is loaded !!!!");
    24.                     if (CloudSaveData != null)
    25.                     {
    26.                         Debug.Log("CloudSaveData.option3 Value is: " + CloudSaveData.option3.ToString());
    27.                         Debug.Log("CloudSaveData.option5 Value is: " + CloudSaveData.option5.ToString());
    28.                         Debug.Log("CloudSaveData.initDB Value is: " + CloudSaveData.initDB.ToString());
    29.                     }
    30.                     else
    31.                     {
    32.                         Debug.Log("CloudSaveData Is NULL !XAXA !!!!");
    33.                     }
    34.                 }
    35.                 else
    36.                 {
    37.                     Debug.Log("Save Game Is NOT !!! loaded !!!!");
    38.                 }
    39.             }
    40.             else
    41.             {
    42.                 Debug.Log("User not Auth!!!");
    43.                 Auth();
    44.             }
    45.         }
    46.         else
    47.         {
    48.             Debug.Log("Save Game Is NULL !!!!");
    49.         }
    50.     }

     
    Last edited: Feb 9, 2020
  34. erre-rox

    erre-rox

    Joined:
    Dec 3, 2012
    Posts:
    23
    Hi @lacost,

    we are trying to update our existing project from old IOS Native Plugin to the new IOS Native Pro!
    The re-work seems to be very good! Nice work!

    I'm just having a problem with the new Purchase Flow: with the old IOS native plugin, when the transaction was completed, I was able to get the receipt in the callback (it was in the result object).
    With the new IOS Native Pro, i receive a ISN_iSKPaymentTransaction object that does not contain a receipt.

    Reading your documentations I found the class ISN_SKPaymentQueue.AppStoreReceipt. Will this be updated automatically after a purchase or I should call a ISN_SKRefreshReceiptRequest?
    I need this to make the purchase validation flow through our back-end service.

    Thanks for your help.
     
  35. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
    @YHX2000 can you please show what's inside your getCloudSaveGame("testX") method?

    @erre-rox Yea, Apple has changed the way validation works. There is no receipt per transaction anymore.
    Here is how to validate an article from Apple:
    https://developer.apple.com/documen...ing_receipts_with_the_app_store?language=objc

    You basically need to send the app receipt (ISN_SKPaymentQueue.AppStoreReceipt) after the purchase is completed, and apple will return all the valid transaction, you can then check if your last transaction is there.
    That at least how I understood the new validation flow :)
     
  36. erre-rox

    erre-rox

    Joined:
    Dec 3, 2012
    Posts:
    23
    We are using Microsoft - PlayFab as back-end for validation.
    https://docs.microsoft.com/en-us/re...-methods/validateiosreceipt?view=playfab-rest
    They say that AppleStore returns also a specific receipt for the single purchase.
    How can I get that with StansAssets?
    Should I get the entire App Receipt and search in it?
     
  37. YHX2000

    YHX2000

    Joined:
    Aug 2, 2015
    Posts:
    17
    @lacost thanks for the quick response the getCloudSaveGame("testX") method has the following:

    Code (CSharp):
    1. public ISN_GKSavedGame getCloudSaveGame(string cloudSavedGameName)
    2.     {
    3.         Debug.Log("Getting Cloud Data...");
    4.         ISN_GKSavedGame tempCloudSavedGame = new ISN_GKSavedGame();
    5.         ISN_GKLocalPlayer.FetchSavedGames((ISN_GKSavedGameFetchResult result) =>
    6.         {
    7.  
    8.             if (result.SavedGames.Count > 0)
    9.             {
    10.                 if (result.IsSucceeded)
    11.                 {
    12.                     Debug.Log("Downloaded " + result.SavedGames.Count + " saved games");
    13.  
    14.                     foreach (ISN_GKSavedGame game in result.SavedGames)
    15.                     {
    16.                         ->>>>>>> Debug.Log("New Game with name: " + game.Name);<<<<<<-
    17.                         if (game.Name == cloudSavedGameName)
    18.                         {
    19.                             Debug.Log("Data Assigned to Temp Object...");
    20.                             tempCloudSavedGame = game;
    21.                             Debug.Log("Game Name: " + game.Name);
    22.                             Debug.Log("Device Name: " + game.DeviceName);
    23.                             Debug.Log("Modification Date: " + game.ModificationDate);
    24.                         }
    25.                     }
    26.                 }
    27.                 else
    28.                 {
    29.                     Debug.Log("Fetching saved games is failed! " + "With: " + result.Error.Code + " and description: " + result.Error.Message);
    30.                 }
    31.             }
    32.             else
    33.             {
    34.                 Debug.Log("save games count " + result.SavedGames.Count);
    35.             }
    36.  
    37.  
    38.         });
    39.  
    40.         return tempCloudSavedGame;
    41.     }
    You can see below the log from xcode that is printing the debug.Log that I have in the method above (it's bold and underlined ) which proofs that I do have save game "testX" in the cloud.
    And you can also see that "Data assigned to Temp object..." is printed as well which means that the correct save game is found and returned

    Screenshot 2020-02-11 at 22.14.22.png Screenshot 2020-02-11 at 22.14.22.png
     
    Last edited: Feb 11, 2020
  38. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
    With my plugin, I am trying to much Apple and Google API in C#-ihs manner. The reason I am during this is to enable customers to be able to search for solutions using native Apple or Google API and then use it with C# code from the plugins.

    I have no idea what PlayFab is expecting to get, but if you will point me to the exact Apple StoreKit API you need, I would be happy to give you an example how you can do tha same with plugin C# code or will add it if this feature is missing.
    Please share a link of StoreKit API you would like to have or can't use with the plugin.
     
  39. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
    @YHX2000 thx. Could you share the whole XCode log as the text? I will test on my side in the mean time.
     
  40. erre-rox

    erre-rox

    Joined:
    Dec 3, 2012
    Posts:
    23
    I would like to know how to retrieve the same receipt as before (the one given by the IOS Native Plugin purchase flow) with the new IOS Native Pro.
    I'm assuming it should be done with the new AppStore receipt. But should I update manually the receipt after a purchase or the receipt is already updated when a purchase is completed?
     
  41. pistoleta

    pistoleta

    Joined:
    Sep 14, 2017
    Posts:
    249
    Why the ISN_ASAuthorizationAppleIDCredential identityToken comes as an array of bytes?
    Apple Sign in should ask the user if wants to provide the real mail or a fake one, this one doesn't but the official asset does, I thought this one would be somehow better, at least this one adds the capabilities to the project.
    But the framework authentication services should be added as optional as the documentation says (attached). I think I've read its for compatibility with previous iOS versions but not sure.
     

    Attached Files:

  42. YHX2000

    YHX2000

    Joined:
    Aug 2, 2015
    Posts:
    17
    @lacost please find the file attached with the full log
     

    Attached Files:

  43. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
    The old plugin was using the deprecated StokeKit API that is no longer available. The AppStore receipt should be updated after the purchase, so you can just grab it and send it to the server-side for verification.
    And like I said if you feel like you missing some StoreKit functionality, just point me to the apple documentation and I will make it available with the plugin.
     
  44. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
    Because it's the same way it was provided by apple API:
    https://developer.apple.com/documen...redential/3153035-identitytoken?language=objc

    The official asset? I might've missed some settings for authorization flow. Can you give me the link ?

    Thanks a good point, I'll fix it.
     
  45. pistoleta

    pistoleta

    Joined:
    Sep 14, 2017
    Posts:
    249
    stanislav-osipov likes this.
  46. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
    @YHX2000 Oh mate, the problem is in your getCloudSaveGame.

    At the beginning of the method you do this:
    Code (CSharp):
    1. ISN_GKSavedGame tempCloudSavedGame = new ISN_GKSavedGame();
    this is an empty game and it's can't be loaded and this is exactly what your getCloudSaveGame function will always return. That's the reason you can't load the game because you're trying to load an empty game.
    That also provided by the XCode log yu posted
    As you see game name and uniqueId are both empty.
    I understand that you trying to do ISN_GKLocalPlayer.FetchSavedGames in your function. But here is the thing. the FetchSavedGames is async, and your function is sync.
    Your function will return BEFORE you will get a callback from FetchSavedGames and will assign actually game to your
    tempCloudSavedGame local variable.
    I hope I was able to explain properly :)
     
    YHX2000 likes this.
  47. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,782
    I'll take a look and will make improvements with the new update. If you feel like anything else is missing or doesn't work as expected please let me know.
     
    pistoleta likes this.
  48. pistoleta

    pistoleta

    Joined:
    Sep 14, 2017
    Posts:
    249
    Thanks man :)
     
  49. pistoleta

    pistoleta

    Joined:
    Sep 14, 2017
    Posts:
    249
    Hello there, It's me again :)

    Going through all the Social Media API and I see there's not too many documentation, I'm wondering several things:

    Isn't it possible to share videos in the allowed social networks? Specially taking into account we can use the Replay Kit to recording the game... I just see possibility to post Texture2D. Nowadays on Instagram this 'histories' or whatever they are called are very popular, isn't it possible to upload a history as a recording from the game?

    Update: Tried posting screenshot with Facebook, twitter, IG and WhatsApp and while with FB and Twitter the app dialog appeared to publish the screenshot, whith IG and WhatsApp this generic dialog appears:
    https://www.dropbox.com/s/5nwukcy7moj2r6l/IMG_9799.PNG?dl=0
    Thanks again.
     
    Last edited: Feb 14, 2020
  50. jason416

    jason416

    Joined:
    Nov 8, 2018
    Posts:
    29
    Hi I’m really stuck for a couple days on this, I’m hoping someone has done this....

    I’m simply trying to allow the user open a Mail attachment in my app using the copy to... option. I have the plist setup already so my app is showing as an option to copy to, but when my app opens it’s not finding a reference to the attachment. I have tried using getLaunchUrl() and getLaunchUniversalLink().

    But I believe I need to access this method and property:
    application:willFinishLaunchingWithOptions
    UIApplicationLaunchOptionsURLKey

    Is this possible using iOS Native Pro?

    UPDATE: ok I'm dumb, I forgot to flip on the App Delegate switch in the services panel. getLaunchURL is passing the URL now.
     
    Last edited: Feb 21, 2020
unityunity