To develop iOS apps with Liferay Screens, you must first install and configure Screens in your iOS project. Screens is released as a standard CocoaPods dependency. You must therefore install Screens via CocoaPods. After completing the installation, you must configure your iOS project to communicate with your portal instance. This tutorial walks you through these processes. You’ll be up and running in no time!
First, you’ll review the requirements for Liferay Screens.
Requirements
Liferay Screens for iOS includes the Component Library (the Screenlets) and some sample projects written in Swift. Screens is developed using Swift and development techniques that leverage functional Swift code and the Model View Presenter architecture. You can use Swift or Objective-C with Screens, and you can run Screens apps on iOS 9 and above.
Liferay Screens for iOS requires the following software:
- Xcode 9 or newer
- iOS 11 SDK
- CocoaPods 1 or newer
- Liferay Portal 6.2 CE/EE, 7.0 CE, Liferay DXP
- Liferay Screens Compatibility Plugin (CE or EE, depending on your portal edition). This app is preinstalled in Liferay 7.0 CE and Liferay DXP instances.
Securing JSON Web Services
Each Screenlet in Liferay Screens calls one or more of Liferay Portal’s JSON web services, which are enabled by default. The Screenlet reference documentation lists the web services that each Screenlet calls. To use a Screenlet, its web services must be enabled in the portal. It’s possible, however, to disable the web services needed by Screenlets you’re not using. For instructions on this, see the tutorial Portal Configuration of JSON Web Services.
Configuring Your Project with CocoaPods
To use CocoaPods to prepare your iOS 9.0 (or above) project for Liferay Screens, follow these steps:
-
In your project’s root folder, add the following code to the file named
Podfile
, or create this file if it doesn’t exist. Be sure to replaceYour Target
with your target’s name:source 'https://github.com/CocoaPods/Specs.git' platform :ios, '9.0' use_frameworks! target "Your Target" do pod 'LiferayScreens' end # the rest of your podfile
Note that Liferay Screens and some of its dependencies aren’t compatible with Swift 3.2. If your iOS project is compiled in Swift 3.2, then your
Podfile
must specify Screens and those dependencies for compilation in Swift 4. Thepost_install
code in the followingPodfile
does this. You must therefore use thisPodfile
if you want to use Screens in a Swift 3.2 app:source 'https://github.com/CocoaPods/Specs.git' platform :ios, '9.0' use_frameworks! target "Your Target" do pod 'LiferayScreens' end post_install do |installer| incompatiblePods = [ 'Cosmos', 'CryptoSwift', 'KeychainAccess', 'Liferay-iOS-SDK', 'Liferay-OAuth', 'LiferayScreens', 'Kingfisher' ] installer.pods_project.targets.each do |target| if incompatiblePods.include? target.name target.build_configurations.each do |config| config.build_settings['SWIFT_VERSION'] = '4.0' end end target.build_configurations.each do |config| config.build_settings['CONFIGURATION_BUILD_DIR'] = '$PODS_CONFIGURATION_BUILD_DIR' end end end # the rest of your podfile
-
On the terminal, navigate to your project’s root folder and run this command:
pod repo update
This ensures you have the latest version of the CocoaPods repository on your machine. Note that this command can take a while to run.
-
Still in your project’s root folder in the terminal, run this command:
pod install
Once this completes, quit Xcode and reopen your project by using the
*.xcworkspace
file in your project’s root folder. From now on, you must use this file to open your project.
Great! To configure your project’s communication with Liferay Portal, you can skip the next section and follow the instructions in the final section.
Configuring Communication with Liferay
Configuring communication between Screenlets and Liferay Portal is easy. Liferay
Screens uses a property list (.plist
) file to access your portal instance. It
must include the server’s URL, the portal’s company ID, and the site’s group ID.
Create a liferay-server-context.plist
file and specify values required for
communicating with your portal instance. As an example, refer to
liferay-server-context-sample.plist
.
Figure 1: Here's a property list file, called `liferay-context.plist`.
The values you need to specify in your liferay-server-context.plist
are:
server
: Your portal instance’s URL.version
: Your portal instance’s version. Supported values are70
for Liferay 7.0, and62
for Liferay 6.2.companyId
: Your portal instance’s identifier. You can find this value in the Instance ID column of Control Panel → Portal Instances.groupId
: The ID of the default site you want Screens to communicate with. You can find this value in the Site ID field of the site’s Site Administration → Configuration → Site Settings menu.connectorFactoryClassName
: Your Connector’s factory class name. This is optional. If you don’t include it, theversion
value is used to determine which factory is the most suitable for that version of Liferay Portal.
Great! Your iOS project is ready for Liferay Screens.