How to reduce my iOS app's bundle size? - ios

I am working on an iOS app that integrates with multiple bluetooth devices (e.g. printers and barcode scanners). Each of the devices comes with it's own version of SDK and most of them just have objective-c/swift SDKs but not javascript SDKs.
Would like to find out what is the best way to reduce the app bundle size at the same time supporting multiple devices ?
Based on my investigations,
iOS doesn't allow downloading objective-c/swift code dynamically during runtime, hence the option of downloading the SDKs after the user having installed the app is ruled out.
Would like to get a feedback on the feasibility of the below solution. Also let me know if there is a better solution.
iOS version 8+ support embedded frameworks - Have separate iOS driver
apps for each of the supported devices which just installs the device
SDK as a shared embedded framework so that the parent app can
dynamically link to the shared embedded framework if one that matches
the connected device is available, otherwise force the user to
download the respective driver app.

This question has gone unanswered for a little while, so you may have already figured this out, but no, you cannot make shared embedded frameworks on iOS. Only Apple can do that. All of the frameworks you use must be either provided by Apple or embedded inside your app.

Related

Retrieve XCode Project from iOS app?

If I have an app I developed installed on my device, can I retrieve the original code?
I seem to have misplaced the XCode project between my different computers and hard drives for an old app I made. However, I still have the app installed on my iPad. I really need some of the code from this app. Can I possibly plug my iPad into my mac and retrieve some of the code from my iPad? (I know some stats are visible in iTunes. Can I view the app info there?)
A compiled app doesn't contain any of the app's Swift or Objective-C source code.

Implications for developing iOS app on real device only?

I would like to use some lib file (.a) in my app.
I got the files from a 3rd party, to use an IP camera they developed.
As i understand there is no way to open this files, so i will use them as is.
The problem is the files requires real device architecture, so i can't run (or build) them
on the iOS Simulator.
What will be the Implications for developing iOS app on real device only ?
(Besides a slower build and run time and discomfort..)
Also, is there a way to change this requirement so it could run on the simulator ?
Thank you
You should write your own mock library, that exposes the exact same API the vendor provides, and test against that in your simulator. The functionality your mock library provides can be as boring or as exciting as you desire.

Using twilio sdk for an iOS app?

I am planing to develop an VoIP iOS app and use Twilios SDK. I am making the choice to either use LiveCode, Appery.io, PhoneGap or build a native Objective C app. I am going to build the app for iOS, Android and HTML5 so the ideal would be to develope in JavaScript for all platforms, but as I understand the support for WebRTC is laking on the iPhone so the alternative for iOS is the native twilio SDK.
My requirements is:
be possilbe to use in iPhone 5 with iOS 7 be able to use twilio iOS
SDK´s voip functionality or twilio´s js SDK (if it is possible to
wrap a browser that supports RTC in the code?) be able to integrate
billing such as in-app payment or paypal with zooz or similar
communicate with REST API´s such as Amazon S3 or a node.js server
store temporary info in a SQLLite db when app is off line make fast
and responsive views (file listings etc) is very important
create cfuuid´s
I have seen several Twilio projects that use PhoneGap but none that are using LiveCode.
I have already built an iOS VoIP app in Objective C, but I want to be able to release it on several platforms also such as for Android and build a HTML5 app, without redoing everything.
This isn't really a programming question and should perhaps not be asked here.
You can create an external for LiveCode and quickly create an interface using the LiveCode IDE. This is probably a quick and easy way to make a working app. If you're starting with LiveCode but are experienced in Objective-C, creating an external won't be a problem for you.
LiveCode doesn't contain native iOS controls, which means that you have to emulate the GUI. If you use PhoneGap, you also will need to compile a plugin for PhoneGap using Objective-C, but you can use a framework, such as JQuery, to get the right GUI.
Either way, you will have to compile the SDK and you'll need to be quite profound in Objective-C.
LiveCode will meet all your requirements. However, Apple will deny your app if you use PayPal for in-app purchases. You'll have to use Apple's in-app purchasing feature. I believe this is possible in LiveCode now. I'm not sure how easy it is.
I'm not sure about file listings either. On iOS, you won't have complete access to all files on the phone. This isn't a LiveCode limation but a limitation of the OS.

i have already developed an app in java how do i open it in xcode simulator

My team has developed a big social networking app. Now i want to publish it to app store. But the app is not written in Objective C. What is the way to get it published in app store? Or least how can i open in in Xcode simulator for testing and enhancement?
My guess is that you created an app in android and now want to port it to iOS. Unfortunately Xcode isn't able to transform Java to Objective-C and iOS cannot run Java apps, so you will not be able yo submit your app as-is to the App Store.
You will have to do it the hard way and rewrite the entire app in Objective-C. Luckily Google recently launched a translator that might help with part of the work: http://google-opensource.blogspot.com.br/2012/09/j2objc-java-to-ios-objective-c.html
You cannot. Sorry.
I recently worked on an app for iOS and Android launch and we settled for parallel development.
Your Java code is incompatible with iOS and Xcode has no process to convert it to Obj-c.
The only options for cross-platform development that I am aware of are:
1) Heavy use of c/c++ based libraries; these can be utilised in both Android applications and iOS applications (this is what we used). But the entire front end of the apps must be re-implemented.
2) A cross-platform framework such as PhoneGap or Appcelerator, but this would require significant redevelopment from your current code-base.
3) A 'translator' such as the one Breno Gazzola suggested (another option is XMLVM) but these only do some of the work for you, and they're far from perfect.
It's very hard to judge without knowing your code, but if I were you I'd look at combining options 1 and 3 as much as possible, but budget for a complete re-write.

Scanning and switching Wifi networks on iOS 4.0 and above

I am trying to find whether the private APIs listed at: http://code.google.com/p/iphone-wireless/wiki/Apple80211Functions still work with iOS 4.0 and above. I am trying to turn the wifi ON, scan the networks available and latch on to one of the networks. I am not going to put the application in appStore and it is just an experiment. I found many applications pulled down from the appStore but they seem to have been developed on iOS versions less than 3.0. I would also like to get an example if possible.
Please Help.
I needed the same thing as you, and after some research I must say that starting from iOS 5 it is possible to scan the network list using private API on a jailbroken device only. This blog post states the following:
Last year Apple has blocked wifi scanners from App Store, however till iOS5 it was still available for private usage via WiFiManager bundle.
In iOS5, WifiManager bundle no more exists however 80211 functions are still available via IPConfiguration bundle.
The API you linked provides an open-source tool Stumbler which seems like something you were seeking. The tool is claimed to work under iOS 5.
Tried stumbler for iOS5 via linking to framework
/System/Library/SystemConfiguration/IPConfiguration.bundle/IPConfiguration
I could link to Apple80211Open, Apple80211BindToInterface, Apple80211Scan. However, I only receive empty WiFi scan results on jailbroken iPhone4S / iOS 5.1.1
The folks from WifiFofum did a good job and have a app on cydia which runs on JB iOS 5.1.1 and does an excellent job for scanning WiFi networks (BSSID, link level, SSID, channels, ...).

Resources