Hello Word native iOS (Swift)
Switch branches/tags
release-87.87.0-rc1 release-13.18.0-rc1 release-10.18.0-rc2 release-10.18.0-rc1 release-9.18.0-rc1 release-8.18.0-rc1 release-4.7.0-rc5 release-4.7.0-rc4 release-4.7.0-rc3 release-4.7.0-rc2 release-4.7.0-rc1 release-4.6.5-rc4 release-4.6.5-rc3 release-4.6.5-rc2 release-4.6.5-rc1 release-4.6.2 release-4.6.2-rc1 release-4.6.0 release-4.6.0-rc5 release-4.6.0-rc4 release-4.6.0-rc3 release-4.6.0-rc2 release-4.6.0-rc1 release-4.6.0-er1 release-4.5.1 release-4.5.1-rc2 release-4.5.1-rc1 release-4.5.0 release-4.5.0-rc7 release-4.5.0-rc6 release-4.5.0-rc5 release-4.5.0-rc4 release-4.5.0-rc3 release-4.5.0-rc2 release-4.5.0-rc1 release-4.3.0-rc1 release-3.20.5-rc1 release-3.20.4 release-3.20.4-rc1 release-3.20.3 release-3.20.3-rc3 release-3.20.3-rc2 release-3.20.3-rc1 release-3.20.2 release-3.20.2-rc2 release-3.20.2-rc1 release-3.20.1 release-3.20.0 release-3.20.0-rc3 release-3.20.0-rc2 release-3.20.0-rc1 release-3.19.2 release-3.19.2-rc1 release-3.19.1 release-3.19.1-rc2 release-3.19.1-rc1 release-3.19.0 release-3.19.0-rc5 release-3.19.0-rc4 release-3.19.0-rc3 release-3.19.0-rc2 release-3.19.0-rc1 release-3.18.3 release-3.18.2 release-3.18.2-rc1 release-3.18.1 release-3.18.1-rc1 release-3.18.0 release-3.18.0-rc5 release-3.18.0-rc4 release-3.18.0-rc3 release-3.18.0-rc2 release-3.18.0-rc1 release-3.17.3 release-3.17.3-rc1 release-3.17.2 release-3.17.2-rc2 release-3.17.2-rc1 release-3.17.1 release-3.17.1-rc1 release-3.17.0 release-3.17.0-rc6 release-3.17.0-rc5 release-3.17.0-rc4 release-3.17.0-rc3 release-3.17.0-rc2 release-3.16.0-rc1 release-3.15.1-rc1 release-3.15.0-rc2 release-3.15.0-rc1 release-3.14.0-rc4 release-3.14.0-rc3 release-3.14.0-rc2 release-3.14.0-rc1 release-3.13.1-rc1 release-3.13.0 release-3.13.0-rc4 release-3.13.0-rc3 release-3.13.0-rc2 release-3.13.0-rc1
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
helloworld-ios-app.xcodeproj
helloworld-ios-app
helloworld-ios-appUITests
licenses
.gitignore
CONTRIBUTING.md
Jenkinsfile
LICENSE.txt
LaunchScreen.storyboard
Podfile
README.md
Storyboard.storyboard
circle.yml

README.md

helloworld-ios-swift

circle-ci

Obj-C version is available here.

Author: Corinne Krych, Daniel Passos
Level: Intermediate
Technologies: Swift 4, iOS, RHMAP, CocoaPods.
Summary: A demonstration of how to get started with remote cloud call in RHMAP.
Community Project: Feed Henry
Target Product: RHMAP
Product Versions: RHMAP 3.7.0+
Source: https://github.com/feedhenry-templates/helloworld-ios-swift
Prerequisites: fh-ios-swift-sdk: 6+, Xcode: 9+, iOS SDK: iOS 9+, CocoaPods 1.3.0+

What is it?

Simple native iOS app to test your remote cloud connection in RHMAP. Its server side companion app: HelloWorld Cloud App. This template app demos how to intialize a cloud call and make calls to cloud endpoints. The app uses fh-ios-swift-sdk.

If you do not have access to a RHMAP instance, you can sign up for a free instance at https://openshift.feedhenry.com/.

How do I run it?

RHMAP Studio

This application and its cloud services are available as a project template in RHMAP as part of the "Native iOS Hello World Project" template.

Local Clone (ideal for Open Source Development)

If you wish to contribute to this template, the following information may be helpful; otherwise, RHMAP and its build facilities are the preferred solution.

Build instructions

  1. Clone this project
  2. Populate iOS-Template-App/fhconfig.plist with your values as explained here.
  3. Run pod install
  4. Open Helloworld-app-iOS.xcworkspace
  5. Run the project

How does it work?

Init

In helloworld-ios-app/HomeViewController.swift the FH.init call is done:

override func viewDidLoad() {
    result.contentInset = UIEdgeInsetsMake(20.0, 20.0, 10.0, 10.0);
    super.viewDidLoad()

    // Initialized cloud connection
    FH.init {(resp: Response, error: NSError?) -> Void in
        if let error = error {
            print("FH init failed. Error = \(error)")
            self.result.text = "Please fill in fhconfig.plist file."
        }
        print("initialized OK")
        self.button.hidden = false
    }
}

Cloud call

In helloworld-ios-app/HomeViewController.swift the FH.init call is done:

@IBAction func cloudCall(_ sender: AnyObject) {
    name.endEditing(true)

    let args = ["hello": name.text ?? "world"]

    FH.cloud("hello", method: HTTPMethod.POST,
        args: args as [String : AnyObject]?, headers: nil,
        completionHandler: {(resp: Response, error: NSError?) -> Void in
        if let _ = error {
            print("initialize fail, \(resp.rawResponseAsString)")
            self.button.hidden = true
        }
        if let parsedRes = resp.parsedResponse as? [String:String] {
            self.result.text = parsedRes["msg"]
        }
    })
}

iOS9 and non TLS1.2 backend

If your RHMAP is depoyed without TLS1.2 support, open as source blank-ios-app/blank-ios-app-Info.plist.plist uncomment the exception lines:

  <!--
  <key>NSAppTransportSecurity</key>
  <dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
  </dict>
   -->