Hello iOS Devs, Hope you guys doing well in this COVID-19 situation. Stay Safe At Home.
In this week Xcode 11.4 released. Many new things came with that. You can check What’s new in Xcode 11.4? blog for the same.
App icon change functionality is available from iOS 10.3. In this tutorial we will learn to set an alternate icon for an iOS application programmatically.
Firebase Authentication gives us backend services to authenticate users with your app. It provides SDKs and ready-made UI libraries. It supports authentication using passwords, and other providers like Google, Facebook and Twitter, Github, and more.
Xcode 8.3 beta 2 no longer supports Swift 2.3. Please migrate your projects containing Swift 2.3 code to Swift 3 syntax by opening the project and choosing Edit > Convert > To Current Swift Syntax.
Other Deprecations and Removal Notices
The Automation instrument has been removed from Instruments. Use Xcodeβs UI Testing in its place.
Organizer
The Xcode Organizer now supports exporting tvOS apps for Enterprise distribution.
Testing
Added the XCUISiriService class to XCTest for writing tests which activate Siri with a voice recognition string, and queries for elements in the Siri UI. Use the class to write UI tests for Intents and Intents UI extensions.
Swift Compiler
The Swift compiler can now automatically precompile Objective-C bridging headers, which can speed up Debug configuration builds (or other non-WMO builds) of mixed-source projects with large bridging headers. This feature is still experimental, and is disabled by default but can be enabled with the “Precompile Bridging Header” (SWIFT_PRECOMPILE_BRIDGING_HEADER) build configuration setting within Xcode.
Provisioning
Changed the user interface for managing signing certificates and provisioning profiles. Certificates are managed from the Accounts preferences pane by selecting a team and clicking Manage Certificates. Automatically managing signing is recommended, however if your app requires manually signing provisioning profiles are managed in the General tab of the project editor. Use the Provisioning Profile dropdown to import or download profiles. In addition it displays profiles that match the current signing configuration of the target.
Simulator
You can invoke Siri using Hardware > Siri after enabling Siri in the Settings app on Simulator.
Others
Xcode 8.3 includes Swift 3.1 which is intended to be source compatible with Swift 3.0.
Constrained extensions allow same-type constraints between generic parameters and concrete types. For example, the following code defines an extension on Array with Int elements:
Swift
1
extensionArraywhereElement==Int{}
The Swift compiler now raises an error for modifications of a let property or variable of protocol type after initialization. For example, the following code that compiled in previous versions will now raise an error:
Swift
1
2
3
4
5
6
7
8
9
10
11
protocolP{
mutatingfuncf()
}
extensionInt: P{
mutatingfuncf(){self+=1}
}
funcfoo(x:Int){
lety:P
y=x
y.f()
}
Code that successfully compiled in previous releases may fail after upgrading.
Interface Builder
NSTextField objects created in Interface Builder now have allowsCharacterPickerTouchBarItem turned off by default.
Currently latest beta version is Xcode 8.3 Beta 3. I will update this blog as per versions of Beta.
Happy Coding π
The new framework called “UserNotifications” is introduced with iOS 10 SDK. The UserNotifications framework (UserNotifications.framework) supports the delivery and handling of local and remote notifications.
So, Let see what we have to change to get the push notifications in iOS 10.
Many of the types are bridged to the Swift type like as (e.g., NSString being bridged to String).
Other Objective-C types are bridged to Swift are as follows :
CallKit The CallKit framework (CallKit.framework) lets VoIP apps integrate with the iPhone UI and give users a great experience. Use this framework to let users view and answer incoming VoIP calls on the lock screen and manage contacts from VoIP calls in the Phone appβs Favorites and Recents views.
Intents The Intents framework (Intents.framework) supports the handling of SiriKit interactions.
IntentsUI The Intents UI framework (IntentsUI.framework) supports the creation of an Intents UI extension, which is an optional app extension that displays custom content in the Siri or Maps interfaces.
Messages To develop an iMessage app, you use the APIs in the Messages framework (Messages.framework) and To create app extensions that interact with the Messages app, allowing users to send text, stickers, media files, and interactive messages.
Speech Using the APIs in the Speech framework (Speech.framework), you can perform speech transcription of both real-time and recorded audio.
UserNotifications User Notifications framework (UserNotifications.framework), which supports the delivery and handling of local and remote notifications.
UserNotificationsUI User Notifications UI framework (UserNotificationsUI.framework) lets you customize the appearance of local and remote notifications when they appear on the userβs device.
VideoSubscriberAccount Video Subscriber Account framework (VideoSubscriberAccount.framework) to help apps that support authenticated streaming or authenticated video on demand (also known as TV Everywhere) authenticate with their cable or satellite TV provider.
New version of SDK is 4.16.x(Swift) and Graph API Version is 2.8.
With the Graph API 2.6 Facebook has given support to fetch (read only) the Reactions on Timeline Posts.
We can get the Facebook post reactions via graph API : /{post-id}/reactions. We have to pass parameters like fields and summary as described in getReactions function. Note : Here I am writing sample for only first post.
I was just going through the Swift document and I found that Swift allow to overload the operator just like as C++ Language. Objective-C doesn’t allow to overload the operator.
As swift document we can also say “Operator Functions”.
Let’s Overload ^ (XOR Operator) to make Power of the value
Function Prototype :
Declare function prototype with left hand side value and right and side value.
Swift
1
2
func^(lhs:Int,rhs:Int)->Int{
}
Operations in the function :
To make the power of the value we have to apply following operations
Xcode 7.3 came with Swift 2.2 Version. I just updated to Xcode 7.3 and found following warnings because of Swift version change.
List of warnings with it’s solution:
‘var’ parameters are deprecated and will be removed in Swift 3
Warning with:
[code language=”obj-c”]
func functionTest(var param:String) {
print(param)
}
[/code]
Solution:
[code language=”obj-c”]
func functionTest(param:String) {
print(param)
}
[/code]
If you want to update that variable inside the function then you have to create copy of that variable to do operations on that.
Use of string literal for Objective-C selectors is deprecated; use ‘#selector’ instead
Warning with:
[code language=”obj-c”]
btn.addTarget(self, action: "functionName", forControlEvents: UIControlEvents.TouchUpInside)
[/code]
OR
[code language=”obj-c”]
btn.addTarget(self, action: Selector("functionName"), forControlEvents: UIControlEvents.TouchUpInside)
[/code]
Solution:
[code language=”obj-c”]
btn.addTarget(self, action: #selector(ViewController.functionName), forControlEvents: UIControlEvents.TouchUpInside)
[/code]
Apple Documentation : Added information about the #selector syntax for Objective-C selectors to the Selector Expression section.
‘++’ is deprecated: it will be removed in Swift 3
Warning with:
[code language=”obj-c”]
var i = 0
for str in arrStr {
print(str)
i++
}
[/code]
Solution:
[code language=”obj-c”]
var i = 0
for str in arrStr {
print(str)
i += 1
}
[/code]
Apple Documentation : Removed discussion of C-style for loops, the ++ prefix and postfix operators, and the — prefix and postfix operators.
C-style for statement is deprecated and will be removed in a future version of Swift
Warning with:
[code language=”obj-c”]
for var i=0; i<arrStr.count; i += 1 {
print(arrStr[i])
}
[/code]
Solution:
[code language=”obj-c”]
for i in 0 ..< arrStr.count {
print(arrStr[i])
}
[/code]
__FILE__ is deprecated and will be removed in Swift 3, please use #file