Search Unity

Anyone interested in accessing the entire iOS SDK API from Unity?

Discussion in 'iOS and tvOS' started by u3dxt, Jul 6, 2013.

  1. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    Hi, we are returning to Unity after a small diversion.

    We are wondering if the community is interested in accessing the raw iOS SDK API from Unity's scripting languages (c#, javascript, boo)

    I know there are wonderful native plugins already from prime31 and others, so we are wondering if there is still room for us.

    Please let us know if you are interested!



    EDIT: Early Release Now Available on AssetStore! http://u3d.as/content/vitapoly-inc/i-os-sdk-native-api-access-from-c-javascript-and-boo/50g

    EDIT: FYI, it's not just raw bindings to ObjC. We also have an easy to use high level API! Mostly 1 liners for common tasks. See the Usage tabs at: http://u3dxt.com/docs ;-)

    EDIT: Tutorial Video on Integrating the Social Framework

    EDIT: Video Tutorial on Mixing Unity3D Elements with WebKit

    EDIT: GameKit with Game Center, Realtime and Turn Based Multiplayer games, Voice Chat, Achievements, Leadboards, every single API from GameKit. :)

    EDIT: Want access to the APIs quicker? Join the beta program: http://forum.unity3d.com/threads/196193-iOS-SDK-Beta-Program-Now-Live!

    EDIT: Tutorial: Cross Promotions with StoreKit. Source Included.

    EDIT: Tutorial: Mail Anything

    EDIT: It's a little over 3 months since we released our first framework, have a look at how far we’ve gotten. ;-) Thank you early supporters! We still have a ways to go, but we will get there!


    Game Controllers Framework
    • Discovering Controllers
    • Determining Which Profiles Are Supported by a Controller
    • Responding When a Controller Is Paused
    • Inspecting a Controller
    • Assigning a Player Index
    • Polling the Axis’ Value
    • Receiving Notifications When the Axis’ Value Changes
    • Reading the Button’s Value
    • Receiving Notifications When the Button’s Value Changes
    • Reading the Directional Pad as a Pair of Axes
    • Reading the Directional Pad as a Four Directional Buttons
    • Receiving Notifications When the Directional Pad’s Values Change
    • Inspecting Game Controller Element Properties like analog buttons and collection
    • Determining the Controller That Owns This Profile
    • Determining When Any Element in the Profile Changes
    • Reading Shoulder Button Inputs
    • Reading Directional Pad Inputs
    • Reading Face Button Inputs
    • Reading Thumbstick Inputs
    • Reading Trigger Inputs
    • Saving a Snapshot
    • Converting Between Extended Snapshots and Data Objects

    GameKit Framework for iOS 7.0
    • Retrieving Achievement Progress from Game Center
    • Initializing an Achievement Object
    • Configuring an Achievement
    • Reading the State of an Achievement
    • Reporting Progress on an Achievement
    • Displaying a Notification Banner For an Achievement
    • Resetting the Player’s Progress on Achievements
    • Issuing Achievement Challenges
    • Identifying a Player
    • Obtaining the Achievement Challenge
    • Retrieving Achievement Descriptions
    • Reading and Writing Achievement Properties
    • Working with Achievement Images
    • Retrieving Group Information
    • Retrieving the List of Challenges to the Local Player
    • Examining Details About a Challenge
    • Declining a Challenge
    • Determining the Maximum Number of Recipients for Friend Request
    • Delegate to Compose View for Friend Request
    • Adding Recipients to Friend Request
    • Setting an Invitation Message to Friend
    • Configuring the Game Center View Controller’s Delegate
    • Configuring the Game Center Controller’s Content
    • Determining the Available Leaderboards to Display
    • Customizing the Leaderboard Request
    • Retrieving High Scores
    • Changing a Local Player’s Default Leaderboard
    • Retrieving Group Information
    • Configuring the Leaderboard View Controller with category, delegate and time scope
    • Accessing the Shared Local Player
    • Authentication for Local Player
    • Accessing Friends
    • Determining If the Player Is Underage
    • Working with Leaderboards
    • Registering Listeners
    • Getting and Setting the Delegate for a Match
    • Working with Other Players
    • Sending Data to Other Players
    • Joining a Voice Chat
    • Finishing the Match
    • Retrieving the Shared Matchmaker
    • Receiving Invitations From Other Players
    • Matching Players
    • Looking For Nearby Players
    • Initializing a Matchmaker View Controller
    • Getting and Setting the Delegate
    • Matchmaker View Controller Properties
    • Adding Players to an Existing Match
    • Implementing Hosted Matches
    • Determining the Number of Players Allowed in the Game
    • Setting an Invite Message
    • Creating Subsets of Players
    • Inviting an Initial Group of Players
    • Displaying a Notification Banner
    • Setting and Getting the Delegate for the Peer Picker
    • Displaying the Picker Dialog
    • Configuring Connectivity Options for the Peer Picker
    • Loading Player Details
    • Identifying the Player
    • Player Details
    • Player Photos
    • Initializing a Score Object
    • Score Properties
    • Reporting a New Score
    • Changing the Default Leaderboard
    • Issuing a Score Challenge
    • Initializing Leaderboards with a Score
    • Obtaining the Score to Beat
    • Retrieving Existing Turn Based Matches
    • Creating a New Turn Based Match
    • Retrieving Information About the Turn Based Match
    • Retrieving the Turn Based Match’s Custom Data
    • Handling the Current Player’s Turn
    • Leaving a Turn Based Match
    • Ending a Turn Based Match
    • Deleting a Turn Based Match From Game Center
    • Transferring Information with Exchanges in a Turn Based Match
    • Sending Messages Between Players in a Turn Based Match
    • Displaying a UI For Turn-Based Matches
    • Participant Information in Turn Based Match
    • Setting the Turn Based Match Outcome
    • Determining Whether Voice Chat Is Available
    • Starting and Stopping Voice Chat
    • Transmitting to Other Players
    • Receiving Updates About Other Participants
    • Controlling Chat Volume
    • Channel Properties

    Media Player Framework
    • Creating and Initializing the Movie Player
    • Accessing Movie Properties
    • Accessing the Movie Duration
    • Accessing the View
    • Controlling and Monitoring Playback
    • Generating Thumbnail Images
    • Retrieving Movie Logs
    • Unavailable Methods and Properties
    • Getting a Music Player
    • Setting Up a Playback Queue
    • Managing Playback Mode and State
    • Controlling Playback
    • Using Music Player Notifications
    • Working with the Default Now Playing Info Center
    • Extracting Timed Metadata from a Stream
    • Resizing Subviews of Volume View
    • Managing Visibility of Controls
    • Customizing the Volume Slider
    • Customizing the Route Button
    • Presenting and Dismissing the Movie Player
    • Starting and Stopping Playback
    • Seeking Within Media
    • Accessing Playback Attributes
    • Working with Media Properties of the Media Entity
    • Obtaining Group Properties of the Media Item
    • Using a Media Item Image
    • Creating a Media Item Collection
    • Using a Media Item Collection
    • Using the Default Media Library
    • Initializing a Media Item Picker
    • Using a Media Item Picker
    • Creating Media Property Predicates
    • Examining Media Property Predicates
    • Creating Media Queries
    • Configuring Media Queries
    • Performing Media Queries
    • Working with Media Query Sections
    • Movie Access Log Properties
    • Movie Access Log Event Properties
    • Movie Error Log Properties
    • Movie Error Log Event Properties

    MultiPeer Framework
    • Configuring and Initialization Advertister Assistant
    • Starting and Stopping the Assistant
    • Initializing a Browser View Controller
    • Getting and Setting the Maximum and Minimum Number of Peers
    • Configuring and Initialization the Nearby Service Assistant
    • Starting and Stopping Advertisement
    • Initializing the Browser programmatically
    • Browsing for Peers programmatically
    • Inviting Peers programmatically

    Speech Framework (Part of AVFoundation)
    • Finding Voices
    • Working with Language Codes
    • Synthesizing Speech
    • Controlling Speech Synthesis, continue speaking, pause at speaking boundary, stop speaking at boundary
    • Managing the Delegate
    • Responding to Speech Synthesis Events, cancel, continue, finish, pause, start, and will speak range of speech string
    • Creating an Utterance
    • Configuring Utterance Speech, pitch, post utterance delay, preutterance delay, rate, speech string, voice, volume

    Face Detection Framework (Part of CoreImage)
    • Detect features (such as, faces and eyes) in still and video images, and track faces in video images
    • Creating a Detector Object
    • Using a Detector Object to Find Features
    • Locating Faces, bounds, face angle
    • Identifying Facial Features, left eye, right eye, mouth position, has smile, left eye closed, right eye closed
    • Tracking Distinct Faces in Video

    Core Image Filters (Part of CoreImage)
    • Process images using existing image filters
    • Chain together filters and then archive them for later use
    • Analyze images to get a set of auto adjustment filters.
    • Initializing Color Objects
    • Creating Color Objects
    • Getting Color Components
    • Creating a Context with EAGL
    • Rendering Images, create cg image, draw image, render to bitmap, render to cvpixel
    • Determining the Allowed Extents for Images Used by a Context
    • Creating a Filter
    • Accessing Registered Filters
    • Getting Filter Parameters and Attributes
    • Setting Default Values
    • Serializing and Deserializing Filters
    • Creating an Image
    • Creating an Image by Modifying an Existing Image
    • Initializing an Image
    • Getting Image Information
    • Getting Autoadjustment Filters
    • Working with Filter Regions of Interest
    • Creating a Vector
    • Initializing a Vector
    • Getting Values From a Vector

    Social Framework
    • Get the activity feed for a user
    • Create a network session
    • Make a new post
    • Set properties on a post, add attachments, etc.
    • Publish a post to an activity feed
    • Initializes a newly created request object with the specified properties
    • Access OAuth1 and OAuth2 account information
    • Access URL, requestMethod, URL, and parameter properties
    • Sending Requests
    • Performs an asynchronous request and calls the specified handler when done
    • Specifies a named multipart POST body for this request
    • Create a new social compose view controller
    • Check whether you can send a request for a particular service type
    • Composing Posts with initial text, image, or URL
    • Completion handler that indicates whether the user finished or cancelled composing the post

    Twitter Framework
    • Check whether you can send a Twitter request
    • Compose Tweets with initial text, image, and url
    • Completion handler that indicates whether the user finished or cancelled composing the tweet.
    • Encapsulate the properties of an HTTP request that you send to Twitter to perform some
    • operation on behalf of the user
    • Access the account, requestMethod, URL, paramters, and multipart data properties
    • Perform signed OAuth-compatible URL requests

    MessageUI Framework
    • Responding to Email Completion
    • Responding to the SMS Message Completion
    • Determining Mail Availability
    • Setting Mail Fields Programmatically
    • Set subject, to, cc, bcc, message body in plaintext or HTML
    • Adds the specified data as an attachment to the message
    • Add multiple attachments
    • Determining If Text Message Composition Is Available
    • Attach multiple recipients to text messages
    • Add attachments to text messages

    StoreKit Framework
    • Obtaining Information About the Downloadable Content
    • Obtaining Information About the State of a Download
    • Accessing a Completed Download
    • Getting and Setting ProductIdentifier, Quantity and Request Data
    • Creating new payment for the specified product
    • Getting Product Identifier, Quantity, RequestData, and Application Username
    • Determining Whether the User Can Make Payments
    • Getting the Queue
    • Adding and Removing the Observer
    • Managing Transactions
    • Restoring Purchases
    • Downloading Content, start, cancel, pause, and resume
    • Getting Information About the Transaction, error, payment, transaction state, identifier, receipt
    • Getting Information About the Transaction’s Downloadable Content
    • Restored Transactions
    • Getting Product Attributes, localized description, localized title, price, price local, product identifier
    • Getting Downloadable Content Information, downloadable, content lengths, and versions
    • Working with Receipt Refresh Requests
    • Presents a store that allows the user to purchase other media from the App Store
    • Loading a New Product Screen
    • Handling Transactions
    • Handling Restored Transactions
    • Handling Download Actions
    • Responding to a Dismiss Action

    Accounts Framework
    • Accessing Account Properties, access granted, account type description, identifier
    • Getting Accounts
    • Getting Account Types
    • Saving Accounts
    • Requesting Access
    • Renewing Account Credentials
    • Removing Accounts
    • Initializing Credentials with OAuth and OAuth2 tokens
    • Accessing Credential Properties
    • Initializing Accounts
    • Accessing Properties, account description, account type, credential, identifier, username


    Download iOS SDK Pro Today!

    Check out our website to look at some videos: http://www.u3dxt.com
    Or the unity3d tutorial site: http://unity3d.tutsmobile.com
     
    Last edited: Jan 31, 2015
  2. User340

    User340

    Joined:
    Feb 28, 2007
    Posts:
    3,001
    wow, how would you do that?
     
  3. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    Well, it's a bunch of work. No different than how prime31 does it, I guess. But we are all about making all the API available. Anything you can do in iOS native, you can do in Unity3D is what we are striving for.

    But we've been doing it for the past year for the Adobe AIR platform: http://airextensions.net
    So, at least most of the hard work is done. We plan to release a high level API in addition to the low level API, like what we are doing with the Adobe AIR counterparts. Checkout the API tab on the GameKit Native Extension for AIR as an example of what we can bring to the Unity platform.
     
    Last edited: Jul 6, 2013
  4. elias_t

    elias_t

    Joined:
    Sep 17, 2010
    Posts:
    1,367
    I would definitely be interested.

    How much time would it take for a first release?
     
  5. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    We are porting the major iOS frameworks over one at a time. The ones we already have for Adobe AIR, such as, face detection, image filters, gamekit, etc., should only take a couple of weeks. If there is enough interest from the Unity3D community, we will do the entire iOS framework; we've gotten pretty good at it and can do it fairly quickly. Would you, or anyone else reading this, want an early release with just a few frameworks for now until we get everything else in?
     
  6. kenlem

    kenlem

    Joined:
    Oct 16, 2008
    Posts:
    1,630
    Yes! I would be interested in an early release with the frameworks you have. You can update as you add additional frameworks. Maybe even give a price break to earlier adopters and raise the price as you add features. Give people an incentive to get in in early.
     
  7. User340

    User340

    Joined:
    Feb 28, 2007
    Posts:
    3,001
    As of right now, I just can't recommend you guys doing the low level one. I can think of several reasons such as:

    1) What's the point? Why do you want to expose all of those classes/frameworks to unity? Who is it helping? We will still have to learn what a GKPeerPickerController is and what a GKSession is, etc...
    2) It's not very unity like in that these classes that you expose will only run on iOS. They won't just work cross platform.
    3) Going from managed to native is slow. Your framework will require us to make so many of these calls that the speed difference won't even compare. Not to mention that Unity has a single frame delay when calling native functions.

    The point of Unity is that you're supposed to write code independent of the platform, not the opposite...
     
    Last edited: Jul 7, 2013
  8. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    Daniel, actually, it's very fast. I mean, after all, it's just a pointer to a C function. The single frame delay applies to the other way around, calling Unity from native code using the UnitySendMessage API -- but we've engineered a different way, a much quicker way without the single frame penalty. Typically, we expect 99% of the native calls will be from Unity to native anyway, so the speed will be close to native. We should probably release some benchmarks in the future, but our experience from working with Adobe AIR native extensions the past year shows that it's negligible; we can't tell the difference.

    One of the reasons why we decided to expose the entire iOS SDK is because we do not know what users want to do, so might as well let them do everything that the native platform can do. A few years ago, we used Appcelerator and Adobe AIR as our platforms before they opened up native extensions. When Apple introduced the in-app purchase API, there was no way we could use it, we had to wait for those platforms to decide how to do it in a cross platform way. In my opinion, the few months lost from not having this feature available was detrimental to our business. So when native extensions was a possibility on the AIR platform, we made sure this wasn't going to happen to us again by diving deep into it. Once we get comfortable with Unity3D, our goal is to release at the same time or earlier than when the official iOS SDK is out.

    But don't get me wrong, we do wish to keep the spirit of Unity's cross platform independence alive. One of the reasons for providing an additional high level API is so that when we release an Android/Win8/Playstation low level SDK, the impact to people who use our plugin is none to minimal. But this will depend on the reception of the iOS low level API plugin. If it's successful, then we will definitely continue to other platforms.

    I think we are at a fascinating time; mobile technology is advancing very fast. I love being on the bleeding edge and playing with the new tech, most of the time that requires targeting one native platform until the other platforms catch up.
     
  9. Moonjump

    Moonjump

    Joined:
    Apr 15, 2010
    Posts:
    2,572
    This could be brilliant as long as it is well documented. Much of the interest would come from people who have little exposure to Xcode, so would need things explaining well.

    Would you look at expanding this to the other platforms Unity supports (or will support soon) such as Android, WP8, and BB10/
     
  10. User340

    User340

    Joined:
    Feb 28, 2007
    Posts:
    3,001
    According to the docs it states that managed to unmanaged calls are quite processor intensive.

    Oh yeah I think you're right.

    That's what I'm trying to understand; who is the target market? It seems like it would be the c# developer who doesn't know the objective-c syntax. But because it's a low level framework, they still need to learn the apple api and apple has extremely extensive/thorough documentation.
     
  11. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    To those who are interested in an early release, we would like to announce that it is now available on the Unity Asset Store!

    http://u3d.as/content/vitapoly-inc/i-os-sdk-native-api-access-from-c-javascript-and-boo/50g

    This release lets you access 78 classes across 421 APIs. The following fully exposed frameworks are included:
    Social, Accounts, MessageUI, Twitter, and StoreKit.

    If you would like to check out more details, such as the actual API and usage documentation, check out: http://u3dxt.com/

    Please let us know how we are doing!

    P.S.,
    kenlem, thanks for the advice, the initial release will be $35!
     
  12. techmage

    techmage

    Joined:
    Oct 31, 2009
    Posts:
    2,133
    I don't know if I would really want this.

    At least if this is what I am assuming it to be, just direct C# bindings to all objective-c functions.

    I would prefer to set it up so as much as possible is done on the Objective-C side of things and then Unity just calls a single native function to handle a bunch of stuff.

    To have a bunch objective-c bindings and then be doing all the logic and code in C# seems more cumbersome. Someone who is not well-versed in Objective-C might think this makes some things easier because now they can program it in C# but I really don't think it will at all. They are still going to have to go to the Apple Docs and read everything pertaining to the subject. Lets say they are trying to implement bluetooth multiplayer, they will still have to to read the entire doc and reference for the bluetooth stuff. But then they are going to have to translate it all to C#, which I think is going to completely destroy what chances doing it in C# may have had to actually make it easier. Plus when dealing with native iOS classes, the objective c language has things implemented in it that makes the dealing with those things more straightforward. Which someone will lose out on.

    What Prime31 has been doing I think is a generally better idea. Grab pieces of the iOS SDK that are relevant, implement them as much as possible in Objective-C, then expose simplified functions to C#.
     
    Last edited: Jul 9, 2013
  13. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    Hi techmage, it is not just C# bindings to all objective-c functions. :)

    We also have a high level API. Perhaps we should emphasize it more.

    For example, in the Social SDK, if you want to share something with the activity sheet, it's only 1 line:
    Code (csharp):
    1.  
    2. // share an array of strings, URLs and Texture2D objects
    3. SocialXT.Share(new object[] {
    4.     "You can find the best Unity Plugins at u3dxt.com!",
    5.     "http://www.u3dxt.com",
    6.     aTexture
    7. });
    8.  
    Or get a list of tweets:

    Code (csharp):
    1.  
    2. twitter.GetTweets(delegate(object obj) {
    3.     Log("tweets: " + Json.Serialize(obj));
    4. });
    5.  
    So, many of the common tasks are written for you in the high level API. In my opinion, one of the benefits of using our plugin is that if you want to do something that we did not expose in the high level API, the option to do it is there without writing your own plugin. We want to combine easy to use without limiting what the developer can do, that's why we also expose the low level API.

    Please refer to the "Usage" tab in http://u3dxt.com/docs/ for more examples.

    EDIT:
    I just did a quick comparison between our StoreKit API and Prime31's StoreKit API. Neither of us exposed "Pausing A Hosted Download" from Apple as a high level API. However, because we also exposed the low level API, users of our plugin can get the SKPaymentQueue to pause, cancel, or resume downloads.
     
    Last edited: Jul 9, 2013
  14. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    Upcoming SDK addition: Newsstand framework.

    We decided to put GameKit on hold for a couple of days and work on Newsstand since there isn't one on the Unity Asset Store that I know of. It will be a free upgrade to those of you who bought our plugin already.

    Why Newsstand? It's one of the few places that's not overcrowded in the AppStore. You can get your app placed inside the Newsstand app. Just imagine it, a Unity3D-enabled magazine. You can be the first! Am I crazy to suggest this?
     
    Last edited: Jul 9, 2013
  15. gregzo

    gregzo

    Joined:
    Dec 17, 2011
    Posts:
    795
    Very much interested, hope this sells enough to justify adding more api's.
     
  16. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    Thanks for your interest gregzo. We haven't been updating much the last past couple of weeks, but we are definitely adding more APIs. Actually, we did some proof of concepts just last week at the iosdevcamp2013 hackathon. Our company teamed up with with two others to create a sort of tech demo, using Unity3D, face detection, voice recognition, voice synthesis, and even mind control. It was a two part project. The first part was to use those technologies to control a simulated robotic arm inside Unity3D. The second part was to use those technologies to control an actual physical robot powered by Arduino. It was fun, and we actually won the "Coolest App" award at the conference: http://www.iosdevcamp.org/2013/07/17/2013-winners/

    All those technologies were up-ported to Unity3D, accessible from C#, Javascript, or Boo. We are cleaning up the iOS related technologies and will be making another release soon. Do you have any framework requests?
     
  17. eskimojoe

    eskimojoe

    Joined:
    Jun 4, 2012
    Posts:
    1,440
    I'd like something to replace the Prime31 iPod Audio framework, iCade Plugin, AdMob, Game-Center, FaceBook, Native Alerts, Web-Views, Rate this app, Push Notifications, Piracy Detection, StoreKit plugin.


    This is lot of features you are replacing. Is that possible?
     
  18. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    eskimojoe, thank you for the feedback. We will prioritize based on the features that is in the official IOS SDK because that is our core competency. As of this moment, there is full support for Facebook (without needing to ask user for password) , native alerts, and storekit. Next up will likely be Gamekit, Web views, and push notifications.

    If we feel that we can do a better job on existing third party plugins, we will do those too. Or if they are a cool new exciting technology, like mind control. ;-)
     
  19. eskimojoe

    eskimojoe

    Joined:
    Jun 4, 2012
    Posts:
    1,440
    Does it support iPod Audio at this moment?


    Do you need a tester?
     
  20. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    No iPod Audio support yet, but it will be on the priority list. :)

    And YES! We need testers, please send me a private message with your e-mail address. If anyone else is interested, we can accept 2 or 3 more testers. As a tester you will have access to beta builds of the iOS SDK in exchange for bug reporting and feedback. Thanks!

    EDIT: It's supported now!
     
    Last edited: Oct 21, 2013
  21. J_P_

    J_P_

    Joined:
    Jan 9, 2010
    Posts:
    1,027
    Your 'the price will rise as more features are added' pitch sold me and I bought it. Having the low level api will be super handy -- I guess I'm the elusive target audience.

    One big suggestion: the faster you are at supporting future changes Apple makes to their APIs, the better. Very annoying when I'm waiting on third party tools to update before I can take advantage of new iOS features.
     
  22. gate1

    gate1

    Joined:
    May 31, 2013
    Posts:
    22
    Hello!
    I have a question, сan i use this plugin to access the native iOs calendar or weather service!
    Thank you!
     
  23. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    gate1, we are planning to open up EventKit which has the iOS calendar APIs. I do not remember seeing a native weather service API. If anyone knows which framework it's in, we'd gladly open it up as well. Alternatively, if you would like to implement weather without a plugin, you can use http://www.wunderground.com/weather/api/ or http://graphical.weather.gov/xml/rest.php web service.

    If you would like to know the progress of our plugin, please check out the progress section: http://u3dxt.com/
     
  24. eskimojoe

    eskimojoe

    Joined:
    Jun 4, 2012
    Posts:
    1,440
    Do you have snipplets of code to do:

    1) Ask to Rate this App.

    2) Take a screenshot of the App and put it to the person's Photo Gallery.

    3) Current language of the device? Need this to seed the initial language for the game.

    4) Show a web-page in-line in a custom browser?

    5) How to check if Jail Broken?

    6) How to check if pirated?

    7) iCade or iControlPad support?

    8) How do use Audio Player so they can play their own music?
     
  25. gate1

    gate1

    Joined:
    May 31, 2013
    Posts:
    22
    Thank you!
    Known anything about the approximate timing of release of the EventKit ?
     
  26. eskimojoe

    eskimojoe

    Joined:
    Jun 4, 2012
    Posts:
    1,440
    Any replies to basic tasks before I start asking for a refund?
     
  27. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    Hi eskimojoe, I could have sworn I replied to your questions last week. My bad.

    Our plugin is focused on making available the native iOS frameworks available for Unity. We also make available a high level SDK, but features that do not map to an iOS framework will be a second priority. The CoreImage and GameKit frameworks are just about to exit beta and should be submitted to the AssetStore for review this week. When we release frameworks, they are usually full major frameworks, which means, you can access all the APIs available from iOS for that framework. Since there have been some requests for specific features, I may try to sneak in taking a screenshot of an App and showing a webkit.

    Unfortunately, ask to rate the app, check if pirated, check if jailbroken, iCade/iControlPad support, etc., is not part of the iOS SDK. So they will likely not be supported by this plugin.

    gate1, PM me if you would like to be part of the beta for EventKit.

    p.s., check out the progress: http://u3dxt.com/
    If there's anything you feel should get a higher priority, let me know.
     
  28. John-B

    John-B

    Joined:
    Nov 14, 2009
    Posts:
    1,262
    Does it support WebView?

    As long as I've been using Unity, I've been looking for a way to display a scrolling field of formatted text in a draggable "window," NOT full screen. I've been using the Etcetera plugin's inline WebView, but it's kind of flakey (erratic scrolling and links that stop working), so I'd really like something more reliable. That alone would make this package worth while to me.
     
  29. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    Since a few people are asking about WebView support, we've decided to up its priority. This is the UIWebView and all it's associated API: http://developer.apple.com/library/...ence/UIWebView_Class/Reference/Reference.html

    You can specify the frame size and location, inject javascript, and mix and match Unity3D elements. I created a quick video with some basic functionality. I also included a webview prefab for the non-coders out there. Just drag and drop the webview prefab and it's integrated.



    P.S., John, it's also possible to do a "draggable window". You have to detect the touch points with Unity3D's APIs and then just set the bounds for the _webview object.

    It will be available in release iOS SDK 1.2+.
     
  30. John-B

    John-B

    Joined:
    Nov 14, 2009
    Posts:
    1,262
    Wow, that's great!

    A few questions. I don't know iOS programming, so I'm not sure how easy/difficult these things would be. I assume that if there's a high-level API, they'd be pretty easy.

    Is it possible to add a Print or Share button to the WebView?

    Can it use local URLs, like files in the Streaming Assets folder?

    What does inject javascript mean? Can Unity communicate with the web page? Can a Unity script call a JS function on the web page and vice versa?

    Can it be full screen (like the fullscreen WebView in Etcetera)? For example, with a title bar at the top, a Done button to dismiss it, navigation/share buttons along the bottom? Would those be part of the WebView or added in Unity?

    Is the WebView in its own layer? Can I, for example, put a frame behind it, something for the user to drag?
     
    Last edited: Aug 7, 2013
  31. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    John, all the programming will be done with Unity's C#, Javascript, or Boo. There is no need to touch Xcode or Objective-C. It will just be like using additional Unity APIs, complete with code completion and help.

    Printing is actually pretty complex and not part of WebView. If there is demand or if it's easily exposed, we can sneak that in with the next release. Printing is part of UIKit under UIPrintInteractionController and UIViewPrintFormatter which we have not exposed yet. However, adding a Print button is easy. If there is a plugin in the asset store that can layout, format, and print HTML, you can ask the WebView for the HTML source and pass it to that plugin. But, our plan is to include ALL iOS SDK features, so printing will be available sometime in the future.

    I do not have WebView in Etcetera, can you post a screenshot?

    Our WebView sits on top of Unity3D. All the buttons are Unity3D GUI Objects. You can use 3D planes or some other 2D library to create the frame and navigation buttons. The size of the WebView can be set to "full screen" or the width and height of the entire device, but like you said, you would probably add a titlebar and a frame so that it can be manipulated.
     
  32. danien

    danien

    Joined:
    Jun 16, 2009
    Posts:
    71
    @u3dxt, are the C# and Objective C source code provided in case we want to add support for our own ObjC libraries?

    Thanks.
     
  33. Fusnex

    Fusnex

    Joined:
    Aug 7, 2013
    Posts:
    2
    I think it's a terrific idea! It would open up new possibilities for Unity developers and help create a better user experience. My personal experience with Prime is that their support is lacking and they are unwilling to improve their product by adding missing features unless they think that's what the majority wants. So I would really love to see a competing product that will provide a more comprehensive set of iOS native functions.
     
  34. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    @danien, we plan to continue open sourcing all the high level code, prefabs, and examples. There isn't anything interesting in the low level code because it's all machine generated. Also, it's pretty easy, though mundane and time consuming, to manually expose your own libraries by following this guide: http://docs.unity3d.com/Documentation/Manual/Plugins.html

    @Fusnex, you hit the nail on the head. We are doing what we are doing now because we are one of those frustrated users. Our motto is open everything because it's those creative ways that developers use APIs that get them noticed. For example, you can now auto play a non fullscreen video using webview and Unity on iOS.

    Creating the high level API, examples, and prefabs is what's slowing us down. We are a bit hesitant to release low level APIs without accompanying it with examples, task oriented APIs, and prefabs. I would like to identify developers who can dig through the documentation and use the low level API. If that community is large enough, we may release the native low level APIs to them first, while we create the high level for the rest of the Unity community.
     
  35. John-B

    John-B

    Joined:
    Nov 14, 2009
    Posts:
    1,262
    Attached is a screen capture of a fullscreen WebView using Etcetera. The Done button closes the WebView, and the Share button pops up that list of options.

    Before Etcetera had the print option, I added the Share button and popup selection myself. It was only a few lines of code and not that difficult, considering I know nothing about iOS programming. It printed the web page just fine, no plugins or anything else was required.
     

    Attached Files:

  36. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    Hi John, thanks for the screenshot. Correct me if I am wrong, but the navigation arrows, share, and done buttons looks like they are part of UIView or Apple's UI elements. Currently, our APIs are more low-level than what is shown and not all the UIKit elements are available yet. But I could see how constructing your own iOS interfaces would be useful. When we open up the UIKit elements, it will be individual elements, with all of their APIs exposed so you can create in Unity what someone using ObjC natively can create. So, I will have to get back to you with an example of how to do this with our plugin once we've released more UIKit elements.

    Also, I am curious, what was the API call you used to print? It is possible that the Etcetera plugin may have a high level API to do so. But again, when we release the printing APIs, we will release the low-level in addition to the high level, so you are able print and layout more than HTML but custom widgets and scenes, if you so desire. I, very much, want to just release a high level API for you, but that isn't what our plugin is about. I will keep you in the back of my head as we continue to expose more APIs.

    Also, I missed your question about local URLs and injecting javascript. The answer to those questions are all "yes". Going from Unity to webpage (local or remote) is built in, just call webview.stringByEvaluatingJavaScriptFromString("JAVASCRIPT_FUNCTION()") after the page has loaded. Going the other way is not built in and a bit hackish, but possible. Maybe I'll write an example for this later, sounds fun.
     
  37. John-B

    John-B

    Joined:
    Nov 14, 2009
    Posts:
    1,262
    Correct.

    I don't remember now, and I apparently replaced all my modified code when the plugin started supported printing, since I can't find it anywhere.

    IIRC, there was already a bar button at the bottom as there is now (not sure if all my terminology is correct) that popped up a few options (like Open in Safari, as it does now). I believe I just added an additional item to the action sheet. I used this as a guide:

    https://developer.apple.com/library....html#//apple_ref/doc/uid/TP40010156-CH12-SW1

    Specifically, this section: Listing 5-3 Printing the contents of a web view. As I said, I'm not really an iOS coder, and was quite surprised I was able to figure this one out and get it working relatively easily (only to have it added to the plugin soon after).

    I just found and sent you the code in a PM, but I can't tell if it got sent, it doesn't show up in my sent messages list. Let me know if you DID NOT receive it and I'll try again.
     
    Last edited: Aug 7, 2013
  38. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    Oh! I get what you are saying. So, you edited the Obj-C source code. The approach with our plugin is different, you don't need to touch Obj-C or XCode, everything can be accomplished with C#, UnityScript, or Boo. Our plugin hides the complexities of the Obj-C language and marshaling between Unity3D and Objective-C. We want to create a seamless experience, where you can mix Unity3D APIs and iOS SDK APIs to create a complete game/application using MonoDevelop without compromise.
     
  39. danien

    danien

    Joined:
    Jun 16, 2009
    Posts:
    71
    I see. Yeah, I was looking at this to save time in wrapping the iOS SDK myself. Anyway, bought it yesterday. Thanks.
     
  40. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    Awesome. Thanks danien! We would love your feedback. Today, the AssetStore team approved the webkit and Gamekit additions. You will get that for free!

    I posted the GameKit info in a different thread: http://forum.unity3d.com/threads/19...ltime-TurnBased-Multiplayer-Voice-Leaderboard

    I guess I will keep this thread as a feature request thread. Even though we will continue to work on every iOS SDK API, I will up the priority of any frameworks you guys want first. So don't be shy to let us know what you want. :)
     
    Last edited: Aug 13, 2013
  41. danien

    danien

    Joined:
    Jun 16, 2009
    Posts:
    71
    Nice!

    We have been using Prime31's Game Center and Game Center Turn-based Multiplayer plugins but we don't think those are right for our project. Too much stuff abstracted so your strategy of exposing both the low level API and providing a higher level API appears to be exactly what we are looking for. Caveat: We haven't switched over yet so this is just from looking at your APIs and examples. Additionally, getting all the other iOS APIs exposed is tremendous value.

    One question is about the sustainability of this level of support: with Apple releasing tons of new and revised APIs with every new iOS version, there's bound to be some lag time before you guys can get familiar with the additions and changes before implementing them. How are you guys managing this process and how would it affect the buyers of your plugin? e.g., Game Center for iOS 7 has some new features. What time frame could we expect those be integrated, considering that different people would be asking you to implement different APIs first? Perhaps there could be some way for us to complement your plugin with our own compatible additions, or perhaps even contribute the code to your plugin. It's not a priority at this time, but would definitely like to see this plugin do well for a long time.
     
  42. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    danien, excellent question. The key differentiator is that we do not manually create the low level API, it's automated. We spent the last six months developing a tool to generate the Unity bindings for objective C classes. So, lag time between when Apple releases a new API and us generating the low level API is just a click of a button away.

    Creating examples and the high level API is what takes the significant portion our of time. The feedback I've gotten so far is that people do not want just the low level API, they want something easy to use, drag and drop prefabs even. Our strategy is to initially create all of the high level APIs and open source it. The low level will be closed, not because we have anything to hide but, because they mirror the iOS SDK and it shouldn't be changed.

    We are rolling out a beta program where the low level APIs are available to beta testers first. Once the high level is tested, we submit to the asset store. This way, the lag time between having the latest and greatest IOS SDK features are significantly reduced for those who want just the low level API.
     
  43. danien

    danien

    Joined:
    Jun 16, 2009
    Posts:
    71
    That sounds like a good plan. Thanks for the info and looking forward to using it!
     
  44. Tripwire

    Tripwire

    Joined:
    Oct 12, 2010
    Posts:
    442
    This sounds really nice! I'm interested in buying this asset, a question for a project i'm working on now:

    Is it possible to access the native Date Picker? I mean the one in the screenshot below:

     

    Attached Files:

  45. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    Tripwire, not yet. The UIKit framework is very large, so we are doing the other frameworks first. However, we have been releasing parts of the UIKit framework upon request. UIView, UIApplication, Labels, UIWebView, Alerts are available. EventKit is in beta right now, so we may as well expose Date Picker on the next release. I will keep you updated.
     
  46. Beastw00d333

    Beastw00d333

    Joined:
    Jun 17, 2013
    Posts:
    4
    You are doing a great job with your product. I read about how you guys have a priority list, and I was wondering how high up / long will it be til you guys have got iAds working.

    Keep up the great work.
     
  47. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    Thanks Bestw00d333! We try to serve the Unity community the best we can. :) Is there a reason why you would like iAds framework instead of using the built in ADBannerView from Unity? If there's any reason at all, we'll probably raise it's priority.

    @Tripwire, I just opened up the Date Picker APIs. It will be part of the next release. If you PM me, I can give you a free beta version to try out so you can test if it meets your needs. There is no high level API or prefabs, just the straight mirror of iOS's DatePicker API.
     
  48. Beastw00d333

    Beastw00d333

    Joined:
    Jun 17, 2013
    Posts:
    4
    u3dxt. I am doing a little research on ADBannerView right now, honestly I do not know that much about the unity side of things like that. I have only be learning about the game center features such as iAds, and I read how a lot of little time developers like me put this on their free apps and get make a little side change. Does the ADBannerView have the same kind of ads. Not to try sound like a snob (low budget), but also does it pay just as well as iAds.
     
  49. Tripwire

    Tripwire

    Joined:
    Oct 12, 2010
    Posts:
    442
    @u3dxt Wow thx! I send you a PM :)
     
  50. u3dxt

    u3dxt

    Joined:
    Jul 6, 2013
    Posts:
    317
    @Beastw00d333, ADInterstitialAd and ADBannerView uses iAds on iOS. So, if we open up iAds, it will provide similar functionality. I do not see anything in the iOS iAD framework that is compelling that Unity doesn't already provide with those two classes. When doing ads, I find that ADInterstitialAd pays a lot more than banner ads. If you are only interested in iAds, I would recommend just using what Unity has already provided. Thanks.