Can an app access sqlite table of another? - iPhone iOS - ios

I think it's a dumb question ; anyways, to clear any possible assumption, I will ask it : I have 2 iOS apps : one free version and another paid version. Say, the user is using the free version, which has some SQLite tables in the device. Now, the user installs the paid version of the App (not an in-App purchase, but a separate paid version) ; now, can this newly installed paid version access the sqlite data of the free app, which is already in the device?

Apps can not directly access the data of other apps. However, in a case like yours, you can write both apps to access a common UIPasteboard. Combined with each app having a custom URL scheme, there is a way to allow you write your free/paid apps so you can transfer the data between the two apps.
Here is an outline of the process:
App A (full verion) looks for custom URL scheme of App B (lite version).
If found show "transfer" button somewhere appropriate.
User taps button in App A
App A launches App B with URL that says "send me your data".
App A exits and App B is launched.
App B handles URL request.
App B packages up its data and puts in a named UIPasteboard (name hardcoded in to App A and App B).
App B launches App A with URL that says "you have data".
App B exist and App A is relaunched.
App A handles URL request.
App A gets data from pasteboard, removes it from pasteboard, installs data into self, and refreshes.
App A informs user transfer is complete.
The paid app should have a custom scheme of something like "myapppaid" and the free version should have a custom scheme of "myappfree".

With it just associated with the app, then no not directly as it only exists within the application sandbox which is available only to the application. If it's available via iCloud then you should be able to, as that's how a few apps have managed 'upgrades' when they've realised new standalone versions.

Related

iOS migration from Website to app

iOS. I have a mobile web site and a mobile app for the same. i want the user to be able to navigate from web to my app through a link. Is it possible for this feature to be feasible when the app is not installed. I know i can use smart app banners when the app is already installed and this feature can be implemented then. But the main problem i am facing is when the user is asked to install the app (from smart app banners) for a particular page of my website. How can i automatically redirect the user to same page on my app from where he clicked the app banner on first launch of app ?
This is a problem that Branch, the company I'm working for, solves. It's actually fairly simple to explain, but quite a bit more tricky to implement yourself.
Apple doesn't currently allow you to persist information like that through an install (through the App Store), so you'll need an intermediate server. Now, depending on what devices you want to support, this gets more and more tricky. You mentioned you're only on iOS now, but if you expand to Android, this becomes even more complicated (with the fragmentation of Android devices and browsers, etc). For now, I'll just explain for iOS though. It's basically a two step process, starting with the smart banner on your mobile web page.
The smart banner, when clicked, will try to
* Launch the app if possible. We do this by trying to load via the app's URI scheme.
* If the URI Scheme fails (not installed), we send a device fingerprint to our servers based on IP, model, etc. and then send the user to the app store.
The second part is then within the app:
* When it launches, it needs to ask the server if it was launched via a link click. (whether directly into the app or through the app store and now into the app).
* It sends along a similar fingerprint, and then the server (if the device matches) will send back the relevant info (the page id, or whatever you use).
* If the page id is present, you need to present the view controller with that content to the user (you may need to persist this info in your app through a login, if it's behind an auth wall).

Putting information into a newly installed app

I have to create an iOS app, which needs to know a referral code right after the installation. The code comes from an email or from a link in the browser. The goal is to make the app have the referral code no matter it is already installed on the user's device or it is being installed by the clicking of the link.
What I know already:
I have to register an URL scheme with my app, for example myapp://
I have to handle opening by this URL, recognizing the referrer code from it (myapp://refcode=123)
I have to have a web service, which detects (with JavaScript) if the user's device can handle my URL scheme or not (like this: https://stackoverflow.com/a/6599773/511878)
If the app is not installed, I can send the user to the App Store to download it, otherwise I can open the app by this URL and transfer the information into it
What I miss: How can I immediately call this URL after installation?
I was sure this is impossible to do until this morning, when I've found that Apple's TestFlight is doing exactly the same. I've got an email containing an invite to some app, clicked on the link, and because I did not have TestFlight installed on that device so far, it brought me to the App Store, where I clicked install. The device installed TestFlight app. After this I've clicked the Open button in the Store, which immediately showed the invite for me.
I think the solution can't be that it recognized me, and picket up the invite from the server based on my user account, because I might have multiple invites, so it had to know which exact one to show.
EDIT: Video of this happening: http://gk.lka.hu/x/tf.mov
So the question is: How can I transfer information into an app which is being installed after a link is clicked without reclicking the link?
I'm a developer at Branch and we recently built this system for others to use. If you want to build a similar system from scratch, here is an example of what you'll have to do:
The web service you described above must capture some information from the user, such as IP address, OS, OS version, screen size, etc., before redirecting to the App Store. It should associate this with the link that was clicked, or at least the refcode from the link (http://yoursite.com/redirect?refcode=123).
After your app is downloaded, the first time it opens, send up the same info (IP Address, OS, etc.) up to your server. If your server sees these params and that they're the same as what you grabbed in step 1, it should pass back refcode=123 to your app.
Your app should then handle the 123 refcode however you see fit (e.g. open to the appropriate view controller, apply the referral code, etc.).
Hopefully that helps. It's definitely harder than it sounds to build from scratch..

Detect app url download location after iOS app install

I have a requirement where i publish the iTunes app link to download the app in the website.
say i have 3 websites A, B, C
After the app is downloaded from the link, based on the website from where it has redirected i need to show custom message or image .
Say if the user click on download app on website A, then after the app is opened it should show "you have downloaded from website A"
No you can't, simply because the user downloads the app from the App Store and not from the website.
I do not have much experience with website development but I think you can set something on website where if you click on AppStore link it triggers an event to database and stores website name and whenever App is opened for the first time you call a web-service that interacts with your database and tells you the website name. But I do not think Apple will be happy seeing something like that in an App.

How can one app provide data to another without swiching apps?

Scenario:
I "control" two different apps, App A and App B, both which the user has installed
App A is running
App A needs to obtain a string that was set by App B when App B last ran.
After obtaining the string, App A will still be running
User should not receive any feedback this communication is happening. E.g. no "switching animations" between A or B, no pop-ups, etc.
Constraints:
Apps are released under different vendors
Apps are already in the app store; updated versions will have this communication ability.
It is acceptable for the data stored in App B to be accessible to other apps on the device.
It is not acceptable for the data stored in App B to be visible to general third parties (e.g. if an external server is used, there needs to be some sort of secured scheme)
The data read should be able to occur immediately upon App A being opened after install. For instance, I cannot require the user of App A to enter log in credentials for an external communication service.
Must work on non-jailbroken devices.
This is seeming rather difficult to pull off in iOS7. Help is appreciated.
Tricky work around. Not recommended, but it will get the job done if you can't afford servers.
On the first app create a contact in the user's contacts book. Give it a generic name like "000 - NameOfAppB Data - Don't Delete" (I start with "000" so it goes to the bottom of the users contact book so they never see it, I also add "don't delete" so if the user does somehow find it they don't delete it hahaha) (who looks at contact books anyways). In the contact info under notes add your NSData in string format.
Then when app A is opened search for that contact, read the data, then delete the contact.
Apple does allow you to create and delete users contacts without their permission. (At least in 2011 they did, this may have changed).
This might serve your purpose
https://developer.apple.com/library/ios/documentation/Security/Reference/keychainservices/Reference/reference.html
I am not sure of its limitations though, i have seen implementations where credentials have been shared between apps.

How a new version of blackberry application can be uploaded on blackberry app store?

Does blackberry provide versioning of app ?? Like in case of android/I-Phone whenever a new version uploaded, user will get notified to update the app.
is similar feature available in blackberry ??
also can you clearify how an app uniquely identified on RIM app store . for example android use a unique package name to avoid redundancy .
Yes. blackberry automatically takes versioning of the application as soon as we upload in app world. Also, the user will notify automatically. nothing to handle from client side. If you wish to provide the update feature on your app. you can always integrate by keeping the control on your web server which will redirect again to the app store.
Any, app that we upload in app world is given with content id which is unique for each app. something like this
https://appworld.blackberry.com/webstore/content/15282
Yes, AppWorld will notify the user when a new version is released. And I don't think there is any special requirement for unique identification.

Resources