iOS first time user tutorial - ios

I'm building an iPhone app and want to create a 1st time use tutorial for the user. I've seen some other apps use popover style baloons to guide the user through the UI and I'd like to do that as well. I have a popover library. What's the best way to create and track the steps of the tutorial?

I would go with NSUserDefaults. Just trigger some BOOL-ean values to change as each part finishes. I assume you want to continue the tutorial if the user quits the app, so this would be your best and easiest bet.

BOOLs for each dialog? Persisted however you want - NSUserDefaults or plist, json file, xml, whatever.

You can also use NSUbiquitousKeyValueStore if you want to setting to sync across devices using iCloud. If the user doesn't have iCloud configured it will just store it locally.

Related

iOS - How to pass string from main app to widget without using app group

As title, have any idea let widget get main app data?
As I know using App group to save & load the same suite userdefault.
Does have another way to achieve this feature?
Thanks.
AFAIK as you just mentioned the App groups is the way to go when sharing content between your main App and your widget.
Apple is really restrict about user data safety, and don't think there is there any other way to share content without using the app group as we can see on their documentation available here (Sharing Data with Your Containing App)
Something that would try is using a local notification I think this might work to trigger a local notification to your extension and handle the string on the other side :)
More details available here

How to store my app each interaction in database in IOS?

I want to push my app each activity into server.
If any button is pressed, it should be save as user pressed that
button.
If any alert came also, it should save the activity.
When any error came inside the app, we should be able to save.
This question is raised because, if user struck on any activity I want to track how the user is using the app step by step.
Can any one please help me to reach the need.
Sounds like you want something like Flurry? They are now owned by Yahoo but you can probably find some competitors that provide what you need. Or, use Yahoo's stuff.
You can use some open source library. XCGLogger is your friend.
Allows you to log details to the console (and optionally a file), just like you would have with NSLog or println, but with additional information, such as the date, function name, filename and line number.
You can use Google Analytics it is free and easy to implement.
Here is iOS document: Document & Guides

Parse: One app on parse.com will be accessed by multiple iOS apps. Does it work?

we are about to finish our first app with parse.com. This first app is for the enduser. PushNotifications and everything are working fine.
Now we want to create an app for our admins to manage everything. We want it to be a separate app. Therefore I was wondering: will this be possible? Two apps connecting to one data collection on parse.
Especially regarding the PushNotifications. Admins should also receive a push notification on the new admin app (e.g. new member joins and needs to be activated).
Has anyone ever done something like this?
Or do we need to build the admin part into the main app?
The thing is we will need a third app, which is for business owners to manage their listing on our main app. So the same problem/question will apply then.
Looking forward to your feedback.
Txs!
Yes same Parse app ID can be used by different platforms/apps, that is basic concept of Parse. You can even use it in web, iOS, Android, etc with same parse app. This should not be a problem.
You might need to modify you parse data structure tough to suit your admin app requirement.
Check https://parse.com/docs/ios/guide#roles

Saving app settings - iOS

I have an iOS app which loads certain features depending on the settings that the user sets. Currently I am using NSUseDefaults to save and retrieve these settings and it works fine. But from what I understand anyone can view and edit them with a simple XML editor. You don't even need to jailbreak an iOS device to gain access to them. So they arn't very secure.
I was wandering if anyone could give me some advice on how I can go about saving app settings (these are NONE secure settings, no passwords, just simple things like ints and strings).
Here are a few ideas I had:
IDEA 1 Add a JSON file to the app NSBundle and then edit/save that JSON file every time you want to load/change the app settings.
IDEA 2 Use Keychain - it can store strings right? And it can't be accessed or edited by anyone. (hopefully even the NSA... lol). I could just store an array of strings in keychain for my app settings.
IDEA 3 Store the settings on a server and get the app to pull them down for the user every time they use the app.
IDEA 4 If NSUserDefaults supports this, then maybe locking the NSUserDefaults so that the end user can only view them but not edit them. Only the app will be able to edit them.
The main point is that I am worried that if I use NSUSerDefaults, the user may see them and edit them and then the app will not function properly. While I am not storing any kind of secure data, it would be nice if I can prevent the user from editing the app settings.
Are any of these approaches any good?
Thanks for your time, Dan.
All of them are good ideas, but just one issue with the first one:
You can not write or change files in the main bundle.
As long a the sure did not jailbreak their device the NSUserDefault can not easily be changed.
The keychain should only be used for password, token, etc..
In you case the NSUserDefault will do just fine, or just save the some file the documents directory of your is also an option. You can even create you now settings class that conforms the to NSCoding protocol and you can save it.

How to set "report inappropriate content" with cloudkit?

I'm learning iOS and am unsure what approach to take here so this isn't specific as I'd like. My app allows users to generate content. I'd like to allow them to flag content that's generated by others as inappropriate. If I'm using cloudkit, do I just create a flag button that sets YES if flagged and in the dashboard search for it? Is there a mechanism I should use in iOS that will notify me of this automatically? Any guidance is greatly appreciated.
You could indeed add a value that marks a record as inappropriate. You could create a second app (OS X or iOS) that connects to the same data container. In that second app you could create a subscription where the predicate is a filter for that value. You would then receive push notifications whenever something is set to inappropriate.

Resources