How to configure iPhone/iPad file associations with Xcode 4.3? - iphone

Can anyone provide a pointer to an updated tutorial/example of setting up custom file associations on iOS using Xcode 4.3?
I've seen the following (including Brad Larson's excellent answer), but the handling of Info.plist in Xcode 4.3 is significantly different than any description I've seen:
How do I associate file types with an iPhone application?
Importing/Exporting Documents on iOS
How to register an app to respond to a custom URL scheme opening request?
I tried reviewing Apple's documentation, but "Document Interaction Programming Topics for iOS" was updated in Nov-2010.
None of the examples I can find discuss configuring it in the way Xcode 4.3 handles them - which includes separate "Document Type", "Exported UTIs", "Imported UTIs", and "URL Types" sections under the target/Build Info and includes different key names (e.g. "Description" vs. "UTTypeDescription")
Any pointers are helpful, a working Xcode 4.3 example would be fantastic.

Based on suggestions by #samson but I wanted to capture this answer for future searchers.
Find the info.plist in the Project Navigator. Mine was under a "Supporting Files" group prepended by the application name (e.g. MyApp-Info.plist). Right-click and "Open As > Property List".
Then by entering the described sections as follows I was able to be passed a fileURL from Mail:
I should note a couple things for the record:
I did NOT put document icons for my file type, but it would be strongly encouraged to do so.
The property editor will try to auto-complete the names of properties, so it really gives you quite a bit more guidance than is apparent.

Related

Location of network settings class in android jellybean

I’m developing for android jelly bean and I would like to add a field to the network settings menu, but can’t seem to find it in the android source code….
I’ve looked in packages-apps-settings-src-android-settings but then didn’t know exactly where to look.
Can anyone help me please?
You should first have a look at the packages/apps/Settings/res/xml/setting_headers.xml file which list the different categories used in the Settings app.
Then, you can implement a new category by looking how others are implemented - for example the "Data usage" setting is implemented in src/com/android/settings/DataUsageSummary.java (the fragment is referenced from the setting_headers.xml file).

Create an App within an App

I am being presented with a very interesting project. The task that I must complete is to figure out a way to allow a partner to be involved in an app without giving up their source code. The code will be included in the main bundle of the app so it is not dynamically stored. The partner has a fully functional app that is needed to be ran in a window within the main app at the appropriate time. I know having the partners create a web app would be ideal so it is treated like a webpage but I am more concerned with codes that must be written natively in iOS.
My question is what is the best way to go about solving this? In theory it is like an App within an App. Is there a way if they gave up their .app file I can include this in the bundle and then run it when I catch a certain event? Should I have the partners create their code in a framework and then import into the shell project? What is the best way to approach this problem?
If your 2nd-party doesn't want to provide you with the source code, why doesn't he compile it to object code then let you simply link it to your app?
By the way, at least on official (non-jailbroken) iDevices, apps can't 'embed' or 'open' one another in such a way - you can open an app programmatically if 1. it's a separate app 2. it has a registered special URL associated to its bundle.
Is there a way if they gave up their .app file I can include this in
the bundle and then run it when I catch a certain event?
No, you'll want to have them create a library instead. You can then include that library in your project.
Creating a library is as simple as:
Choose File->New...->Project... in Xcode.
Select the "Cocoa Touch Static Library" project template.
Add your code.
Build.
The result is a static library that you can add to your application(s). The library will contain the compiled code that you added, but doesn't include the source code. The library developer should provide whatever header files are necessary to use the code in the library.
An App within an App is possible however it requires a common data framework that allows one app to reference the same data without confusing the the source of and destination of the data.
Such a framework allows one app to interact with another app referencing the same data.

How to use omnigroup framework in an iOS project?

I need to be able to write and read from a rtf file in iOS.
The omnigroup framework has the 2 classes i am looking for :
OmniUI/iPad/RTF/OUIRTFReader
OmniUI/iPad/RTF/OUIRTFWriter
I managed to build the frameworks but i cant figure out how to integrate theses classes in my own project.
I had the following frameworks to my project :
OmniAppKit.framework
OmniFoundation.framework
OmniBase.framework
I still get some undefined identifier such as :
RCS_ID("$Id$");
OBINITIALIZE
OMNI_POOL_START
Has anybody been able to use the omnigroup framework in your own project ?
Thanks,
Vincent
We do need some better documentation for this, but the TextEditor example app in OmniUI/iPad/Examples/TextEditor may be a good starting point for seeing how we include the frameworks in our apps.
In this particular case, you may prefer to pull out the OUIRTFReader class and any dependencies it needs from OmniAppKit and OmniFoundation into your project. updating the #imports to be "..." instead of <OmniThis/AndOmniThat.h>.
Perhaps you could try following the instructions given as part of this thread on the Omni Group forums. They appear to have been able to build the framework under the iOS 4.2 SDK.
I don't think you want the OmniAppKit framework, as that is just for the Mac.

How to share keychain data between iOS applications

I am describing a problem for which it took me quite some time to learn the answer.
The "GenericKeychain" example is a good start at providing a wrapper for sharing keychain data between applications when using the accessGroup in the init.
However, implementing this in my app yielded an obscure error code (which took forever to locate) -25243, which means: No access control.
I ran Apple's example app (GenericKeychain) on my iPad only to get the same error. Huh?
Does Apple's documentation fail to deliver on what is necessary to accomplish this?
After some (a lot of) digging throughout the web, I found the answer. The access Group that you use when constructing your KeychainItemWrapper class must ALSO be specified in each of your application's Entitlements.plist file in the "keychain-access-groups" section.
It seems almost obvious now that I see "keychain-access-groups". However, I had no idea to even look there. Hope this helps others.
Actually it's not hard to do. Please follow the steps.
App1:
Open your App's target Capabilities and enable KeyChain Sharing.
Add a identifier. (eg : com.example.sharedaccess)
Add "UICKeyChainStore" to your project.
Be sure you have a team id added to your App1 project.
Add Security.framework to your App1 project.
And add these codes to somewhere you need.
[UICKeyChainStore setString:#"someValue" forKey:#"someKey" service:#"someService"];
App2:
Open your App's target Capabilities and enable KeyChain Sharing.
Add a identifier. (eg : com.example.sharedaccess)
Add "UICKeyChainStore" to your project.
Be sure you have a team id added to your App2 project.
Add Security.framework to your App2 project.
And add these codes to somewhere you need.
NSString *string = [UICKeyChainStore stringForKey:#"someKey" service:#"someService"];
Your TeamIDs should be same for both projects.
I tried these steps on a real iPhone device.
I also tried these steps with Automatic and iOs Development provisioning profile.
My apps' bundle identifiers were like that : com.example.app1, com.example.app2.

Cant find Manage Object Class in xCode for iPhone

I am trying to generate classes for my .xcdatamodel entities, but am not given the Manage Object Class option when I click on an entity and select File>New File. I've looked under both the iPhone and Mac OS X catagories, but it is not listed anywhere.
Here are the steps I am taking,
I create a new project being sure to check the "Use Core Data" checkbox. Once the project is created, I open .xcdatamodel, create an entity, and add a few attributes. Next, I click on the entity and choose File>New File, but all I see are only Objective-C, Objective-c test case class, and UIVewController subclass.
Am I missing a step?
Thanks in advance
Take a look at the Core Data Tutorial for iPhone OS and look at this section: Custom Managed Object Subclass. If you still aren't seeing the Core Data related items for the iPhone OS check the version of the SDK you are targeting. I believe Core Data has only been available since SDK 3.
Had the same problem. Restarting x-code helped me.