Search Unity

[Released] Ultimate Mobile Pro

Discussion in 'Assets and Asset Store' started by stanislav-osipov, Oct 19, 2018.

  1. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    I am very happy to tell that Ultimate Mobile Pro is finally released (barrels of coffee were not wasted :) )
    Let me give you a quick introduction of Ultimate Mobile Pro. And explain why you should have this tool in your project if you are targeting mobile development with Unity.
    Asset Store Link | Documentation
    800-400.png

    What the Ultimate Mobile is?

    This is a bundle that contains Stan's Assets best mobile native plugins inside wrapped with powerful unified API. The goal for the product is super simple, I want to cover all your native feature need for the Mobile development with Unity. So if you would miss something, never hesitate to get in touch with me. I am always happy to accept reasonable feature requests. Supported platforms and number of features will constantly grow. But we value stability over the number of features. That's why for example we have an automatic testing system, that is dedicated to checking every tiny detail before new plugin version is published on a store.

    Cross-Platform API Benefits
    • Time Saver. Only make implementation once, that will work the same way for each supported platform.
    • Editor Testing. When you testing your project inside the Unity Editor, you can only test your native services implementation. The Ultimate Mobile plugin will emulate native services workflow when running inside Unity Editor.

    What you else should know about cross-platform API

    We've been working with native services for a quite a while, and believe it or now, but each platform has own "know issues" and "not really obvious flows/workaround" you need to know when you want to make a solid native service implementation. Let me give you an example. Let's say you want your user to sign in with Google Play, Did you know:
    • The difference between interactive & silent sign in?
    • The difference between a user account and a user player objects?
    • All the flows how a user can switch account or sign out without using UI provided by your game. But you still need to track this.
    • What is going to happen if the user will press the home button during Sign In process and activity will be killed by a system.
    • How to react to Google Sing in Errors (documented & not documented) and how to implement error resolution flows if possible.
    After working with iOS / Android for the last couple of years, and constantly getting customer reports, who use our products in huge projects, I can keep going all day describing small but important things that you should know about native implementation and flow you should handle. But sometimes it's easier to make then talk. And this is exactly what is the Ultimate Mobile for, it will just get all this work off your shoulders. Everything will be handled internally.

    You should also be aware of, then no matter how hard we try to make cross-platform API, each platform will have unique things, that you might want to use but they aren't covered with cross-platform AI. In most cases, cross-platform API covers around 80% of possibilities provided by a platform. Since some flows can be totally different. Here are a few examples for you.

    Let's say you want to check if a certain app is installed on the device. You can do this for both platforms using our plugins.
    • On Android, you can use PackageManager, and check app by its bundle id "com.facebook.katana".
    • On iOS, you can't use bundle id, but you can use UIKit framework check if certain URL Scheme is registered in a system, and make a conclusion. For example, if "fb://" scheme is registered - it means that the Facebook app is Installed.
    But as you see, there are not possibilities to provide a cross-platform API that will allow you to make the same flow for both platforms.

    Here is another example for you. The In App Purchases. We managed to design flow that will work for both platforms. But there is no way to wrap validation flow in a cross-platform API. This is the exact case when you need to use a combination of cross-platform and system native API. Check out the example.

    Pro-line principles
    Apart from all the statements above, the Ultimate Mobile will inherit all the pro-line plugins development principles:
    • Full Open source. That's pretty simple, I do not think not an open source product can work for the developer community. If you are a junior developer, we will be happy if you learn something with our code. If you are a senior developer, we do not want you to have a “back box” in your project and we always open to critics and suggestions.

    • Strict code convention. You can read more about convention rules here. As our code will be a part of your project, the goal of the convention was:
      • You will never mix your and our classes
      • Filename / Class name itself will tell you where it belongs
      • By only looking on the class signature you will be able to understand how to use it properly.
      • Every public method and class should be documented. Of course, we have an online documentation and guides. But sometimes reading the method description is all you want to know.
    • Nice looking and user-friendly settings editor. This one is pretty simple with any third-party plugin you are adding to your cool project, you want to have a centralized, good-looking, and intuitive settings editor for it.

    • Ability to enable/disable modules. This one also as simple as it is. You only want plugin parts that you are using. So if some feature requires additional frameworks or files, you want to have it disabled if you do not have the intent to use it in your project.

    • Automatic project configuration. You do not have to make any additional configuration your build. If something is missing plugin will fix this on build pre-processing stage. The main goal is to be able to support cloud build services out of the box.
    Looking forward to your feedback. I am really want to make this the best asset store mobile plugin, no kidding :)
     
    Last edited: Oct 19, 2018
  2. jGate99

    jGate99

    Joined:
    Oct 22, 2013
    Posts:
    1,939
    Hi there,
    I'm using latest version of ultimate mobile pro and when i try to pick an image from gallery on android i get java runtime errors. project is built using Unity 2018.3 with exported into an android studio project with SDK 27.
    please advise
     
  3. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    Hey @AmRafay1 I'll definitely try it in 2018.3 right now. But in order to better understand your issues, would be nice of you can get me your crash log.
    Thx.
     
  4. jGate99

    jGate99

    Joined:
    Oct 22, 2013
    Posts:
    1,939
    Thanks for prompt reply,

    When i run the game, i get this error in log


    Code (CSharp):
    1. [Exception] AndroidJavaException: java.lang.ClassNotFoundException: com.stansassets.core.utility.AN_UnityBridge
    2.    java.lang.ClassNotFoundException: com.stansassets.core.utility.AN_UnityBridge
    3.    java.lang.Class.classForName(Native Method)
    4.    java.lang.Class.forName(Class.java:324)
    5.    java.lang.Class.forName(Class.java:285)
    6.    com.unity3d.player.UnityPlayer.nativeRender(Native Method)
    7.    com.unity3d.player.UnityPlayer.c(Unknown Source)
    8.    com.unity3d.player.UnityPlayer$e$2.queueIdle(Unknown Source)
    9.    android.os.MessageQueue.next(MessageQueue.java:397)
    10.    android.os.Looper.loop(Looper.java:164)
    11.    com.unity3d.player.UnityPlayer$e.run(Unknown Source)
    12.    Caused by: java.lang.ClassNotFoundException: Didn't find class "com.stansassets.core.utility.AN_UnityBridge" on path: DexPathList[[zip file "/data/app/com.pixelfavor.pixelart-1/base.apk"],nativeLibraryDirectories=[/data/app/com.pixelfavor.pixelart-1/lib/arm, /data/app/com.pixelfavor.pixelart-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
    13.   dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    14.   java.lang.ClassLoader.loadClass(ClassLoader.java:511)
    15.   java.lang.ClassLoader.loadClass(ClassLoader.java:469)
    16.   ... 9 more
    17.   Suppressed: java.lang.ClassNotFoundException: com.stansassets.core.utility.AN_UnityBridge
    18.   java.lang.Class.classForName(Native Method)
    19.   java.lang.BootClassLoader.findClass(ClassLoader.java:781)
    20.   java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
    21.   java.lang.ClassLoader.loadClass(ClassLoader.java:504)
    22.   ... 10 more
    23.   Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
    24.   UnityEngine.AndroidJNISafe.CheckException () (at <00000000000000000000000000000000>:0)
    25.   UnityEngine.AndroidJNISafe.CallStaticObjectMethod (System.IntPtr clazz, System.IntPtr methodID, UnityEngine.jvalue[] args) (at <00000000000000000000000000000000>:0)
    26.   UnityEngine.AndroidJavaClass._AndroidJavaClass (System.String className) (at <00000000000000000000000000000000>:0)
    27.   SA.Android.Utilities.AN_MessageHandler.Initialize () (at <00000000000000000000000000000000>:0)
    28.  
    29. [Exception] AndroidJavaException: java.lang.ClassNotFoundException: com.stansassets.core.utility.AN_Logger
    30.   java.lang.ClassNotFoundException: com.stansassets.core.utility.AN_Logger
    31.   java.lang.Class.classForName(Native Method)
    32.   java.lang.Class.forName(Class.java:324)
    33.   java.lang.Class.forName(Class.java:285)
    34.   com.unity3d.player.UnityPlayer.nativeRender(Native Method)
    35.   com.unity3d.player.UnityPlayer.c(Unknown Source)
    36.   com.unity3d.player.UnityPlayer$e$2.queueIdle(Unknown Source)
    37.   android.os.MessageQueue.next(MessageQueue.java:397)
    38.   android.os.Looper.loop(Looper.java:164)
    39.   com.unity3d.player.UnityPlayer$e.run(Unknown Source)
    40.   Caused by: java.lang.ClassNotFoundException: Didn't find class "com.stansassets.core.utility.AN_Logger" on path: DexPathList[[zip file "/data/app/com.pixelfavor.pixelart-1/base.apk"],nativeLibraryDirectories=[/data/app/com.pixelfavor.pixelart-1/lib/arm, /data/app/com.pixelfavor.pixelart-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
    41.    dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    42.    java.lang.ClassLoader.loadClass(ClassLoader.java:511)
    43.    java.lang.ClassLoader.loadClass(ClassLoader.java:469)
    44.    ... 9 more
    45.    Suppressed: java.lang.ClassNotFoundException: com.stansassets.core.utility.AN_Logger
    46.    java.lang.Class.classForName(Native Method)
    47.    java.lang.BootClassLoader.findClass(ClassLoader.java:781)
    48.    java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
    49.    java.lang.ClassLoader.loadClass(ClassLoader.java:504)
    50.    ... 10 more
    51.    Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
    52.    UnityEngine.AndroidJNISafe.CheckException () (at <00000000000000000000000000000000>:0)
    53.    UnityEngine.AndroidJNISafe.CallStaticObjectMethod (System.IntPtr clazz, System.IntPtr methodID, UnityEngine.jvalue[] args) (at <00000000000000000000000000000000>:0)
    54.    UnityEngine.AndroidJavaClass._AndroidJavaClass (System.String className) (at <00000000000000000000000000000000>:0)
    55.    SA.Android.Utilities.AN_Logger.Init () (at <00000000000000000000000000000000>:0)
    56.  
    57.     [Log] GS: Connecting to:wss://preview-P353805LgLSt.ws.gamesparks.net/ws/device/P353805LgLSt?deviceOS=ANDROID&deviceID=da7a1861f3b71b114bb5b040fa1e10e7&SDK=Unity
    58.    UnityEngine.Logger:Log(LogType, Object)
    59.    GameSparks.Platforms.PlatformBase:Update()
    60.  
    61. [Exception] NullReferenceException: Object reference not set to an instance of an object.
    62.    UnityEngine.AndroidJavaObject.Dispose (System.Boolean disposing) (at <00000000000000000000000000000000>:0)
    63.    UnityEngine.AndroidJavaObject.Finalize () (at <00000000000000000000000000000000>:0)
    64.    

    Please do note that im building this project by exporting to Android Studio with custom Gradle file. Let me know if this has to do something with it
     
  5. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    Well according to log, one of the core android native lib's wasn't picked up.
    Those libraries normally added to the build with your build with internal or grudge build for Unity. I am not sure the way you do it, but that's obviously the issues.
    If you will get in touch with me, I am sure we will solve this case. Thanks.
     
    jGate99 likes this.
  6. jGate99

    jGate99

    Joined:
    Oct 22, 2013
    Posts:
    1,939
    Thanks, i created a seperate project, added UMpro, exported android studio project copied following lines in my custom gradle


    implementation(name: 'an_core', ext:'aar')
    implementation(name: 'an_gallery', ext:'aar')
    implementation project(':an_library.bundle')


    and now everything seems fine except following errror
    Program type already present: com.google.gson.annotations.Expose


    Please advise
     
  7. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    Please be aware that the number of required libraries are based on your current AN settings.

    That's what I found:
    https://stackoverflow.com/questions...dy-present-com-google-common-annotations-beta


    Also, it's maybe my bad, since I included gson lib straight to the an_core.aar
    Screenshot_110618_113110_PM.jpg

    So if any other libraries you use did the same... that's your conflict.
    In case you have gson lib referenced separately, I think as a quick fix you can not include gson lib directly (if you do ofcrouce)

    Meanwhile, on my end, I will exclude gson lib from the an_core.aar and will have it as separate file or maven dependency if possible.
    Let me know if you able to fix it. If not, then please get it touch with me directly I will send you an updated plugin. Thx.
     
    jGate99 likes this.
  8. jGate99

    jGate99

    Joined:
    Oct 22, 2013
    Posts:
    1,939
    Ideally, UMPRo should have gson lib library as a seperate file/maven etc so there are less chances of it conflicting with other libraries out there.

    Im gonna message you directly.
    Thanks and great work on newly improved Pro version, its a delight.
     
  9. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    I am glad you guys enjoying it. Will make an update for you ASAP.
     
    Last edited: Nov 7, 2018
    jGate99 likes this.
  10. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    The 2018.7.3 is now live on the Asset Store.

    New:
    • In case you used the previous version, manually remove the ISN_Media.cs file
    • Game Services: Saved games API added.
    • Game Services: Leaderboards API added.
    • Facebook: service added.

    Next update plan:
    • Improve In-App purchases & Game Service API editor emulation
    • Google Mobile Ad & Unity Ads services support
    • Google Analytics & Unity Analytics services support
    • Summary tab
     
    jGate99 likes this.
  11. Webbstre

    Webbstre

    Joined:
    Mar 7, 2015
    Posts:
    41
    Two questions:
    1- I just realized this new 2018 version was out and I couldn't directly update from the now depreciated version. Are there any special for upgrading or can I just install on top of the old version?

    2- I can't for the life of me figure out how to pull the player's rank for a leaderboard out from Google Play and show it in-game. Can you help?
     
  12. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    Hey, @Webbstre
    There is no compatibility between old Ultimate and new Ultimate Mobile Pro. Ultimate Mobile Pro is a completely new product, so you need to remove old plugins completely and then install the Ultimate Mobile Pro. In case you will have any difficulties, I am always here to help!

    I figure if you asking this inside Ultimate Mobile brunch, you probably want a cross-platform solution for Google Play and IOS.

    I assume plugin, google play console & iTunes set up is complete. In case you still in progress here is Getting Started Game Service guide, that meant to help with this.

    For Google Play:
    • Getting Started - Plugin and Android console configuration guide
    • Games Sing-in - Sing into Google Play Games service before you can use leaderboards API
    • Leaderboards - The leaderboards API. And in order to display current player rank for the specific leaderboard, you need to load leaderboard metadata and retrieve player score and rant from that data.
    For Ultimate Mobile:
    The approach is 100% the same:
    When I was making this post I realized that I haven't yet implemented cross-platform ability to load scores & leaderboard metadata for the ultimate mobile. So I will start working on it now. Please ping me if you want me to send you a beta version.
    Also please let me know if my explanations weren't clear enough. Thx.
     
  13. matiasini

    matiasini

    Joined:
    Mar 11, 2014
    Posts:
    8
    Hi, I have uninstalled Ultimate Mobile and installed Ultimate Mobile Pro, I must say that the installation looks more neat than the previous version :)
    In the documentation I can not find how to call the native loading or the rate me. Can you please help me how to integrate these 2 items?
    Thanks
    Matias Ini
     
  14. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    Hey, @matiasini I am investing a lot in UI, to be honest, want to really feel simple and intuitive. Actually, it's pretty easy to find how to use Native Dialogs. Atch service has caret button you can click to expand guide/feature view, please take a look:
    Screenshot_111218_033255_AM.jpg

    If you click on "Native Dialogs" it will redirect you to this guide:
    https://unionassets.com/ultimate-mobile-pro/native-dialogs-722

    About rate us popup, well... I know I need to make it cross-platform as well, but still thinking how to explain that iOS requires Store Kit Enabled for that :)

    I a meantime here is articles for iOS and Android native plugins you can use so far. Or I can make cross-platform implementation tomorrow and send a beta version for you.

    iOS
    https://unionassets.com/ios-native-pro/store-review-controller-631
    Android
    https://unionassets.com/android-native-pro/rate-us-dialog-710
     
  15. Webbstre

    Webbstre

    Joined:
    Mar 7, 2015
    Posts:
    41
    So the code I used based on the older Ultimate will all be different? I have been hesitating on the upgrade before I know all of the effects.

    Just in case, could you show me a direct example, along the lines of:
    int currentRank = somecode....(leaderboardID);
     
  16. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,548
    There is no more push notification from onesignal?
     
  17. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    Yep, new plugin, absolutely new code base.

    I actually just finished the UM cross-platform API for this. Does it look like an exact think you are looking for?
    https://unionassets.com/ultimate-mobile-pro/leaderboards-731#creating-in-game leaderboards-ui


    Nope. I might add onesignal plugin support in future since I am currently working on a 3rd-party services module.
    OneSingla looks like good feet for that, but current we already have Firebase support and iOS APNs. The next plans for 3rd party services are:
    • Google Ads + Unity Ads
    • Google Analytics + Unity Analytics
    • Playmaker
    Once those is done I would be happy to consider other 3rd party services as well.
     
  18. matiasini

    matiasini

    Joined:
    Mar 11, 2014
    Posts:
    8
    Hi @lacost, thanks for your support.
    I have managed to integrate the rate pop up, thanks.
    As for Native Dialogs, I was not asking for that, I have managed to integrated them on my own.
    I was asking about Native Loading.
    In the previews version of Ultimate Mobile you can show/hide a preloader like this:
    MNP.ShowPreloader("", "");
    MNP.HidePreloader();

    How can I manage to do the same on Ultimate PRO?
    Thanks
     
  19. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,548
    Ok great, was using Onesignal from your old U5 version. Means I can't upgrade.
     
  20. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    @imtrobin you can still upgrade, but just use Onesignal plugin directly, and in a few months we would able to support it as separate service.

    @matiasini you are right I forgot to implement this. Please PM me, I will send you an updated version that will contain cross-platform API for Rate Us popup and preloaders.
     
  21. The_Arrival

    The_Arrival

    Joined:
    Dec 3, 2014
    Posts:
    82
    Hello Support-Team,

    i´ve just upgraded from UM to UM-Pro, using only IAPs for Google, iOS and Amazon. I´m currently rewriting the App-Integration and i´m struggling a bit getting my needed features with the new flow.

    UM-Flow:
    - On appstart i´m connecting to the UM_InAppPurchaseManager
    - OnConnectionFinished in case ok a positive UM_BillingConnectionResult i´m asking for all Products
    - i´m iterating over allProducts = UM_InAppPurchaseManager.InAppProducts, checking the .isPurchased state
    - i´m caching the purchased-state for all products and setup my app accordingly
    - The Products class is what i would expect from a unified API. It wraps all needed info from a product into a unified class, no matter from which platform it´s comming

    UM-Pro:
    - On appstart i´m connecting via UM_InAppService.Client.Connect(OnConnectFinished);
    - In OnConnectFinished(SA_Result connectionResult) i´m handling the results
    - in case of a success i´d like to also cache all iProducts with allProducts = UM_InAppService.Client.Products and iterate over them to set up my app, but iProduct has no purchased flag anymore.
    - it seems that if i want a unified class with product and purchase state, i need to process AN_Inventory for Android (which i kind of did) and ISN_SKPayment.AppStoreRecipt (which has just a few properties and i have troubles getting the the info parsed into a class) to generate my unified product by myself.... or am i missing something here? I guess there must be an easier way to get a unified List of products and their purchased status

    - How do i find out what of my products has which purchased state?
     
    Last edited: Nov 15, 2018
  22. The_Arrival

    The_Arrival

    Joined:
    Dec 3, 2014
    Posts:
    82
    Some additional questions:
    - Is the Amazon integration allready inside UM-Pro. If not, is it at least part of AN-Pro?

    - I´m having issues configuring UM-Pro to only use Billing Services. In the Unified UI it showns me, that for apple Camera and Gallery seems to be activated. In the iOS settings only Foundation, UIKit and StoreKit is on... StoreKit is the only Plugin i can switch off. UIKit and Foundation seems to be not optional and UIKit indeed has camera and gallery options. How to NOT use them inside my app?
    Whats even more confusing is, that when i run the Android-Tests or i testrun the app on an android device, the app asks for media and phone-usage permissions, while in android i seem to have switched them off.

    How do i switch the Camera or in best case the whole UIKit off on iOS?
    Why do i need to give permissions on android, even it´s switched off for that platform?
     
    Last edited: Nov 15, 2018
  23. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
  24. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    Hey @The_Arrival , thx for sharing your feedback. Knowing where exactly people get confused is very important. I will answer all your questions, but since all those answers are already partially in the documentation, before making a replay here, I will make some addition to the doc, and add stuff that wasn't mentioned before, and then provide you with the links and additional explanations.
     
  25. matiasini

    matiasini

    Joined:
    Mar 11, 2014
    Posts:
    8
    Great @lacost. Thank you very much for your support!
    I will take a look at the documentation and let you know if I have any doubts.
    Cheers!
     
  26. The_Arrival

    The_Arrival

    Joined:
    Dec 3, 2014
    Posts:
    82
    Thanks in advance. I´m curious what i missed here. I was reading yesterday through almost all of the available docs looking for clues of what i missed and i did just found an answer to why the UIKit it not optional.

    I still have no idea how to get rid of the camera feature in iOS, where those additional permission requests on android come from.
    I wrote a product-wrapper with all IAPs and their purchased-state (like there was in the the old UM version) and i get the Android Data in (ProductList and Inventory.PurchasedList), but i still have no clue on how to do it on iOS without a transaction
     
  27. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    No everything was in a doc, just part of your question, and I understand why you could've missed it. I am working on it right now, so will post another replay in about 15-20 min.
     
  28. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    That's was a very good question, and I did have luck fo explanation in the article, so I added another chapter, let me know if it's covering your question completely.
    https://unionassets.com/ultimate-mo...tate-based-on-purchases-non-consumable-produc


    Not yet, unfortunately, but should be in the next couple versions.

    The reason why Foundation & UIKit are enabled by default and there is no disable option for those. is covered here:
    https://unionassets.com/ios-native-pro/how-to-use-603#manage-features

    I also added a similar description for Ultimate mobile now
    https://unionassets.com/ultimate-mobile-pro/plugin-editor-ui-736

    That is something I did not quite understand. The Test scene and ability to test the whole plugin, that is something we use to test the whole plugin before uploading to the store. I don't know I probably need to disable this option, since it may re-configure the project for testing, like enable some API which will enable some permissions.
    Aslo goo news that with the Next Ultimate Mobile Api the summary tab will introduced you will able to know what exact requirements are added to your project via Ultimate Mobile plugin. It will look similar to the screenshot below:
    Screenshot_111618_014901_PM.jpg



    I hope I didn't miss any of your questions :) Let me know if I did, and I hope things are more clear for you now :)
     
  29. nemo76

    nemo76

    Joined:
    Jul 26, 2017
    Posts:
    8
    Hello.

    I am trying to google play sign in on android. but I get error.

    Code (CSharp):
    1. 11-21 11:02:28.652 9572-9599/? A/AndroidNative: Unity: Sent to Java -> AN_GoogleApiAvailability.IsGooglePlayServicesAvailable
    2. 11-21 11:02:28.682 9572-9599/? A/AndroidNative: Unity: [Sync] Sent to Unity ->: 0
    3. 11-21 11:02:28.682 9572-9599/? A/AndroidNative: Unity: Success - IsGooglePlayServicesAvailable
    4.  
    5. 11-21 11:03:10.366 9572-9599/? A/AndroidNative: Unity: Sent to Java -> AN_GoogleSignInOptionsBuilder.Create :: 100
    6. 11-21 11:03:10.376 9572-9599/? A/AndroidNative: Unity: [Sync] Sent to Unity ->: 1116106864
    7. 11-21 11:03:10.386 9572-9599/? A/AndroidNative: Unity: Sent to Java -> AN_GoogleSignInOptionsBuilder.RequestId :: 1116106864
    8. 11-21 11:03:10.396 9572-9599/? A/AndroidNative: Unity: Sent to Java -> AN_GoogleSignInOptionsBuilder.RequestProfile :: 1116106864
    9. 11-21 11:03:10.416 9572-9599/? A/AndroidNative: Unity: Sent to Java -> AN_GoogleSignInOptionsBuilder.Build :: 1116106864
    10. 11-21 11:03:10.476 9572-9599/? A/AndroidNative: Unity: [Sync] Sent to Unity ->: {"m_hashCode":-738113233}
    11. 11-21 11:03:10.486 9572-9599/? A/AndroidNative: Unity: Sent to Java -> AN_GoogleSignIn.GetClient :: -738113233
    12. 11-21 11:03:10.737 9572-9599/? A/AndroidNative: Unity: [Sync] Sent to Unity ->: {"m_hashCode":1116688504}
    13. 11-21 11:03:10.747 9572-9599/? A/AndroidNative: Unity: Let's try Silent SignIn first
    14. 11-21 11:03:10.777 9572-9599/? A/AndroidNative: Unity: Sent to Java -> AN_GoogleSignInClient.SilentSignIn :: 1116688504
    15. 11-21 11:03:14.220 9572-9599/? A/AndroidNative: Unity: [Async] Sent to Unity ->: {"m_error":{"m_message":"SIGN_IN_REQUIRED","m_code":4}}
    16. 11-21 11:03:14.230 9572-9599/? A/AndroidNative: Unity: SilentSignIn Failed with code: 4
    17. 11-21 11:03:14.230 9572-9599/? A/AndroidNative: Unity: Starting the default Sign in flow
    18. 11-21 11:03:14.240 9572-9599/? A/AndroidNative: Unity: Sent to Java -> AN_GoogleSignInOptionsBuilder.Create :: 100
    19. 11-21 11:03:14.280 9572-9599/? A/AndroidNative: Unity: [Sync] Sent to Unity ->: 1117082584
    20. 11-21 11:03:14.280 9572-9599/? A/AndroidNative: Unity: Sent to Java -> AN_GoogleSignInOptionsBuilder.RequestId :: 1117082584
    21. 11-21 11:03:14.300 9572-9599/? A/AndroidNative: Unity: Sent to Java -> AN_GoogleSignInOptionsBuilder.RequestProfile :: 1117082584
    22. 11-21 11:03:14.300 9572-9599/? A/AndroidNative: Unity: Sent to Java -> AN_GoogleSignInOptionsBuilder.Build :: 1117082584
    23. 11-21 11:03:14.310 9572-9599/? A/AndroidNative: Unity: [Sync] Sent to Unity ->: {"m_hashCode":-738113233}
    24. 11-21 11:03:14.330 9572-9599/? A/AndroidNative: Unity: Sent to Java -> AN_GoogleSignIn.GetClient :: -738113233
    25. 11-21 11:03:14.350 9572-9599/? A/AndroidNative: Unity: [Sync] Sent to Unity ->: {"m_hashCode":1111214760}
    26. 11-21 11:03:14.360 9572-9599/? A/AndroidNative: Unity: Sent to Java -> AN_GoogleSignInClient.SignIn :: 1111214760
    27. 11-21 11:03:25.312 9572-9599/? A/AndroidNative: Unity: [Async] Sent to Unity ->: {"m_error":{"m_message":"SIGN_IN_REQUIRED","m_code":4}}
    28. 11-21 11:03:25.382 9572-9599/? A/AndroidNative: Unity: Sign In StatusCode: SIGN_IN_REQUIRED
    29. 11-21 11:03:25.392 9572-9599/? A/AndroidNative: Unity: SignIn failed: 4::SIGN_IN_REQUIRED
    30.  
     
  30. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
  31. nemo76

    nemo76

    Joined:
    Jul 26, 2017
    Posts:
    8
    Thanks for reply.
    But I am still struggling for google play sign in.

    I run "Automatic Testing" to find issue.
    Then , my android device runs the test scene. but It is stop suddenly.

    I attach logs.
    Code (CSharp):
    1. 11-23 19:21:00.991 16206-16206/com.rockberrygames.thelastslaindev A/AndroidNative: AN_ProxyActivity onStart
    2. 11-23 19:21:01.011 16206-16206/com.rockberrygames.thelastslaindev A/AndroidNative: AN_ProxyActivity onStart callback was already fired, activity will be finished
    3. 11-23 19:21:01.822 16206-16206/com.rockberrygames.thelastslaindev A/AndroidNative: AN_ProxyActivity::onDestroy
    4. 11-23 19:21:01.882 16206-16206/com.rockberrygames.thelastslaindev A/AndroidNative: We have onDestroy before we got a chance to send something. Force send empty results
    5. 11-23 19:21:09.110 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Handler registred
    6. 11-23 19:21:09.120 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: StrictMode set
    7. 11-23 19:21:09.140 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Log Level is set
    8. 11-23 19:21:09.530 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> ImmersiveMode.EnableImmersiveMode
    9. 11-23 19:21:09.540 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: UiChangeListener
    10. 11-23 19:21:09.540 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: UiChangeListener Failed: Only the original thread that created a view hierarchy can touch its views.
    11. 11-23 19:21:09.701 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_PackageManager.GetPackageInfo :: {"m_classId":1,"m_instanceId":""} | com.rockberrygames.thelastslaindev | 0
    12. 11-23 19:21:09.751 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: [Sync] Sent to Unity ->: {"m_packageName":"com.rockberrygames.thelastslaindev","m_versionName":"1.0.6"}
    13. 11-23 19:21:09.751 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: packageInfo.VersionName: 1.0.6
    14. 11-23 19:21:09.761 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: packageInfo.PackageName: com.rockberrygames.thelastslaindev
    15. 11-23 19:21:09.771 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: packageInfo.SharedUserId:
    16. 11-23 19:21:09.841 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_PackageManager.QueryIntentActivities :: {"m_classId":1,"m_instanceId":""} | {"m_hashCode":0,"m_action":"android.intent.action.SEND","m_type":"text/plain","m_packageName":"","m_uri":"","m_isChooser":false,"m_chooserInfo":{"m_title":"","m_extra_initial_intents":[]},"m_flags":[],"m_categories":[],"m_extraKeys":[],"m_extraValues":[]} | 0
    17. 11-23 19:21:09.931 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: intent.setAction android.intent.action.SEND
    18. 11-23 19:21:09.931 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: intent.setType text/plain
    19. 11-23 19:21:10.011 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Communication log to big to print it, we need to do something about it
    20. 11-23 19:21:10.021 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: [Sync] Sent to Unity ->: {"m_list":[{"m_activityInfo":{"m_name":"com.android.mms.ui.ConversationComposer","m_packageName":"com.android.mms"}},{"m_activityInfo":{"m_name":"com.sec.android.widgetapp.q1_penmemo.InboundActivity","m_packageName":"com.sec.android.widgetapp.diotek.smemo"}},{"m_activityInfo":{"m_name":"com.sec.chaton.IntentControllerActivity","m_packageName":"com.sec.chaton"}},{"m_activityInfo":{"m_name":"com.google.android.apps.plus.GatewayActivityAlias","m_packageName":"com.google.android.apps.plus"}},{"m_activityInfo":{"m_name":"com.google.android.apps.hangouts.phone.ShareIntentActivity","m_packageName":"com.google.android.talk"}},{"m_activityInfo":{"m_name":"com.google.android.apps.docs.drive.clipboard.SendTextToClipboardActivity","m_packageName":"com.google.android.apps.docs"}},{"m_activityInfo":{"m_name":"com.sec.android.app.FileShareClient.DeviceSelectActivity","m_packageName":"com.sec.android.app.FileShareClient"}},{"m_activityInfo":{"m_name":"com.android.bluetooth.opp.BluetoothOppLauncherActivity","m_packageName":"com.android.bluetooth"}},{"m_activityInfo":{"m_name":"com.dropbox.android.activity.DropboxSendTo","m_packageName":"com.dropbox.android"}},{"m_activityInfo":{"m_name":"com.sec.mobileprint.printservice.plugin.ui.DocumentRenderingActivity","m_packageName":"com.sec.app.samsungprintservice"}},{"m_activityInfo":{"m_name":"com.google.android.gm.ComposeActivityGmail","m_packageName":"com.google.android.gm"}},{"m_activityInfo":{"m_name":"com.android.email.activity.MessageCompose","m_packageName":"com.android.email"}},{"m_activityInfo":{"m_name":"com.google.android.apps.docs.shareitem.UploadMenuActivity","m_packageName":"com.google.android.apps.docs""m_classId":1,"m_instanceId":""} | com.facebook.katana
    21. 11-23 19:21:10.411 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: [Sync] Sent to Unity ->: 0
    22. 11-23 19:21:10.561 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_ActivityCompat.CheckSelfPermission :: android.permission.READ_CONTACTS
    23. 11-23 19:21:10.611 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: [Sync] Sent to Unity ->: -1
    24. 11-23 19:21:10.611 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: READ_CONTACTS Permission Denied
    25. 11-23 19:21:10.632 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_ActivityCompat.ShouldShowRequestPermissionRationale :: android.permission.READ_CONTACTS
    26. 11-23 19:21:10.702 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: [Sync] Sent to Unity ->: False
    27. 11-23 19:21:10.722 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: ShouldShowRequestPermissionRationale: False
    28. 11-23 19:21:10.762 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_ActivityCompat.RequestPermissions :: {"m_permissions":["android.permission.READ_CONTACTS","android.permission.WRITE_CONTACTS"]}
    29. 11-23 19:21:11.893 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: [Async] Sent to Unity ->: {"m_grantResults":[{"m_permission":"android.permission.READ_CONTACTS","m_grantResult":-1},{"m_permission":"android.permission.WRITE_CONTACTS","m_grantResult":-1}]}
    30. 11-23 19:21:11.903 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: RequestPermissions: READ_CONTACTS / Denied
    31. 11-23 19:21:11.913 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: RequestPermissions: WRITE_CONTACTS / Denied
    32. 11-23 19:21:11.953 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_NotificationManager.CancelAll
    33. 11-23 19:21:11.983 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_NotificationManager.Cancel :: 1
    34. 11-23 19:21:11.983 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_NotificationManager.Unschedule :: 1
    35. 11-23 19:21:12.003 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_NotificationManager.SubscribeToNotificationReceived
    36. 11-23 19:21:12.153 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_Build.GetBuildVerion
    37. 11-23 19:21:12.153 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: [Sync] Sent to Unity ->: {"BASE_OS":"","CODENAME":"REL","INCREMENTAL":"E370KKTU2BOH2","SECURITY_PATCH":"","RELEASE":"4.4.4","SDK_INT":19,"PREVIEW_SDK_INT":0}
    38. 11-23 19:21:12.163 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_NotificationManager.Schedule :: {"m_identifier":2,"m_content":{"m_text":"Default","m_title":"SetDefaults Test","m_iconName":"","m_soundName":"","m_iconBase64":"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAM0lEQVRYCe3QQQ0AAAgDMcC/55Fggk9n4JZ2JanHzWP70g4QIECAAAECBAgQIECAAAECCz23Az17khMRAAAAAElFTkSuQmCC","m_defaults":5,"m_chanelId":"test_chanel","m_style":{"m_type":0,"m_picture":"","m_largeIcon":"","m_bigText":""}},"m_trigger":{"m_seconds":1,"m_repeating":false}}
    39. 11-23 19:21:12.223 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Builder extra: {"m_content":{"m_chanelId":"test_chanel","m_title":"SetDefaults Test","m_iconBase64":"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAM0lEQVRYCe3QQQ0AAAgDMcC/55Fggk9n4JZ2JanHzWP70g4QIECAAAECBAgQIECAAAECCz23Az17khMRAAAAAElFTkSuQmCC","m_iconName":"","m_soundName":"","m_style":{"m_bigText":"","m_largeIcon":"","m_picture":"","m_type":0},"m_text":"Default","m_defaults":5},"m_trigger":{"m_repeating":false,"m_seconds":1},"m_identifier":2}
    40. 11-23 19:21:37.440 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_ProgressDialog.Show :: {"m_id":"evIU660Q8GEJ8b2OLx9U","m_title":"Progress","m_message":"Some Progress Message","m_cancelable":false,"m_themeId":0,"m_progress":0}
    41. 11-23 19:21:37.620 16206-16206/com.rockberrygames.thelastslaindev A/AndroidNative: UiChangeListener isSystemUiShown: true
    42. 11-23 19:21:40.483 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_ProgressDialog.Hide :: {"m_id":"evIU660Q8GEJ8b2OLx9U","m_title":"Progress","m_message":"Some Progress Message","m_cancelable":false,"m_themeId":0,"m_progress":0}
    43. 11-23 19:21:40.523 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Show :: {"m_id":"O6ZsrtDA5rONOVebv1r4","m_title":"Default","m_message":"Alert Dialog Test with 1 buttons","m_cancelable":false,"m_themeId":0,"m_buttons":[{"m_id":"irekBpNwhMr6mJmr1BO5","m_text":"Positive","m_type":1}]}
    44. 11-23 19:21:41.504 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Hide :: {"m_id":"O6ZsrtDA5rONOVebv1r4","m_title":"Default","m_message":"Alert Dialog Test with 1 buttons","m_cancelable":false,"m_themeId":0,"m_buttons":[{"m_id":"irekBpNwhMr6mJmr1BO5","m_text":"Positive","m_type":1}]}
    45. 11-23 19:21:41.504 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Show :: {"m_id":"tXwU8p4aWe5VkgwH1bP5","m_title":"Default","m_message":"Alert Dialog Test with 2 buttons","m_cancelable":false,"m_themeId":0,"m_buttons":[{"m_id":"hs5YrK7NF1TUplsAXKGN","m_text":"Positive","m_type":1},{"m_id":"xj1FZtIdT7t1ugxd8ETt","m_text":"Negative","m_type":2}]}
    46. 11-23 19:21:42.556 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Hide :: {"m_id":"tXwU8p4aWe5VkgwH1bP5","m_title":"Default","m_message":"Alert Dialog Test with 2 buttons","m_cancelable":false,"m_themeId":0,"m_buttons":[{"m_id":"hs5YrK7NF1TUplsAXKGN","m_text":"Positive","m_type":1},{"m_id":"xj1FZtIdT7t1ugxd8ETt","m_text":"Negative","m_type":2}]}
    47. 11-23 19:21:42.566 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Show :: {"m_id":"4IjHxcvFxLtiWYaxs4Qq","m_title":"Default","m_message":"Alert Dialog Test with 3 buttons","m_cancelable":false,"m_themeId":0,"m_buttons":[{"m_id":"kYaMplH94H0epUQ6XumW","m_text":"Positive","m_type":1},{"m_id":"s4Yl3uWJXD2tMcsE5siM","m_text":"Negative","m_type":2},{"m_id":"EeXBqZ1oSf82S3RfYqfm","m_text":"Neutral","m_type":0}]}
    48. 11-23 19:21:43.567 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Hide :: {"m_id":"4IjHxcvFxLtiWYaxs4Qq","m_title":"Default","m_message":"Alert Dialog Test with 3 buttons","m_cancelable":false,"m_themeId":0,"m_buttons":[{"m_id":"kYaMplH94H0epUQ6XumW","m_text":"Positive","m_type":1},{"m_id":"s4Yl3uWJXD2tMcsE5siM","m_text":"Negative","m_type":2},{"m_id":"EeXBqZ1oSf82S3RfYqfm","m_text":"Neutral","m_type":0}]}
    49. 11-23 19:21:43.577 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Show :: {"m_id":"wpoIvh5fZprLWRTW3gNZ","m_title":"Light","m_message":"Alert Dialog Test with 1 buttons","m_cancelable":false,"m_themeId":1,"m_buttons":[{"m_id":"w1tCAxFd1i0Feo9Me45F","m_text":"Positive","m_type":1}]}
    50. 11-23 19:21:44.618 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Hide :: {"m_id":"wpoIvh5fZprLWRTW3gNZ","m_title":"Light","m_message":"Alert Dialog Test with 1 buttons","m_cancelable":false,"m_themeId":1,"m_buttons":[{"m_id":"w1tCAxFd1i0Feo9Me45F","m_text":"Positive","m_type":1}]}
    51. 11-23 19:21:44.628 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Show :: {"m_id":"0ReUJ8kkcbTVcbhGlMYZ","m_title":"Light","m_message":"Alert Dialog Test with 2 buttons","m_cancelable":false,"m_themeId":1,"m_buttons":[{"m_id":"Rmt6KqivbMTnTZ9q1miE","m_text":"Positive","m_type":1},{"m_id":"11iAgwZsJqpBAhFLx85q","m_text":"Negative","m_type":2}]}
    52. 11-23 19:21:45.659 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Hide :: {"m_id":"0ReUJ8kkcbTVcbhGlMYZ","m_title":"Light","m_message":"Alert Dialog Test with 2 buttons","m_cancelable":false,"m_themeId":1,"m_buttons":[{"m_id":"Rmt6KqivbMTnTZ9q1miE","m_text":"Positive","m_type":1},{"m_id":"11iAgwZsJqpBAhFLx85q","m_text":"Negative","m_type":2}]}
    53. 11-23 19:21:45.669 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Show :: {"m_id":"RASbAA1HWFDC3CwFf1c0","m_title":"Light","m_message":"Alert Dialog Test with 3 buttons","m_cancelable":false,"m_themeId":1,"m_buttons":[{"m_id":"2ZxQWihQua5QiMOMdZKG","m_text":"Positive","m_type":1},{"m_id":"GVKmiJRB8OugsGD6VF2j","m_text":"Negative","m_type":2},{"m_id":"O3kuH6QQJwgdopxMGp4R","m_text":"Neutral","m_type":0}]}
    54. 11-23 19:21:46.650 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Hide :: {"m_id":"RASbAA1HWFDC3CwFf1c0","m_title":"Light","m_message":"Alert Dialog Test with 3 buttons","m_cancelable":false,"m_themeId":1,"m_buttons":[{"m_id":"2ZxQWihQua5QiMOMdZKG","m_text":"Positive","m_type":1},{"m_id":"GVKmiJRB8OugsGD6VF2j","m_text":"Negative","m_type":2},{"m_id":"O3kuH6QQJwgdopxMGp4R","m_text":"Neutral","m_type":0}]}
    55. 11-23 19:21:46.660 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Show :: {"m_id":"1U7nqFcARfNihNPkY5L7","m_title":"Material","m_message":"Alert Dialog Test with 1 buttons","m_cancelable":false,"m_themeId":2,"m_buttons":[{"m_id":"Ro716XbeDS4d8Vq2q4RX","m_text":"Positive","m_type":1}]}
    56. 11-23 19:21:47.691 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Hide :: {"m_id":"1U7nqFcARfNihNPkY5L7","m_title":"Material","m_message":"Alert Dialog Test with 1 buttons","m_cancelable":false,"m_themeId":2,"m_buttons":[{"m_id":"Ro716XbeDS4d8Vq2q4RX","m_text":"Positive","m_type":1}]}
    57. 11-23 19:21:47.691 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Show :: {"m_id":"ROJxXdxn94YZeFuYZFxX","m_title":"Material","m_message":"Alert Dialog Test with 2 buttons","m_cancelable":false,"m_themeId":2,"m_buttons":[{"m_id":"RN3cPHxtnU9ENcLVMsUQ","m_text":"Positive","m_type":1},{"m_id":"5jaY9esOoDLZVa9USxnu","m_text":"Negative","m_type":2}]}
    58. 11-23 19:21:48.722 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Hide :: {"m_id":"ROJxXdxn94YZeFuYZFxX","m_title":"Material","m_message":"Alert Dialog Test with 2 buttons","m_cancelable":false,"m_themeId":2,"m_buttons":[{"m_id":"RN3cPHxtnU9ENcLVMsUQ","m_text":"Positive","m_type":1},{"m_id":"5jaY9esOoDLZVa9USxnu","m_text":"Negative","m_type":2}]}
    59. 11-23 19:21:48.732 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Show :: {"m_id":"6Xslf1GomSVN9dk7fcmL","m_title":"Material","m_message":"Alert Dialog Test with 3 buttons","m_cancelable":false,"m_themeId":2,"m_buttons":[{"m_id":"CwE79v6Eu8g2aFkHL5o5","m_text":"Positive","m_type":1},{"m_id":"C0iOdTZV69u8XGFtaECP","m_text":"Negative","m_type":2},{"m_id":"05ENrcGJHHFNAfHBiREX","m_text":"Neutral","m_type":0}]}
    60. 11-23 19:21:49.743 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Hide :: {"m_id":"6Xslf1GomSVN9dk7fcmL","m_title":"Material","m_message":"Alert Dialog Test with 3 buttons","m_cancelable":false,"m_themeId":2,"m_buttons":[{"m_id":"CwE79v6Eu8g2aFkHL5o5","m_text":"Positive","m_type":1},{"m_id":"C0iOdTZV69u8XGFtaECP","m_text":"Negative","m_type":2},{"m_id":"05ENrcGJHHFNAfHBiREX","m_text":"Neutral","m_type":0}]}
    61. 11-23 19:21:49.753 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Show :: {"m_id":"Cn4kqZeieWgApPt43R0b","m_title":"Material_Light","m_message":"Alert Dialog Test with 1 buttons","m_cancelable":false,"m_themeId":3,"m_buttons":[{"m_id":"kxI73HQqcrWYLw20g9MS","m_text":"Positive","m_type":1}]}
    62. 11-23 19:21:50.744 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Hide :: {"m_id":"Cn4kqZeieWgApPt43R0b","m_title":"Material_Light","m_message":"Alert Dialog Test with 1 buttons","m_cancelable":false,"m_themeId":3,"m_buttons":[{"m_id":"kxI73HQqcrWYLw20g9MS","m_text":"Positive","m_type":1}]}
    63. 11-23 19:21:50.764 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Show :: {"m_id":"nUNowxFivgE9UWjkhHbb","m_title":"Material_Light","m_message":"Alert Dialog Test with 2 buttons","m_cancelable":false,"m_themeId":3,"m_buttons":[{"m_id":"IfsinXtaRB52WSUiwN31","m_text":"Positive","m_type":1},{"m_id":"qLhXa2Tn3tqNdjsRKQQC","m_text":"Negative","m_type":2}]}
    64. 11-23 19:21:51.775 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Hide :: {"m_id":"nUNowxFivgE9UWjkhHbb","m_title":"Material_Light","m_message":"Alert Dialog Test with 2 buttons","m_cancelable":false,"m_themeId":3,"m_buttons":[{"m_id":"IfsinXtaRB52WSUiwN31","m_text":"Positive","m_type":1},{"m_id":"qLhXa2Tn3tqNdjsRKQQC","m_text":"Negative","m_type":2}]}
    65. 11-23 19:21:51.795 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Show :: {"m_id":"mgR3GNqjPqAVNrNPs27p","m_title":"Material_Light","m_message":"Alert Dialog Test with 3 buttons","m_cancelable":false,"m_themeId":3,"m_buttons":[{"m_id":"a06nGvIpCLVXJW3juSDh","m_text":"Positive","m_type":1},{"m_id":"Y4DLN8ExPjdjOIYsdhF3","m_text":"Negative","m_type":2},{"m_id":"LoEUMRUts4VQqRgS7u6i","m_text":"Neutral","m_type":0}]}
    66. 11-23 19:21:52.796 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_AlertDialog.Hide :: {"m_id":"mgR3GNqjPqAVNrNPs27p","m_title":"Material_Light","m_message":"Alert Dialog Test with 3 buttons","m_cancelable":false,"m_themeId":3,"m_buttons":[{"m_id":"a06nGvIpCLVXJW3juSDh","m_text":"Positive","m_type":1},{"m_id":"Y4DLN8ExPjdjOIYsdhF3","m_text":"Negative","m_type":2},{"m_id":"LoEUMRUts4VQqRgS7u6i","m_text":"Neutral","m_type":0}]}
    67. 11-23 19:21:52.817 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: Sent to Java -> AN_Activity.StartActivity :: {"m_classId":1,"m_instanceId":""} | {"m_hashCode":0,"m_action":"android.settings.SETTINGS","m_type":"","m_packageName":"","m_uri":"","m_isChooser":false,"m_chooserInfo":{"m_title":"","m_extra_initial_intents":[]},"m_flags":[],"m_categories":[],"m_extraKeys":[],"m_extraValues":[]}
    68. 11-23 19:21:52.827 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: intent.setAction android.settings.SETTINGS
    69. 11-23 19:21:52.927 16206-16227/com.rockberrygames.thelastslaindev A/AndroidNative: Unity: [Sync] Sent to Unity ->: True
    70. 11-23 19:21:53.207 16206-16206/com.rockberrygames.thelastslaindev A/AndroidNative: UiChangeListener isSystemUiShown: false
    71. 11-23 19:21:53.227 16206-16206/com.rockberrygames.thelastslaindev A/AndroidNative: UiChangeListener isSystemUiShown: true
    72. 11-23 19:21:53.257 16206-16206/com.rockberrygames.thelastslaindev A/AndroidNative: AN_ProxyActivity onStart
    73. 11-23 19:21:53.257 16206-16206/com.rockberrygames.thelastslaindev A/AndroidNative: intent.setAction android.settings.SETTINGS
    74. 11-23 19:21:53.647 16206-16206/com.rockberrygames.thelastslaindev A/AndroidNative: UiChangeListener isSystemUiShown: false
    75. 11-23 19:21:54.108 16206-16206/com.rockberrygames.thelastslaindev A/AndroidNative: UiChangeListener isSystemUiShown: true
    76.  
    I think , the automatic testing is not done. isn't it?
    Thx.
     
  32. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    I see a lot of communication log, but do not see any crashes in the log.
    The testing is done, and we are actively using it, but like it was my bad to provide it open for the customers without proper guides how to use it.


    The way I see you guys using it is the following.
    Pick the test sweet you want to run and run it. It will take your configuration.
    As you said you want to test Google Play but I see there is a lot of other API is getting tested instead. I will do a guides how to configure.

    Anyway if you will send me an APK I can check where it crashed.
    And for google play, just try to sing in, and send me log, I will try to tell what is wrong with it.
     
  33. luniac

    luniac

    Joined:
    Jan 12, 2011
    Posts:
    614
    how do you specify unified leaderboard ID in settings?
    Also what's the ETA on admob functionality.
     
  34. ahching

    ahching

    Joined:
    Nov 11, 2016
    Posts:
    4
    Hi, I have few questions related to UMP

    1. I have tried the gallery.PickImage, but the picker shows videos only
    2. Follow the example, but UM_Media
    error CS0246: The type or namespace name `UM_Media' could not be found. ​
    3. tried gallery.PickVideo,
    error CS1061: Type `SA.CrossPlatform.App.UM_iGalleryService' does not contain a definition for `PickVideo' and no extension method `PickVideo' of type `SA.CrossPlatform.App.UM_iGalleryService' could be found. Are you missing an assembly reference?​
    4. can't find the "summary tab"

    Unity version : 2018.2.15f1
    UMP version : 2018.7.3
     
  35. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    Hey @luniac
    Not sure I got the question, would appreciate if you explain more.

    The release would be next week. If you want to get it earlier, just PM me. Thx.


    Can you please give me full code sample you use? Thx a lot!

    It's not a part of the released version and will be added (and a lot more :)) with the next update.
    Next update is scheduled to 1st of December.

    But if you want to get it now, feel free to PM me.
    Cheers!
     
  36. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    @LostCityDigital Ti be honest I stuck a but with Google Admob support, but overall, I already have my developer started with the playmaker actions.
    I will appreciate if you will keep ping me with this, and I will able to start sending first action packages your way on a next week.
    Thx.
     
  37. luniac

    luniac

    Joined:
    Jan 12, 2011
    Posts:
    614
    The Leaderboard ID that is used in the unified API.
    Example: ShowLeaderboard(LeaderboardID)

    I don't see where to specify it in the settings.
    I see iOS and Android separate leaderboard sections, but in unified leaderboard menu there is no place to specify String for LeaderboardID to use in our code.
     
    Last edited: Nov 27, 2018
  38. luniac

    luniac

    Joined:
    Jan 12, 2011
    Posts:
    614
    Also another issue, this one may be tough for ur company to take care of.

    Unity has Package Manager so you can now remove unnecessary modules for your apps to reduce Build Size.
    I'd like to disable the "physics" module, but a bunch of Stans Assets scripts are using physics API for things like Examples and Tweening.
    I am getting endless compile errors if i disable "physics" module.

    Can you please do something about this?
    Thanks.
     
  39. ahching

    ahching

    Joined:
    Nov 11, 2016
    Posts:
    4
    Hi lacost,

    The code that I used was from the UM_GalleryExample.cs and samples from https://unionassets.com/ultimate-mobile-pro/pick-from-gallery-749

    Thanks!

    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4. using UnityEngine.UI;
    5. using SA.CrossPlatform.App;
    6.  
    7. public class UM_GalleryExample : MonoBehaviour {
    8.     public RawImage m_Image;
    9.     public Text m_Text;
    10.  
    11.  
    12.     private Texture2D GetImage() {
    13.         return null;
    14.     }
    15.  
    16.     private void SaveImage() {
    17.  
    18.  
    19.    
    20.  
    21.         Texture2D tex = GetImage();// Your image. Image should be redeable.
    22.         var gallery = UM_Application.GalleryService;
    23.         gallery.SaveImage(tex, "MyImage", (result) => {
    24.             if(result.IsSucceeded) {
    25.                 Debug.Log("Saved");
    26.             } else {
    27.                 Debug.Log("Failed: " + result.Error.FullMessage);
    28.             }
    29.         });
    30.  
    31.  
    32.         gallery.SaveScreenshot("MySceeen", (result) => {
    33.             if (result.IsSucceeded) {
    34.                 Debug.Log("Saved");
    35.             } else {
    36.                 Debug.Log("Failed: " + result.Error.FullMessage);
    37.             }
    38.         });
    39.  
    40.     }
    41.  
    42.     public void PickAnImage() {
    43.         var gallery = UM_Application.GalleryService;
    44.         int maxSize = 1024;
    45.         gallery.PickImage(maxSize, (result) => {
    46.             if (result.IsSucceeded) {
    47.                 // UM_Media media = result.Media;
    48.                 Texture2D image = result.Image;
    49.                 m_Image.texture = image;
    50.                 m_Text.text = "Picture width: " + image.width + " / height: " + image.height;
    51.                 Debug.Log("Picture width: " + image.width + " / height: " + image.height);
    52.             } else {
    53.                 Debug.Log("failed to pick an image: " + result.Error.FullMessage);
    54.             }
    55.         });
    56.     }
    57.  
    58.     //public void PickVideo()
    59.     //{
    60.     //    var gallery = UM_Application.GalleryService;
    61.     //    int maxThumbnailSize = 1024;
    62.     //    gallery.PickVideo(maxThumbnailSize, (result) => {
    63.     //        if (result.IsSucceeded)
    64.     //        {
    65.     //            UM_Media media = result.Media;
    66.  
    67.     //            Texture2D image = media.Thumbnail;
    68.     //            Debug.Log("Thumbnail width: " + image.width + " / height: " + image.height);
    69.     //            Debug.Log("mdeia.Type: " + media.Type);
    70.     //            Debug.Log("mdeia.Path: " + media.Path);
    71.     //        }
    72.     //        else
    73.     //        {
    74.     //            Debug.Log("failed to pick an image: " + result.Error.FullMessage);
    75.     //        }
    76.     //    });
    77.     //}
    78.  
    79.     public void TakePicture()
    80.     {
    81.         var camera = UM_Application.CameraService;
    82.  
    83.         int maxThumbnailSize = 1024;
    84.         camera.TakePicture(maxThumbnailSize, (result) => {
    85.             if (result.IsSucceeded)
    86.             {
    87.                 //UM_Media mdeia = result.Media;
    88.                 //Texture2D image = mdeia.Thumbnail;
    89.  
    90.                 //Debug.Log("Thumbnail width: " + image.width + " / height: " + image.height);
    91.                 //Debug.Log("mdeia.Type: " + mdeia.Type);
    92.                 //Debug.Log("mdeia.Path: " + mdeia.Path);
    93.  
    94.                 Texture2D image = result.Image;
    95.                 m_Image.texture = image;
    96.  
    97.                 m_Text.text = "Picture width: " + image.width + " / height: " + image.height;
    98.                 Debug.Log("Picture width: " + image.width + " / height: " + image.height);
    99.  
    100.  
    101.             }
    102.             else
    103.             {
    104.                 Debug.Log("failed to take a picture: " + result.Error.FullMessage);
    105.             }
    106.         });
    107.     }
    108.  
    109. }
    110.  
     
  40. numabus

    numabus

    Joined:
    Nov 9, 2015
    Posts:
    4
    I cannot run example script on this environment.

    Unity : 2018.2.14f1
    Ultimate mobile pro: 2018.7.3

    I just tried

    1. new project
    2. import Ultimate mobile pro
    3. new scene
    4. create empty => attatch UM_DialogsExample component like this

    public class UM_DialogsExample : MonoBehaviour {

    // add start function
    void Start(){
    Message();
    }

    void Message() {

    string title = "Congrats";
    string message = "Your account has been verified";
    var builder = new UM_NativeDialogBuilder(title, message);
    builder.SetPositiveButton("Okay", () => {
    Debug.Log("Okay button pressed");
    });

    var dialog = builder.Build();
    dialog.Show();
    }

    }

    5. Run the scene

    I can not see any messagebox and no error logs.
    Is there any prerequisite to run the library?
     
    Last edited: Nov 27, 2018
  41. nemo76

    nemo76

    Joined:
    Jul 26, 2017
    Posts:
    8
    Hi, I found a little bug.
    I made the game for Facebook gameroom already.
    and, porting to android with UM.

    I made the new sample project to test on android platform.
    Import UM.
    Open AN_GMS_Auth_Example.
    Build apk.
    Close project.
    Reopen the project.
    Then, It shows error for facebook API.

    If you install Unity include facebook gameroom. Unity supports FB gameroom for windows.
    Then, FB library in Unity is imported to Library folder of project.
    I think, It maybe make UM define SA_FB_INSTALLED.
    But, FB is not imported on project.
    It causes compile error.
     
  42. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    Sorry for the delay with the response. Let me answer all those questions one by one now :)

    Ther is no unified LeaderboardID, the reason is, what if you have 5 leaderboards on iOS and 3 on Android...
    I just wasn't sure you guys will need it. So currently you need to manage id's your self.

    That's a very good point.
    But when Package Manager will come for 100% there will be the ability to check if a certain module is available, and then I can strip parts of the code based on this.
    Currently. You are 100% can remove all the Examples & Test.
    If you want we can talk more about it, and try to strip the plugin for your project needs.
     
  43. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    @ahching thx for posting a code example. The code is 100% fine as well as the example for documentation.
    However, it will only work with the latest UMP version which is 2018.7.3, and it seems like you have exactly this one.

    It makes me think that when you updated from 2018.6.2 to 2018.7.3 something went wrong during an update.
    So can you just remove plugin completely (keep only your the Settings folder) and download the latest version.
    Or just PM me, I would really like to look at how 2018.7.3 cannot have those classes. I will might understand what went wrong during an update. Thanks.
     
  44. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    @numabus Have you built it on a real device? If so, what was the platform you built for?
     
  45. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    @nemo76
    Thx a lot for the report. Can you tell me more about it.
    So in other words, if you include facebook gameroom. The UM then regonezes FB lib in a project and enables SA_FB_INSTALLED define. but the FB lib isn't actually in a project. Is this the case?
    If so what it facebook gameroom where can I get it from to test, and make sure it will not trigger SA_FB_INSTALLED define to be added to project settings.
    Thanks!
     
  46. numabus

    numabus

    Joined:
    Nov 9, 2015
    Posts:
    4
    I just run on Unity Editor.

    Platform : macOS Sierra 10.12.6

    I doubt may be theres some mistakes. So switch Another mac And I check again..
    But There's no different. It's not Working.

    I post unitypackage it binds test scene and script files.
     

    Attached Files:

    Last edited: Nov 28, 2018
  47. UDN_4294fde7-2ef1-41b0-a01c-b992df3d9fd0

    UDN_4294fde7-2ef1-41b0-a01c-b992df3d9fd0

    Joined:
    Apr 8, 2017
    Posts:
    2
    Why does my app on Android ask me for phone-usage permissions?
    I also do not see any buttons in the settings ui (they seem to be hidden since I can click on the gray header). I also do not see the summary tab.
    I am using Unity 2017.3.1f1
     
  48. luniac

    luniac

    Joined:
    Jan 12, 2011
    Posts:
    614
    So based on documentation
    https://unionassets.com/ultimate-mobile-pro/leaderboards-731

    Code (CSharp):
    1.  
    2. //The identifier for the leaderboard.
    3. var leaderboardId = "YOUR_LEADERBOARD_ID_HERE";
    4.  
    5. UM_GameService.LeaderboardsClient.SubmitScore(leaderboardId, score, context, (result) => {
    6.     if(result.IsSucceeded) {
    7.         Debug.Log("Score submitted successfully");
    8.     } else {
    9.         Debug.Log("Failed to submit score: " + result.Error.FullMessage);
    10.     }
    11. });
    I'm very confused as to what is the "leaderboardID"?

    lets say for ios in itunes connect i have ID of "iosLeaderboard"
    and on android i have the resource file with ID "androidLeaderboard"

    so do i have to do
    Code (CSharp):
    1. //#if UNITY_ANDROID
    2.  
    3. UM_GameService.LeaderboardsClient.SubmitScore(androidLeaderboard, score, context, (result) => {
    4.     if(result.IsSucceeded) {
    5.         Debug.Log("Score submitted successfully");
    6.     } else {
    7.         Debug.Log("Failed to submit score: " + result.Error.FullMessage);
    8.     }
    9. });
    10.         //#elif UNITY_IOS
    11. UM_GameService.LeaderboardsClient.SubmitScore(iosLeaderboard, score, context, (result) => {
    12.     if(result.IsSucceeded) {
    13.         Debug.Log("Score submitted successfully");
    14.     } else {
    15.         Debug.Log("Failed to submit score: " + result.Error.FullMessage);
    16.     }
    17. });
    18.  

    Also what about ShowUI function, does it autodetect based on platform the app is built on?

    Code (CSharp):
    1. var client = UM_GameService.LeaderboardsClient;
    2. client.ShowUI((result) => {
    3.     if(result.IsSucceeded) {
    4.         Debug.Log("User closed Leaderboards native view");
    5.     } else {
    6.         Debug.Log("Failed to start Leaderboards native view: " + result.Error.FullMessage);
    7.     }
    8. });


    I just want to replicate same functionality as old ultimate mobile.
    I have only 1 leaderboard for ios and android.
    As per old ultimate mobile settings i have 1 unified leaderboardID string that i use with the API.

    Code (CSharp):
    1. UM_GameServiceManager.Instance.SubmitScore(leaderboardID, score);
    2. UM_GameServiceManager.Instance.ShowLeaderBoardUI(leaderboardID);
    I use following code to check if GameServices is connected:
    Code (CSharp):
    1. if (UM_GameServiceManager.Instance.ConnectionSate == UM_ConnectionState.DISCONNECTED || UM_GameServiceManager.Instance.ConnectionSate == UM_ConnectionState.UNDEFINED)
    2.         {
    3.             UM_GameServiceManager.Instance.Connect();
    4.         }
    Can you give a code example for these please with new Pro version?
    thanks.
     
    Last edited: Nov 28, 2018
  49. The_Arrival

    The_Arrival

    Joined:
    Dec 3, 2014
    Posts:
    82
    After reading you additional explanations i´m still left with some questions:
    - how should i deal with store refunds? With the old UM my approach was to always silently connect to the store, get the product list and check for the isPurchased-Flag, then store the state locally in playerPrefs. I use the player prefs for the initial setup and in case the player is offline. Once i get the store-update i can lock items wich were unlocked before and got refunded.
    - So with the old UM you did the isPurchased-Flag via caching the purchases?

    Do you have an ETA for this, in best cases a ETA for the Android Plugin and for the unified API integration...

    Yeah... i stumbled upon the explanation by my own, reading through all the docs, but it was missing in the UM docs indeed

    Yeah, well i also don´t understand it :) Matter of fact is:
    - When i install die App, it asks for Access to Photos, Media and files... in unity-buildsettings i have set it to
    - "install prefere external" and "write-permission internal" which should not cause this permission (and never had before with the old version)
    - The app also started asking for "android.permission.CALL_PHONE" which is super weired. As fas as i know i can´t set this permission in unity and i have done nothing to set it in UMPro.

    I never had those permissions beforehands and the only thing i´ve done since then is upgrade from Unity 5.6 to 2018 and swap out UM for UMPro

    Also the UM Service overview looks wrong. It tells me that the Camera and the Gallery Feature is activated for iOS



    In the iOS UIKit Settings everything possible is disabled


    All
     

    Attached Files:

  50. stanislav-osipov

    stanislav-osipov

    Joined:
    May 30, 2012
    Posts:
    1,790
    Hey @luniac so regarding the leaderboards you may do something like this:

    Code (CSharp):
    1.  string Leaderboardid = string.Empty;
    2.         switch (Application.platform) {
    3.             case RuntimePlatform.Android:
    4.                 Leaderboardid = "iOS";
    5.                 break;
    6.             case RuntimePlatform.IPhonePlayer:
    7.                 Leaderboardid = "Android";
    8.                 break;
    9.         }
    10.  
    11.         UM_GameService.LeaderboardsClient.SubmitScore(Leaderboardid, score, context, (result) => {
    12.             if (result.IsSucceeded) {
    13.                 Debug.Log("Score submitted successfully");
    14.             } else {
    15.                 Debug.Log("Failed to submit score: " + result.Error.FullMessage);
    16.             }
    17.         });
    I would siggets you maintain your "own" id's factory based on platfrom or any other application setting you need.


    Yes it does, nothing is required from your side :)

    About the player auth state, I just added this to the documentation, please have a look:
    https://unionassets.com/ultimate-mobile-pro/authentication-729#check-auth-state