Security of app using Parse servers - ios

I am using Parse servers for my app, and I am concerned about people getting into the code of the app and changing the code that communicates directly with Parse.
For example, if I save a score to the database and I want to update it with a new score by the user, I have to write that code within the app. However, if someone were to change the code and hardcode in a score that wasn't earned, they technically could.
Is there a way to prevent this?
(When I say getting into the code, there is a way to do this using a jailbroken device. I don't know if Apple has fixed this, but about a year ago someone I know showed me the code to an app that is on the App Store.)

Related

Force removal/invalidation of iOS app from user devices

Assuming you created an app that users have downloaded that is just awful and you neither want to fix it nor have anyone continue to use it so that it won't tarnish your brand, is there a way to end its life on user's iOS devices?
Curious if there is some store setting to force it to work with earlier versions of iOS and invalidates the current app, or code that would force an update that says the app is no longer available.
As many have confirmed, there is no way to remove an application from someone's device. For these cases though, many companies have servers that the application sends a request to on launch, that returns either a need to update the app, a message, or to tell the user the app has been discontinued and that the app cannot be used anymore, stopping them from using the app from there on.
The last use case might be useful to you, but of course this is a proactive solution, not a reactive one.

Will my app update automatically or will user need to update the app when the code is updated?

I am creating a weather app and want to give local warnings to people through an app. I want to be able to give up to date warnings, but I am wondering: does updating information in Xcode get automatically pushed to the devices or will it need an update every time I put new information in?
If I understand your question correctly - you have an app, which warns people about some unexpected weather conditions?
You basically have two options:
Do a code push to your app every time you do a change. This is not supported by default in Swift and Xcode, and can only be done via some third-party integration or framework (e.g. React Native), and is generally a hard thing to implement.
Setup a back-end server and link it with your app, so the new information is downloaded from this back-end server dynamically.
The only suitable and easy thing to do for your use case seems to be option 2.

CloudKit storing and restoring data when testing, app is now released and users are losing their data

I am using Swift. I can show my code if need be but there is a lot and it may be confusing and unnecessary (if you want to see if please let me know).
So my game needs to save things like high scores and purchases. When I am testing my app with Xcode, high scores get saved and I can delete the app, reinstall, and it pulls from CloudKit successfully. I submitted the application to Apple and they too found that the CloudKit purchase tracking system was working and let it go through to the app store. I told a few friends about my app and wanted them to test it a bit. For some reason though whenever they delete and reinstall the app all their data is lost! It is not performing the same way it does for me on Xcode (or for Apple for that matter).
The really annoying thing is that it takes 3-5 days for any updates I write to make it to the update and I can't even identify the problem yet because here on Xcode it works perfectly.
Does anyone know where the problem might lie? Where I might look in my code or places I could check?
Thanks!
Edit 1: Also a kind of follow up: A friend of mine is abroad and is always on airplane mode. When I check the CKContainerID on airplane mode when testing it finds the user perfectly. For him, however, it thinks that no user is signed in.
Why is all this different in production??
Edit 2: I'm finding some things regarding production cloudkit and development cloudkit? I am totally unfamiliar with this. Secondly I haven't messed around with the CloudKit Dashboard. My code basically tries to pull from the user's CloudKit and if it can't find those records then it will use the saveRecord function to create it.
Edit 3: Have just looked at this tutorial: https://developer.apple.com/library/content/documentation/DataManagement/Conceptual/CloudKitQuickStart/DeployingYourCloudKitApp/DeployingYourCloudKitApp.html#//apple_ref/doc/uid/TP40014987-CH10 and when I have followed those steps to deploy schema I see that the "changes to record types" lists every record I have. Does this mean that there currently are no records for production meaning no one can save anything? Do I just need to follow all these steps to deploy to development and I'm okay? I'm not too sure what this does so I am hesitant to do so.
Figured it out! Refer to my 3rd edit. Basically my data holders were all in the development cloud thus when users tried to save/pull their data there wasn't anything in the production cloud for them to save to/pull from. By following that little Apple tutorial and essentially pushing my schema from development to production my users were able to store their data about 10 minutes afterwords!

iOS app trouble storing user's documents/photos anywhere other than the phone

I'm trying to find a way of letting a user store their photos/documents online for my app. They can upload these to the app after registering an email and they remain on the phone even when the user logs out and then in again. However if the user deletes the app, downloads it again (the developers are using TestFlight at the moment), and logs in, any photo or document that the user saved before deleting has vanished.
I've been told that the data hasn't been stored on the Kinvey SDK service that we have been using as it takes a while to upload the data and then was told the app would be better suited on Kinvey REST API as the SDK version doesn't support background mode which supposedly would help store the data quicker (but this still wouldn't be 100% sure the photos/documents would be stored)
I'm not a developer/coder so I'm afraid I don't know much technically but my app needs to be able to have access across devices for the user's photos and documents, if these are 'lost' it would be catastrophic.
Please could someone help me if there a way of doing this?
Thank you.
Well If you want to save pictures or data that do not get deleted here are few options.
Save them iPhone,iPad gallery if not the use REST API
"Kinvey" can be used for that.
The alternative of "Kinvey", Kindly look into this.
https://www.raywenderlich.com/126098/top-5-parse-alternatives.
and may be you can try this. It provides chat feature too.
http://quickblox.com/

iBeacon notification database

I have a question which I have not been able to figure out so I decided to see if I can get some help on here.
I am working on an iBeacons project and I have been able to understand the basic function of iBeacons, setting up UUID'S and major and minor id's to specify exact notifications, but my question is how do I dynamically update information I send out to the users without having to go into the code each time to do this. Do I need to create a database to store all my information I want to push out to users? if so how will this database constantly refresh messages pushed out to users? An example would be lets say if you walk into a store and you get a notification in the shoe section saying there is a 10 percent off, you look at the notification but not too impressed and start to walk out, then you get another notification saying for today only you can get a 25 percent off... The app has to dynamically refresh for this to be possible.
Please help me clarify this
Thank you very much for the help
What you probably want is to store this deal information in a web service so you can update it without changing the app. Your app would need to download the updated deal information from the web service either when it starts up or when it sees an iBeacon.
My company, Radius Networks, offers a tool called Proximity Kit that makes this easy. You can assign arbitrary key/value pairs to iBeacons using a web interface. Then your app downloads them automatically an has access to them whenever you see iBeacons.
In your scenario, they key/values could be something like:
primary_offer_text=10% off all shoes
secondary_offer_text=20% off all shoes

Resources