API integration for Unity

I have been doing a lot of research into iPhone development and have seen the light of APIs. I would like to use Xcode for the APIs but I want to use Unity for the engine. Is there a way I can integrate the APIs (like CoreMotion) into Unity so it compiles altogether so I don't have to worry about everything working together? Or are there unity APIs that do the same thing?

I am a beginning developer and need help. Links are great but explanations on how to integrate are better.

Thank you in advance!

Sure, Unity iPhone Advanced 1.7 supports "plugins" and Unity iPhone 3.0 will also support plugins (in other words, starting with 3.0 you will no longer need Unity iPhone Advanced in order to be able to use that feature).

There's a related question and answer: Specific steps to set up a plugin for iphone in XCode

There's also a couple of vendors that sell Plugins that make it very easy to access many of the iOS features that are not directly supported by Unity. One example would be: Unity 3 iPhone Plugins - Native Made Easy. As these come with full source code, they might also be a good starting point to learn the trade ;-)

EDIT: How to connect Unity scripts with plugins ... it's in the documentation but I only have a local link which wouldn't work for you, so I'm duplicating some of the information here (EDIT2: That documentation is now available online: Unity Manual > Advanced > Plugins - Pro/Mobile-Only Feature, thanks to ForceMagic for the note):

  1. Define your extern method like:

    [DllImport ("__Internal")] private static extern float FooPluginFunction();

  2. Hit build in Unity iPhone

  3. Add your native implementation to the generated XCode project's "Classes" folder (this folder is not overwritten when project is updated, but don't forget to backup your native code).

If you are using C++ (.cpp) or Objective-C (.mm) to implement the plugin you have to make sure the functions are declared with C linkage to avoid name mangling issues.

extern "C" {
  float FooPluginFunction();
} 

Using your plugin from C#

iPhone native plugins can be called only when deployed on the actual device, so it is recommended to wrap all native code methods with an additional C# code layer. This code could check Application.platform and call native methods only when running on the actual device and return mockup values when running in the Editor. Check the Bonjour browser sample application.

Calling C# / JavaScript back from native code Unity iPhone supports limited native->managed callback functionality via UnitySendMessage:

UnitySendMessage("GameObjectName1", "MethodName1", "Message to send");

This function has three parameters : game object name, game object script method to call, message to pass to the called method. Limitations to know:

only script methods that correspond to the following signature can be called from native code :

function MethodName(message:string)

calls to UnitySendMessage are asynchronous and have a one frame delay.