Vital Connect: Disconnect patch problem
It’s probably better to use something other than AsyncTask.
Ooyala: Jumpy scrubber bar problem
On the video player, the scrubber jumped around during seeks.
Ooyala: Customized accent bar color for video player
Ooyala: Fixed error message handling in video player
Ooyala product info
Ooyala Player
Ooyala SDK
SDK has two parts:
-to use the Ooyala Skin SDK in an app:
Since Facebook no longer distributes the latest versions of the React Native AAR files with maven repositories, the React Native file is now distributed with OoyalaSkinSDK.jar.
React Native
-React component returns markup:
React uses the markup on the DOM
React Native translates the markup to the host
platform. E.g. <view> -> Android TextView
- apps render using real native components, not webviews</view>
React Native pros and cons
pros:
cons:
Vital Connect
Patents
Workflow-enabled provider
A workflow-enabled provider includes a service provider and a workflow manager interface unit. The workflow manager interface unit couples the service provider to a workflow manager to provide the automatic discovering, distributed processing and dynamic user interface generating functionality. An advertisement monitor listens for broadcasts from the workflow manager regarding new clients. A request module and a response module handle the transfer of data and control signals between the workflow manager and the service provider. A process control module performs a plurality of processing functions including aggregating requests from clients, selecting requests it can service, presenting user interfaces, processing input via the service provider and controlling the service provider. The user interface module is coupled to the process control module and dynamically generates user interfaces for display by the service provider.
Workflow-enabled client
A workflow-enabled client comprises a client and a workflow manager interface unit. The workflow manager interface unit couples the client to a workflow manager to provide the automatic discovering, distributed processing and dynamic user interface generating functionality of the present invention. A communication manager of the workflow-enabled client has a registration unit that registers, and unregisters, the client with the workflow manager such as by providing a name, a data and other commands. A polling module uses a received location from the workflow manager to retrieve data. The process control module performs a plurality of processing functions such a processing polled data, storing it or providing it to other clients. The process control module can also initiate other clients. The present invention also includes a number of novel methods including a method for registering a client, a method for polling data, and a method for initiating other clients.
Workflow manager for a distributed system
A workflow manager handles the communication between a workflow-enabled provider and a workflow-enabled client. The workflow manager maintains a directory of clients, translates a transaction from a provider into multiple transactions suitable for the client, and handles security. In one embodiment, the workflow manager connects with the workflow-enabled client by registration and with the workflow-enabled provider by advertising and activation. Subsequent communications between the workflow manager and the workflow-enabled provider and the workflow-enabled client are with a request/response protocol. The workflow manager also comprises data storage for storing data for transmission to the workflow-enabled client or the workflow-enabled provider, and workflow storage for storing information related to registered clients. The present invention also includes a number of novel methods including a method for a method for registering a client and a method for activating a provider.
Vital Connect: VC Relay
The Relay SDK
VC Relay
VC Patch
VC Bluetooth
VC Database
VC Network
VCCore
Whatizit files
ViewController.swift
checkNetwork():
initAndStart()
initTitleAndView(title : String)
timeout()
getImage()
checkCameraPermission()
cameraAccessNeededAlert()
showCellularAlert()
stopProgressAndTimer()
showStartAlert()
pickImageSourceAlert()
showGuessAlert()
showTimeoutAlert()
showSettingsAlert()
showNoNetworkAlert()
showResultAlert()
playAgainAlert()
showFinalScoreAlert()
noCameraAlert()
usePhotoLibrary()UImageView.swift
String.swift
NetworkManager.swift
RestKit.framework
SVProgressHUD.framework
VisualRecognitionV3.framework
Whatizit: image recognition
The IBM Watson Visual Recognition service uses deep learning algorithms to analyze images (.jpg or .png) for scenes, objects, faces, text, and other content, and return keywords that provide information about that content.
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
// Check for network connection
NetworkManager.isUnreachable { _ in
self.showSettingsAlert()
} // Display progress spinner
SVProgressHUD.show() // Set timer
timer = Timer.scheduledTimer(timeInterval: timeoutSeconds, target: self, selector: #selector(timeout), userInfo: nil, repeats: false) // Do image recognition
if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
imageView.image = image
imageView.roundCornersForAspectFit(radius: 15)
imagePicker.dismiss(animated: true, completion: nil)self.navigationItem.title = String.THINKING
let visualRecognition = VisualRecognition(version: version, apiKey: apiKey)
let imageData = image.jpegData(compressionQuality: 0.01)
let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let fileURL = documentsURL.appendingPathComponent("tempImage.jpg")
try? imageData?.write(to: fileURL, options: [])
let failure = { (error: Error) in print(error) }
visualRecognition.classify(image: image, failure: failure) { classifiedImages in
let classes = classifiedImages.images.first!.classifiers.first!.classes self.classificationResults = []
for index in 0..Whatizit: NetworkManager
Code is from: https://blog.pusher.com/handling-internet-connection-reachability-swift/
import Foundation
import Reachability
class NetworkManager: NSObject {
var reachability: Reachability!
// Create a singleton instance
static let sharedInstance: NetworkManager = { return NetworkManager() }() override init() {
super.init() // Initialise reachability
reachability = Reachability()! // Register an observer for the network status
NotificationCenter.default.addObserver(
self,
selector: #selector(networkStatusChanged(_:)),
name: .reachabilityChanged,
object: reachability
) do {
// Start the network status notifier
try reachability.startNotifier()
} catch {
print("Unable to start notifier")
}
} @objc func networkStatusChanged(_ notification: Notification) {
// Do something globally here!
} static func stopNotifier() -> Void {
do {
// Stop the network status notifier
try (NetworkManager.sharedInstance.reachability).startNotifier()
} catch {
print("Error stopping notifier")
}
} // Network is reachable
static func isReachable(completed: @escaping (NetworkManager) -> Void) {
if (NetworkManager.sharedInstance.reachability).connection != .none {
completed(NetworkManager.sharedInstance)
}
} // Network is unreachable
static func isUnreachable(completed: @escaping (NetworkManager) -> Void) {
if (NetworkManager.sharedInstance.reachability).connection == .none {
completed(NetworkManager.sharedInstance)
}
} // Network is reachable via WWAN/Cellular
static func isReachableViaWWAN(completed: @escaping (NetworkManager) -> Void) {
if (NetworkManager.sharedInstance.reachability).connection == .cellular {
completed(NetworkManager.sharedInstance)
}
} // Network is reachable via WiFi
static func isReachableViaWiFi(completed: @escaping (NetworkManager) -> Void) {
if (NetworkManager.sharedInstance.reachability).connection == .wifi {
completed(NetworkManager.sharedInstance)
}
}
}Smart Mimic Ringing Bug
Background:
The app has a Ring button which rings the device. It has two states: Ring (not ringing) and *** (ringing)
Problem:
Ring button could get into a bad state. It could ring, and the user would be unable to stop it.
Causes:
Solution:
-the button press code handles alarms
press -> start alarms or stop alarms
-the cellForIndexAt code handles setting the button title
initial title is Ring
if alarming, set title to ***
if not alarming, set title to Ring
also handle foreground and background: -app moves to background applicationWillResignActive ----stop alarms ----save button state ----save alarm state? applicationDid EnterBackground ----dismiss alerts
-app enters foreground
applicationWillEnterForeground
—-update button with saved state
—-restore alarm state?