We have a functionality that we would like to be available outside of the app and are wondering of there is a way to launch a small control that lives when the app isn't on, and can be "overlayed" onto any other app.
The control is just a way to help people with disabilities navigate the phone easier using new gestures.
Maybe something with a settings bundle?
What I think you want to look into is creating Cydia Substrate (formerly known as Mobile Substrate) tweaks.
Substrate tweaks allow you to inject code into other iOS processes, including the SpringBoard itself, Preferences.app, or any other app or framework.
In addition, you should checkout Ryan Petrich's libactivator, which allows you to build extensions that listen for different user actions or gestures, and let you respond to them.
This advice assumes you are deploying to jailbroken devices, as your question tag suggests. Without jailbreaking, you won't be able to do much useful in this area.
References
http://iphonedevwiki.net/index.php/Libactivator
http://iphonedevwiki.net/index.php/MobileSubstrate
Related
I've created an app in Rails which can be put on the homescreen of an iPhone. With some javascript hacking, I can make sure all internal requests stay within that frame. While this works, there are also some drawbacks. With the rise of PWA, I was wondering whether that would be a good alternative, so my questions:
Isn't PWA overkill if my only requirement is that the app is instalable?
Do I need to install all the service workers to get the PWA installable?
Is there some alternative I might have overlooked?
To answer your questions:
From google's PWA site:
Progressive Web Apps are user experiences that have the reach of the web, and are:
Reliable - Load instantly and never show the downasaur, even in uncertain network conditions.
Fast - Respond quickly to user interactions with silky smooth animations and no janky scrolling.
Engaging - Feel like a natural app on the device, with an immersive user experience.
This new level of quality allows Progressive Web Apps to earn a place on the user's home screen.
So my answer for your first question is, no. It's not overkill, it's exactly for that (and more, but you don't have to implement all the available features).
If you want the user to feel like the user is on a native app, yes you have to. There are a lot of basic service workers and builder to use that enable basic caching already.
Here is a checklist from google on what you need to have a "proper" PWA.
Microsoft suggests this site to get you started for basic modern websites.
Except for using something like Cordova, I don't see any alternative for PWA's that suite your use case, the only alternative I see is leave it as it is, if you don't need a PWA. The hype is currently high and you should definitley check it out. But as always, you don't have to if your product works as it should.
We have a requirement to build apps within an app, like how we have a main app called, Google and when we click the app icon, we get options like gmail, chrome ...and those apps function independently..How to organise these apps within the main app.
Could anyone give some basic idea on how to build micro-apps for iOS.
From my point of view, there is no such thing as a "micro app". What you seem to want to achieve is put various functions in one single app, what is not a good idea.
Thinking about your example with Google, they arent doing what you are mentioning. If the functionality is big enough, they put it in a seperate app (gmail, maps, ...). Same goes for you.
If you really want to go that way tho, i would highly suggest to make seperate storyboards for every "micro app" to keep things easier to maintain.
I hope this is not a duplicate, but I couldn't find what I'm interested in.
I'm trying to build some automated tests that will use an iPhone. The best tool I can find for this seems to be UI Automation, but from what I can tell so far, I need to run it against a specific app. My tests need to be more general. For example, I want to be able to answer an incoming call in the default dialer.
I would like to be able to automate the iPhone itself, not a specific app. My tests might involve switching between apps or making calls. The main features I need are to be able to take a screenshot and touch certain coordinates on the screen, regardless of what is on the screen and running at the time.
Can anyone suggest the proper way to set this up? I'd like to use the supported UI Automation tools, but would like to use them in a more general way.
Thanks
Is there a framework that will allow to create web apps for iOS that will run as smoothly as native app?
I've checked demos of Sencha Touch http://www.sencha.com/products/touch on my iPad there's visible delay for touch events and for how precisely they are recognized. The feeling isn't the same as for native apps.
Is there other frameworks or technics that will allow to provide same experience as native apps?
It depends on your app. If your app is a hard-core heavy-duty 3D game, then no. If your app is primarily displaying static content ... like a web page or collection of photos, you might get close enough.
Think about what experience you want to achieve first. If you want a cross platform application and you want to avoid the stores (App Store, Google Play, BB App World), then by all means, consider a web app.
Other things to consider, how much data do you estimate the user will need store locally (HTML apps are more limited in this respect); how much functionality is lost when there is no network connection, and does this loss of functionality make the app unusable.
Like the answer by #RichardTurner, if you need the kind of performance you find in the higher end games (Infinity Blade or Modern Combat 3), then native is the way to go.
Figure what you want, then you will have better idea of what technology to use.
NO. Native apps will perform better every single time over web apps. If you want a smooth experience, go native. Also consider that some people have older model iOS devices and performance will be even more difficult to achieve on those devices in web apps.
Here are a few things to consider with a Sencha app vs a native application.
You were browsing a Sencha Touch application online and chances are it wasn't a "packaged" version so you would have to download each source file individually.
With Sencha, you can utilize Sencha CMD to package an application which essentially builds a single minified js file containing only the required components from the Sencha library and your application (smaller DOM). You can also look into a production version which takes advantage of appcache. You'll see some performance increases here.
A packaged native Touch application will contain the actual JS, CSS, etc. files as part of the applications source, so their is no downloading from external resources.
You have to consider that any HTML5 application is going to have a ~300ms touch delay, more on that here: http://updates.html5rocks.com/2013/12/300ms-tap-delay-gone-away
I am a developer working on a robotics application for iOS. I do not intend to submit this app to the app store, nor do I have any wish for suggested methods to be apple approved....
I am trying to get bluetooth working, and I think a good place to start is to try modifying the existing apple frameworks. Is it possible for me to modify the frameworks so that when they are built to my iOS device the frameworks will be modified for the app (but not other apps on the same device)?
As a matter of fact, you can!
Objective-C allows you to "swizzle" methods to override their default behavior, and yet still call the original implementation if you want to. You can do this for any number of Objective-C methods, as many times as you want.
If you wish to override behavior that is present in C functions, you will need a little bit more control over the platform. Jailbreaking allows you to use the full power of Jay Freeman's CydiaSubstrate to hook or swizzle both Objective-C methods and C/C++ functions.
While I don't recommend the use of MethodSwizzle per se, the following URL has a good discussion of swizzling http://cocoadev.com/wiki/MethodSwizzling.
But you should really use CydiaSubstrate's MSHookMessageEx and MSHookFunction instead. Especially since you're not submitting anything to the App Store.
Now regarding Bluetooth, I've done extensive work in this field (I developed Celeste, which is a systemwide tweak providing vanilla Bluetooth OBEX support to system apps on iOS). I suggest you look into using something like BTstack, which provides you with access to the bluetooth module from the HCI to RFCOMM levels, and supports things such as SDP and pairing, which you will probably need. It also has the added benefit of not requiring method swizzling, which some people seem to think is some sort of satanic ritual that should be avoided at all costs.
Aside from categories (which extend the functionality of base classes delivered in those frameworks), I don't believe you can "modify" the existing Apple frameworks per se. A better course of action might be to simply create your own framework (or find somebody else's open source, commercial or simply third party framework) and then build that framework into the app that you install onto the iOS devices you want to work with.