Apple is the leader on the phone market not just because they produce high-quality smartphones, but also because they, unlike other companies, do pay attention to details. Iāll just tell you how to make an Apple-like application. All weāll need to do that is just a couple of lines with a code, nothing too complicated. You donāt have to use any external libraries, you can just do with whatever Apple has provided for you.
1. Taptic engine
Taptic engine is a new vibration by Apple, and this solution was initially integrated into iPhone S6. Itās a small engine that can produce different vibrations. The best thing about it is that Apple has allowed developers to work with it.
Use scenarios:
When you press a button. Your app will be way more appealing if it doesnāt only respond to a user doing something by changing the content on the screen, but if it also responds physically.
When you scroll the content. A lot of people own wristwatches. Do you enjoy the sound when you wind yours? So why not add it to your app? This mechanic allows you to help a user dive into content more, it becomes more interesting for him to scroll down the feed. Thus, we make the user stay in our app for a longer period of time.
When an error appears. You always have to put some effort into making sure your program doesnāt have errors. However, there are situations where the user is the one responsible. For instance, if they entered the wrong password. Of course, weāll show a pop-up notifying them of that, but we can also do that using our engine.
Taptic engine helps add the Apple magic we all know and love.
Realization:
let mediumGenerator = UIImpactFeedbackGenerator(style: .medium)
mediumGenerator.impactOccurred()
2. Spotlight indexing
Whatās your iOS device memory capacity? 128 GB, 256 GB, more? How many apps are on your smartphone? 50.100? Can you imagine the amount of data stored on your phone? In order for a user to not get lost in that large information stream, Apple has added Spotlight.
Spotlight is a mechanism that allows you to find data on the device thatās operated by macOS, iOS, or iPadOS. Unfortunately, Spotlight only helps to locate the app, but iOS 9 introduced the functionality of indexing the data within those apps.
Unfortunately, not all apps are indexed so letās be the first ones in order to be ahead of the competition!
Is your app a mail aggregator? Letās search in letters! There are dozens of different ways to use Spotlight. What we have to do is accentuate the main task of the app.
Realization:
import CoreSpotlight
import MobileCoreServices
Add an index now.
func indexItem(title: String, desc: String, identifier: String) {
let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeText as String)
attributeSet.title = title
attributeSet.contentDescription = desc
let item = CSSearchableItem(uniqueIdentifier: "\(identifier)", domainIdentifier: "com.uniqeCode", attributeSet: attributeSet)
CSSearchableIndex.default().indexSearchableItems([item]) { error in
if let error = error {
print("Indexing error: \(error.localizedDescription)")
} else {
print("Search item successfully indexed!")
}
}
}
Now, processing the app opening with a unique index.
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
if userActivity.activityType == CSSearchableItemActionType {
if let uniqueIdentifier = userActivity.userInfo?[CSSearchableItemActivityIdentifier] as? String {
//doSomethingCoolWith(uniqueIdentifier)
}
}
return true
}
3. Animation upon pressing
The animation that Apple provides is very simple.
I suggest that we improve it a bit. Why? Itās a lot more comfortable for a user when they change an itemās form by slightly touching it. It creates somewhat of a connection between an application and a user.
Realization:
extension UIView {
func addAnimate() {
let xScale : CGFloat = 1.025
let yScale : CGFloat = 1.05
UIView.animate(withDuration: 0.1, animations: {
let transformation = CGAffineTransform(scaleX: xScale, y: yScale)
self.transform = transformation
}) { (_) in
let transformation = CGAffineTransform(scaleX: 1, y: 1)
self.transform = transformation
}
}
}
Do not forget about point one from this article! A combo of animation and taptic engine is simply amazing.
4. Permission requests
No one likes to share their geolocation but we still have to, otherwise, the maps wonāt work.
Now, imagine: your app works with a camera, microphone, geolocation, contacts. So when do we ask permission from a user?
Bad decision:
Ask permission for everything at the first launch
- Quite fast
- The negative attitude from a user to such an app as they donāt understand why they need all this.
- The developer still has to check permissions before the actual module use.
Optimal decision:
Request permission before the actual use
- Userās trust isnāt undermined;
- The developer doesnāt do double work.
Advanced decision:
Onboarding that definitively describes where and what for will the phone be used.
- User understands exactly why he has requested permission;
- The program becomes more user friendly;
- Developing takes a lot of time;
- Developer does double work as they have to check permission before the actual module use anyway.
I think that the Optimal decision strategy is the best here.
5. Home Screen Quick Actions
There is a 3D Touch function in iPhone (Haptic Engine in the modern iterations). Roughly speaking, this technology allows to understand the power with which you press the screen. This can be integrated into an app. For example, upon pushing the element hard, an event occurs. This, however, didnāt get wide recognition. I believe itās because the user has to understand on their own whether a button has hidden functionality. Therefore, this function isnāt on the top of the priority list.
However, itās different when the Home screen is involved. All icons have the āhard pushā function. If the developer hasnāt done anything, the Home screen will provide the following functions:
- Change the Home screen;
- Share application;
- Delete application.
Starting with iOS 12, this functionality can be widened by adding actions that you want. As a rule of thumb, the main featuresā functionality is integrated there. For example, this is what Instagram offered:
- New post;
- Check actions;
- Direct. Pressing any of those will take you to the corresponding event.
You may find Apple documentation down below. Although it might seem that thereās lots of code, realization wonāt take too much time.
6. Dark Mode
iOS fans were waiting for a new dark theme for years. Developers didnāt,
Starting with iOS 13, the phone has two modes: light and dark. Change it in the settings, and all applications will change their interface. Roughly speaking, if a button is blue when the flight mode is active, it will go red once you switch to the dark mode.
I switch modes quite a lot on my iPhone. When I see that the app changed color on its own, Iām happy. You can see that developers tried harder and introduced a function. Itās a small but nice addition.
Letās see how this works taking our Russian Instagram as an example:
In my new project, I have decided to work with colors differently. Before, people used to create a separate file with app colors. I, however, have created a Color Set. Only the dark theme is supported by the app now, but if thereās an urgency to add a light theme, itāll take no more than 30 min. You just have to know what color is used when swapping to the light theme.
Now the color is always red regardless of the theme. But if thereās yellow instead of red in the light theme, I will just need to change the color here. You donāt have to do anything inside the code.
This solution has increased the developing time by 30 min. But if we decide to go with the dark theme, weāll save about 20 hours!
7. iOS Modal Sheets
There are two ways of accessing a new window in iOS ā when it appears on the right and at the bottom.
First option:
Second option:
Weāll be talking about option 2. Prior to iOS 13, it was working by opening a new window immediately on top of the previous one. Starting from iOS 13, it works differently by default.
We see on the gif that a window opens on top of the previous one but it doesnāt cover the entire screen. This is called Modal Sheets. Developers went on to fix in in Summerā19, by adding an attribute vc.modalPresentationStyle = .fullScreen. This trick allowed them to get back to the way apps opened as it showed on gif 2.
Now a new window would open full screen. It was a quick fix in order to avoid bugs. Why so? Because fullScreen has to add a close window button on its own and pushing it is easy to process. If you use Modal Sheets, you can just drag the window down, and iOS will close the window and remove it from the device memory. It can cause bugs, however ā uncontrollable behavior, for instance.
This way of closing windows can be controlled via delegate:
extension BaseViewController: UIAdaptivePresentationControllerDelegate {
func presentationControllerDidDismiss(_ presentationController: UIPresentationController) {
viewControllerWasDismissed?()
}
}
Logic has to be inserted here. For example, the same as the ācloseā button has.
Letās use Modal Sheets, avoid fullScreen if you can. Modal Sheets makes an app fresher, modern and the UX is similar to Apple applications.
8. System font size
Did you know that you can change the font size in iOS? This function is awesome for you if you have trouble seeing small objects. The size will change in all system applications.
Thatās not all! You can set your font size so that it depends on the one in the system. This improves your interaction with apps, especially if thereās a lot of text in there.
Youād ask whether itās easier to get a bigger size from the start? No, itās not. I, for example, donāt like huge letters. Letās think about all users, thus getting even more of them!
This is the technology description from the official documentation.
9. Password AutoFill and Strong Password
Why will I never move to Android? There are more than 300 accounts in my password list, and I think you too have quite a few of them. Thatās it, no more questions. Itās convenient.
Whoever doesnāt know what Iām talking about, Iāll explain. Your login and password are stored in a secure place. Why is it secure? Apple will answer.
You donāt need to write down your password on a piece of paper anymore (may my grandfather forgive me for this), nor you need to come up with passwords by yourself. Do you use the same password everywhere? Congratulations, you are at risk. This mechanism generates a strong password for you and automatically adds it to Keychain. The program will suggest a suitable password for authorization upon your next login.
In order for this to work, you need to add Associated Domains on the server and list it in Capabilities in the app.
Donāt forget to mention type at the filling field in an iOS app.
Conclusion
Weāve explained how we can make an application way more appealing using small features. Donāt forget about small things, so your application can be āhugeā!
Top comments (0)