Notifications in iOS 10 have received a major overhaul. We can now implement extensions for our notifications meaning that the user experience for notifications s greatly improved.
In this talk I demonstrate and explain how I tackled the problem of importing a huge data set with many repetitive contents. The dataset was provided in JSON format.
Effectively Producing And Shipping Frameworks For Multiple PlatformsDonny Wals
In this presentation I will demonstrate how you can orchestrate the development cycles for several teams that work on native SDKs for several platforms, including Android and iOS. This talk will explain how features get designed, approved and implemented. The focus will mostly be on how you can ensure that all teams provide stable and robust public APIs, accompanied by a solid and reliable test suite. By the end of this talk, attendees will understand how they can improve their multi-platform SDKs through feature specs, Behaviour Driven Development and Test Driven Development. The talk is given from an iOS developers perspective so the code samples and experiences will be mostly based on that of an iOS developer that works together with several teams to build an SDK.
Incremental Type Safety in React Apollo Evans Hauser
This document discusses adding Reason to an existing React/Apollo project to gain the benefits of strong typing. It demonstrates defining a GraphQL query to fetch promoted post data, creating Reason components to render the data, and using ReasonReact and Apollo to connect the components to the query. The end result is clear separation of concerns between the UI logic in Reason and the data fetching logic in GraphQL.
Design for succcess with react and storybook.jsChris Saylor
Too often developers are not involved with front end design descussions and end up struggling to get a sketch design to fit into a website. Many of these tools do not offer good ways of communicating animations or different states of the various components and in the end, there still has to be a translation into something that is functional.
This talk aims to change that. We will be looking at Storybook as a tool that facilitates developers and designers working hand-in-hand to codify designs in React components. We will also cover some strategies of React component building that enabled taking advantage of tools like Storybook.
Python Code Camp (Professionals) is a whole day workshop that aims to enable professionals to learn Python Basics and Django.
Visit: http://devcon.ph/events/python-code-camp-professionals-2016
This document provides instructions for building a Python web application using Bottle and Gevent. It discusses setting up an asynchronous server using Bottle and Gevent to make more efficient use of CPU resources. It then demonstrates how to create routes, handle inputs, return different content types like plaintext, JSON, and HTML templates, and display lists and highlight names in templates.
Violet Peña - Storybook: A React Tool For Your Whole TeamAnton Caceres
Presented at FrontConf 2017 in Munich by Violet Peña
Managing large React projects can be a Herculean task. Storybook is an open-source, component-driven development environment that can ease the burden on you and your team. With Storybook, you can organize and document your components, validate your code using unit and snapshot tests, and easily share work with designers and project managers. Attendees will learn about Storybook and its uses in React projects, focusing on using it to develop, test, and review components. They will leave empowered to use Storybook on their next project and improve the workflow of their entire team.
Symfony: Your Next Microframework (SymfonyCon 2015)Ryan Weaver
Microservices are a huge trend, and microframeworks are perfect for them: put together just a few files, write some code, and your done!
But Symfony is a big framework, right? Wrong! Symfony can be as small as a single file!
In this talk, we'll learn how to use Symfony as a micro-framework for your next project. Your app will stay small and clear, but without needing to give up the features or third-party bundles that you love. And if the project grows, it can evolve naturally into a full Symfony project.
So yes, Symfony can also be a microframework. Tell the world!
The Coolest Symfony Components you’ve never heard of - DrupalCon 2017Ryan Weaver
What is Symfony *really*? It's a collection of *35* independent libraries, and
Drupal uses less than *half* of them! That means that there's a *ton* of other
good stuff that you can bring into your project to solve common problems... as
long as you know how, and what those components do!
In this talk, we'll have some fun: taking a tour of the Symfony components, how
to install them (into Drupal, or anywhere) and how to use some of my *favorite*,
lesser-known components. By the end, you'll have a better appreciation of what
Symfony *really* is, and some new tools to use immediately.
Implementing data sync apis for mibile apps @cloudconfMichele Orselli
Today mobile apps are everywhere. These apps cannot count on a reliable and constant internet connection: working in offline mode is becoming a common pattern. This is quite easy for read-only apps but it becomes rapidly tricky for apps that create data in offline mode. This talk is a case study about a possible architecture for enabling data synchronization in these situations. Some of the topics touched will be:
- id generation
- hierarchical data
- managing differente data types
- sync algorithm
The document discusses JavaScript testing for web applications using Jasmine. It introduces Jasmine as a testing framework that will be familiar to Rubyists. It then provides examples of testing asynchronous functions, stubbing network requests, testing events, and setting up tests to run across multiple browsers.
Server side data sync for mobile apps with silexMichele Orselli
oday mobile apps are everywhere. These apps cannot count on a reliable and constant internet connection: working in offline mode is becoming a common pattern. This is quite easy for read-only apps but it becomes rapidly tricky for apps that create data in offline mode. This talk is a case study about a possible architecture for enabling data synchronization in these situations. Some of the topics touched will be:
- id generation
- hierarchical data
- managing differente data types
- sync algorithm
Implementing Server Side Data Synchronization for Mobile AppsMichele Orselli
The document describes an architecture and implementation for server-side data synchronization for mobile apps. It discusses syncing scenarios, challenges with the existing solution, and the new architecture and implementation. The key aspects covered are using GUIDs for unique identifiers, suggesting a "from" timestamp for incremental syncing, transferring record states instead of operations, and algorithms for resolving conflicts including for hierarchical data using a sort by hierarchy and updating ids.
Python Code Camp (Professionals) is a whole day workshop that aims to enable professionals to learn Python Basics and Django.
Visit: http://devcon.ph/events/python-code-camp-professionals-2016
Python Code Camp (Professionals) is a whole day workshop that aims to enable professionals to learn Python Basics and Django.
Visit: http://devcon.ph/events/python-code-camp-professionals-2016
It is known that we read more code than we write, so documentation is super important and when done well can be a time saver. But what's a good solution for this? This talk shows how easy it is to take tests and use them as a live documentation of your code, because they're always up to date.
Introducing Apache Lucene with two demosSangHee Kim
Introducing Apache Lucene with two demos for analyzing similarity among android applications from Android App market. In this case, I used 20k apps for demo.
Tips and tricks for building api heavy ruby on rails applicationsTim Cull
The document provides tips for building API-heavy Ruby on Rails applications. It discusses using APIs from Instagram, CafePress, Spreadsheets, Google Docs, and others. It covers authentication challenges, using background jobs, effective testing strategies like mocking HTTP requests, and different approaches to OAuth authentication used by APIs like Instagram, Freshbooks, Xero, and Evernote. Code examples are provided for common API patterns like making requests, parsing responses, and implementing OAuth flows.
This document provides an overview of using Redux middleware for asynchronous actions, logging, analytics, and authentication. It demonstrates how to structure asynchronous action creators to work with Redux Thunk middleware and make API calls. It also shows how to build custom middleware to handle API requests, add authentication headers, and process responses. The document recommends middleware as a way to separate logic from components and encourages further reading on middleware patterns and the Redux ecosystem.
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)Peter Lehto
Wouldn't it be crazy to fly a small drone or helicopter with your phone or tablet running nothing but a web browser? This session will tell you all about it!
Imagine a fully functional touch based user interface for remote controlling a small drone or a helicopter. This is doable with latest experimental integrations around drone controlling backend applications over WIFI with touch based control interface built with GWT or Vaadin. During the session such a system will be presented with full technology stack starting from GWT based frontend to the actual backend controller application written with Spring Boot.
Looking to move to Ext GWT 3.0 from 2.x? This session will walk through the important API changes to help make the migration as straightforward as possible.
This document provides an introduction and overview of React and Redux. It begins with an introduction to key React concepts like components, props, state, and the virtual DOM. It then covers Redux, including actions, reducers, stores, and using Redux with React. Other topics include React Native, server-side rendering, routing with React Router, testing, and resources for learning more. The document aims to give the high-level essential information about React and Redux.
This document provides an overview of routing changes in Rails 3, including:
- Matching routes using "match" instead of "map.connect" and optional segments.
- Namespaces, scopes, and constraints for organizing and restricting routes.
- Default RESTful routes and generating resources.
- Redirects can now be specified as Rack apps or Procs.
- Mounting other Rack endpoints at specific paths.
- Rake tasks should be moved out of the tasks file and into model classes to allow for easier testing. This allows for mocking, stubbing, and other test isolation techniques.
- Views can be refactored to reduce duplication and improve organization. Partial templates, content blocks, and helpers can be used to DRY up views and make them more flexible.
- Content blocks and partials allow sections like page titles, sidebars, and other portions to be pulled into templates in a customizable way. This avoids hard-coding parts of pages.
SwifTEA UI - Unidirectional data flow with SwiftUI and WeeDuxKevin O'Neill
SwiftUI gives us the opportunity to exploit unidirectional data flow within iOS and related platforms. This talk shows how to use WeeDux to drive SwiftUI and explores the ergonomics of the solution.
s React.js a library or a framework? In any case, it is a new way of working that represents a revolution in the way of building web projects. It has very particular characteristics that allow us, for instance, to render React code from the server side, or to include React components from Twig tags. During this talk we will present React.js, we will explore how to take advantage of it from PHP projects and we will give answers to practical problems such as universal (isomorphical) rendering and the generation of React.js forms from Symfony forms without duplication of efforts.
An Introduction to React -- FED Date -- IBM DesignJosh Black
An introduction to React.js presented as part of an internal sharing event inside of IBM Design. This talk tries to cover what React is actually trying to do, versus explaining how to use it.
A quick run through explaining actions and filters that are used throughout WordPress (with useful metaphors) and some examples. It is intended to demonstrate that actions and filters are not as scary as people might think and that they can very easily make significant changes with only a few lines of code.
Getting Oriented with MapKit: Everything you need to get started with the new...John Wilker
New in 3.0 Map Kit works with the Google Mobile Maps Service and features panning and zooming, custom annotations, current location and geocoding. This new framework opens up many new possibilities programs not previously possible. Come learn everything you need to know to get started as well as some tips and tricks to speed your programming along.
This presentation I gave at AppBuilders Zürich Meetup
http://www.meetup.com/App-Builders-Zurich/events/231009586/
We all know MapKit which is Apple's framework that easily allows us to embed and annotate maps on iOS devices.
During this presentation you will learn how to display more than a map and what are the challenges when you want to visualize a complex project like animation of the Swiss Railways, which deals with 13'000 trains on 5'000 km of tracks, generating 150'000 timetables stops across 1'800 stations.
The Coolest Symfony Components you’ve never heard of - DrupalCon 2017Ryan Weaver
What is Symfony *really*? It's a collection of *35* independent libraries, and
Drupal uses less than *half* of them! That means that there's a *ton* of other
good stuff that you can bring into your project to solve common problems... as
long as you know how, and what those components do!
In this talk, we'll have some fun: taking a tour of the Symfony components, how
to install them (into Drupal, or anywhere) and how to use some of my *favorite*,
lesser-known components. By the end, you'll have a better appreciation of what
Symfony *really* is, and some new tools to use immediately.
Implementing data sync apis for mibile apps @cloudconfMichele Orselli
Today mobile apps are everywhere. These apps cannot count on a reliable and constant internet connection: working in offline mode is becoming a common pattern. This is quite easy for read-only apps but it becomes rapidly tricky for apps that create data in offline mode. This talk is a case study about a possible architecture for enabling data synchronization in these situations. Some of the topics touched will be:
- id generation
- hierarchical data
- managing differente data types
- sync algorithm
The document discusses JavaScript testing for web applications using Jasmine. It introduces Jasmine as a testing framework that will be familiar to Rubyists. It then provides examples of testing asynchronous functions, stubbing network requests, testing events, and setting up tests to run across multiple browsers.
Server side data sync for mobile apps with silexMichele Orselli
oday mobile apps are everywhere. These apps cannot count on a reliable and constant internet connection: working in offline mode is becoming a common pattern. This is quite easy for read-only apps but it becomes rapidly tricky for apps that create data in offline mode. This talk is a case study about a possible architecture for enabling data synchronization in these situations. Some of the topics touched will be:
- id generation
- hierarchical data
- managing differente data types
- sync algorithm
Implementing Server Side Data Synchronization for Mobile AppsMichele Orselli
The document describes an architecture and implementation for server-side data synchronization for mobile apps. It discusses syncing scenarios, challenges with the existing solution, and the new architecture and implementation. The key aspects covered are using GUIDs for unique identifiers, suggesting a "from" timestamp for incremental syncing, transferring record states instead of operations, and algorithms for resolving conflicts including for hierarchical data using a sort by hierarchy and updating ids.
Python Code Camp (Professionals) is a whole day workshop that aims to enable professionals to learn Python Basics and Django.
Visit: http://devcon.ph/events/python-code-camp-professionals-2016
Python Code Camp (Professionals) is a whole day workshop that aims to enable professionals to learn Python Basics and Django.
Visit: http://devcon.ph/events/python-code-camp-professionals-2016
It is known that we read more code than we write, so documentation is super important and when done well can be a time saver. But what's a good solution for this? This talk shows how easy it is to take tests and use them as a live documentation of your code, because they're always up to date.
Introducing Apache Lucene with two demosSangHee Kim
Introducing Apache Lucene with two demos for analyzing similarity among android applications from Android App market. In this case, I used 20k apps for demo.
Tips and tricks for building api heavy ruby on rails applicationsTim Cull
The document provides tips for building API-heavy Ruby on Rails applications. It discusses using APIs from Instagram, CafePress, Spreadsheets, Google Docs, and others. It covers authentication challenges, using background jobs, effective testing strategies like mocking HTTP requests, and different approaches to OAuth authentication used by APIs like Instagram, Freshbooks, Xero, and Evernote. Code examples are provided for common API patterns like making requests, parsing responses, and implementing OAuth flows.
This document provides an overview of using Redux middleware for asynchronous actions, logging, analytics, and authentication. It demonstrates how to structure asynchronous action creators to work with Redux Thunk middleware and make API calls. It also shows how to build custom middleware to handle API requests, add authentication headers, and process responses. The document recommends middleware as a way to separate logic from components and encourages further reading on middleware patterns and the Redux ecosystem.
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)Peter Lehto
Wouldn't it be crazy to fly a small drone or helicopter with your phone or tablet running nothing but a web browser? This session will tell you all about it!
Imagine a fully functional touch based user interface for remote controlling a small drone or a helicopter. This is doable with latest experimental integrations around drone controlling backend applications over WIFI with touch based control interface built with GWT or Vaadin. During the session such a system will be presented with full technology stack starting from GWT based frontend to the actual backend controller application written with Spring Boot.
Looking to move to Ext GWT 3.0 from 2.x? This session will walk through the important API changes to help make the migration as straightforward as possible.
This document provides an introduction and overview of React and Redux. It begins with an introduction to key React concepts like components, props, state, and the virtual DOM. It then covers Redux, including actions, reducers, stores, and using Redux with React. Other topics include React Native, server-side rendering, routing with React Router, testing, and resources for learning more. The document aims to give the high-level essential information about React and Redux.
This document provides an overview of routing changes in Rails 3, including:
- Matching routes using "match" instead of "map.connect" and optional segments.
- Namespaces, scopes, and constraints for organizing and restricting routes.
- Default RESTful routes and generating resources.
- Redirects can now be specified as Rack apps or Procs.
- Mounting other Rack endpoints at specific paths.
- Rake tasks should be moved out of the tasks file and into model classes to allow for easier testing. This allows for mocking, stubbing, and other test isolation techniques.
- Views can be refactored to reduce duplication and improve organization. Partial templates, content blocks, and helpers can be used to DRY up views and make them more flexible.
- Content blocks and partials allow sections like page titles, sidebars, and other portions to be pulled into templates in a customizable way. This avoids hard-coding parts of pages.
SwifTEA UI - Unidirectional data flow with SwiftUI and WeeDuxKevin O'Neill
SwiftUI gives us the opportunity to exploit unidirectional data flow within iOS and related platforms. This talk shows how to use WeeDux to drive SwiftUI and explores the ergonomics of the solution.
s React.js a library or a framework? In any case, it is a new way of working that represents a revolution in the way of building web projects. It has very particular characteristics that allow us, for instance, to render React code from the server side, or to include React components from Twig tags. During this talk we will present React.js, we will explore how to take advantage of it from PHP projects and we will give answers to practical problems such as universal (isomorphical) rendering and the generation of React.js forms from Symfony forms without duplication of efforts.
An Introduction to React -- FED Date -- IBM DesignJosh Black
An introduction to React.js presented as part of an internal sharing event inside of IBM Design. This talk tries to cover what React is actually trying to do, versus explaining how to use it.
A quick run through explaining actions and filters that are used throughout WordPress (with useful metaphors) and some examples. It is intended to demonstrate that actions and filters are not as scary as people might think and that they can very easily make significant changes with only a few lines of code.
Getting Oriented with MapKit: Everything you need to get started with the new...John Wilker
New in 3.0 Map Kit works with the Google Mobile Maps Service and features panning and zooming, custom annotations, current location and geocoding. This new framework opens up many new possibilities programs not previously possible. Come learn everything you need to know to get started as well as some tips and tricks to speed your programming along.
This presentation I gave at AppBuilders Zürich Meetup
http://www.meetup.com/App-Builders-Zurich/events/231009586/
We all know MapKit which is Apple's framework that easily allows us to embed and annotate maps on iOS devices.
During this presentation you will learn how to display more than a map and what are the challenges when you want to visualize a complex project like animation of the Swiss Railways, which deals with 13'000 trains on 5'000 km of tracks, generating 150'000 timetables stops across 1'800 stations.
This document summarizes the key changes and new features in Swift 3. It discusses the removal of C-style loops and increment/decrement operators. It introduces the new Sequence.first(where:) method to find the first element matching a predicate. It covers updates to consistent label behavior for function parameters and the use of keywords in member references. The document also provides an overview of the Swift Package Manager for distributing and managing Swift code dependencies.
This document provides an overview of key concepts in Swift including basic types, variables and constants, control flows, functions, classes and structures, inheritance and initialization. It covers collections, operators, enums and protocols. Advanced topics like generics, extensions, errors and optionals are also summarized. The document is intended as training material for the Swift programming language.
Useful Tools for Making Video Games - XNA (2008)Korhan Bircan
This document provides an overview of tools and techniques for creating 3D video games in XNA, including installing Visual Studio and XNA Game Studio, displaying 3D models by loading them and applying transformations, handling keyboard/mouse input, implementing a basic camera, adding a skybox, and creating animations using curves to interpolate between control points over time. Sample code implementations for many of these techniques can be found in ZIP files referenced.
Using off-the-shelf backend services like Parse, CloudKit, and Firebase, the presenter implemented a feedback tool for an auto loan tracker app. The tool aimed to get more real-time feedback from customers to understand if the app's tips were useful or confusing and to see if it actually helped people. The presentation compared the services on factors like setup, dashboards, storage size, security, and ease of use. Testing the feedback tool revealed that it motivated on-time payments, identified new feature requests, and increased feedback rates, helping the company design better future products.
This document discusses custom view controller transitions in iOS, including an overview and demos of different transition animations like shrink, circular, fade, pop, and sideways transitions. It covers the transition animation lifecycle and provides examples of using the block-based UIView animation API, spring animation API, keyframe animation API, and UIKit Dynamics to implement custom transitions.
Swift 3 focuses on clarity at the point of use and brings a more "Swifty" style. It introduces new value types in Foundation and increases safety by eliminating implicit forced unwrapping. Swift Package Manager also allows dynamic libraries and easier interoperability with other languages. Xcode 8 beta includes Swift 3, but apps can't submit using it until Xcode GM. Developers should check code migrations when updating to Swift 3.
WWDC 2016 covered updates to iOS 10, macOS Sierra, watchOS 3, and tvOS. Key updates included universal clipboard between Apple devices, 'Raise and Wake' for the iPhone, redesigned Music and Maps apps, and improvements to notifications and Siri. Xcode 8 included a memory debugger and interface builder improvements. New APIs were introduced for HomeKit, SiriKit, and an expanded Swift playground app for iPad.
iOS 9: qué hay de nuevo en la plataforma - Marcos CrispinoGeneXus
Conozca el estado actual de la plataforma iOS, las novedades de la versión 9 y qué cosas se deben tener en cuenta a la hora de desarrollar aplicaciones con GeneXus.
Swift is a programming language for smartphone apps that was created by Apple Inc. Michael T. Shrove of the University of Alabama Huntsville wrote a document about Swift programming for a smartphone programming class. The document provides information on the Swift programming language and invites readers with questions to ask.
Core Data with Swift 3 provides an overview of Core Data, including:
- Core Data allows managing object graphs and persistence of data to a SQLite store.
- It demonstrates setting up Core Data with Swift including the managed object model, persistent store coordinator, and managed object context.
- Common Core Data operations like saving, retrieving, filtering and deleting objects are shown.
- Using a fetched results controller to wire a table view to a Core Data model is demonstrated.
iOS 10 introduces several new features including the ability to delete pre-installed Apple apps, edit images and add videos in Messenger conversations, customize notification cards, and filter email delivery. The update also allows interacting with a car's system from the phone to announce callers or remember parking locations, and creates "Memories" videos from photos with music. While the update saw initial installation issues, these were quickly resolved.
The document discusses new features in ReplayKit for iOS 10 including live broadcasting gameplay directly from a Unity game. It provides code snippets on how to initialize and start a broadcast using the RPBroadcastActivityViewController and RPBroadcastController. It also mentions screen recording capabilities with Unity games using a open source Unity plugin and concludes by thanking the reader.
iOS Parallel Automation: run faster than fast — Viktar Karanevich — SeleniumC...Badoo
iOS Automation rapidly changed due to the evolution of Apple automation frameworks and Calabash community support. One year ago, we parallelised our iOS testing with multiple desktops – a large improvement in performance. Here is an account of the subsequent changes, including the removal of multiple desktops and the adoption of Apple’s new XCTest framework.
The automation community (Appium, Calabash etc.) faced a new challenge: how could we create iOS Automation Infrastructure with the new XCTest Framework?
I adopted Facebook solution (FBSimCtl and WebAgentDriver) into the multi-simulators approach. In this talk, I will discuss the full evolution path to Facebash Approach based on multi-simulators, Calabash server and Facebook Web Driver Agent.
iOS 10 has been billed as the biggest software update that Apple has ever released. It promises to fundamentally change and expand the ways in which we use the iPhone. Here is everything you need to know about one of the most exciting updates to Apple's operating system.
Study of similiarities and difference between android and ios system archiitecture in operating system perspective like thread management process management memory management etc more technical details
This is a presentation which was held at the Monthly Computer Vision Meetup hosted by Anyline. Get an easy intro to Deep Learning on iOS by our CTO Daniel Albertini.
iOS App Development Predictions for 2017 include virtual reality, cloud-driven apps, fingerprint detection, IoT and retina display. A direct support from Apple is expected to support iOS development. Let's look at few other predictions for 2017.
What's New in User Notifications Framework - WWDC16. Meetup @Wantedly with 日本...将之 小野
The document summarizes new features in the User Notifications framework in iOS 10, including a single notification API across platforms, improved local notifications, in-app notification presentation, notification management, and notification extensions that allow modifying notification content and including media attachments.
Push notifications allow software applications to deliver messages and notifications to users without requiring the user to actively check for updates. Push notifications can contain data, notifications, or both. There are two main platforms for delivering push notifications: Firebase Cloud Messaging (FCM) for Android and Apple Push Notification Service (APNs) for iOS. Both support delivering notifications via HTTP and XMPP/MQTT protocols. iOS 10 introduced enhancements like rich notifications that allow images, videos, and interactive buttons in notifications. It also introduced notification extensions that give developers more control over customizing notification content.
With the introduction of the iPhone 6s and the iPhone 6s Plus, Apple added 3D Touch, a new dimension to the multi-touch user interface. This new technology senses how deeply users press the display and provides a new way to interact with the iPhone.
In iOS 9, Apple introduced several 3D Touch APIs. In this session I will explain in a practical way what is 3D Touch and how you can benefit from it in your app. I will cover home screen quick actions, peek and pop actions and also how to use the force properties of a UITouch event.
The document summarizes an introduction to iOS application development using Objective-C. It outlines the tools and knowledge needed to get started, explains core concepts like the MVC design pattern and Objective-C syntax. It then demonstrates three "Hello World" examples: 1) programmatically adding graphical elements, 2) using Interface Builder, and 3) adding elements to a view controller. The document provides resources for learning iOS development.
A Tizen TV web app is an HTML5 application for Tizen TV that uses standard web technologies. Developers can create rich multimedia experiences. The Tizen platform provides a JavaScript API to access TV features. Apps are created using the Tizen SDK IDE by selecting File > New > Tizen Web Project. Remote control events are handled by adding an event listener for the keydown event and implementing a function to respond to different key presses. Apps are tested using the Web Simulator launched from the IDE.
The document provides steps to set up the development environment for building mobile apps using Titanium, an open source framework. It discusses installing Java, Android SDK, Python, SCons, Git. It also explains concepts like windows, views and widgets in Titanium and provides code samples to create common UI elements like labels, text fields, buttons, pickers, images and tables.
The document provides an overview of the anatomy and key components of an iOS application. It discusses how code is compiled, Nib files define the user interface elements, resources like images and strings are included, and the Info.plist file contains app configuration details. It also covers how the UIApplicationMain function creates the UIApplication instance and loads the main Nib file, how delegates are used to handle events, and how outlets and actions connect interface elements to code.
How to build twitter bot using golang from scratchKaty Slemon
This document provides a tutorial on how to build a Twitter bot using Golang from scratch. It covers setting up a Twitter developer account, installing prerequisites like Golang and ngrok, configuring the .env file, implementing CRC validation, registering and subscribing webhooks, listening for events, sending tweets in response, and setting up the server. The full source code for the Twitter bot project is provided in a GitHub repository for reference. The tutorial aims to help readers develop their own Twitter bot application from start to finish without using any third-party libraries.
Mobile Application Development with JUCE and Native API’sAdam Wilson
This document discusses mixing JUCE components with native iOS and Android UI elements for mobile app development. It explains that JUCE was designed for desktop apps, not touchscreens, and lists some limitations. The solution presented is to use native platform APIs for scrollable lists, navigation, input, and databases, while using JUCE for audio processing, custom graphics, and specialized GUI elements. Advantages include familiar UIs, smooth scrolling, gesture support, and animation support from native APIs. Disadvantages include extra design and coding work. It then provides details on how to mix JUCE with native UI elements for Android and iOS, including modifying activities, passing data between languages, and integrating JUCE views into native view hierarchies.
The document provides guidance on creating notifications for Android Wear apps. It discusses using NotificationCompat.Builder to build notifications that are displayed properly on both handheld devices and wearables. It covers adding actions, remote voice input, multiple pages, and stacking notifications on wearables. The key aspects covered are using NotificationCompat.Builder to create standard notifications, and NotificationCompat.WearableExtender to add wearable-specific functionality like extra pages and background images.
Push Notifications: How to add them to a Flutter AppFibonalabs
With the fame that Flutter has garnered over the years, it has become the top choice of business owners for cross-platform mobile app development. With the enhancement of features like push notifications, it has further made its place firmly in the world of app development. In this blog, I will help you understand firebase cloud messaging by showing the procedure of adding Push Notification in a Flutter app for android with the help of a sample project. Let’s discuss the steps that need to be executed for this phenomenal integration.
Presentation/demo held at Google Developer Group Oslo DevFest 2014
Abstract:
This talk will show you how to build an Android Wear app. Thomas will start out with a plain notification and show you how to add features until you have a full-fledged card UI. We will discuss the role of the phone and the watch and how to communicate between them. As a case study he will use a prototype for a news alert app he's working on - there will be plenty of code examples and demos.
Thomas Oldervoll has worked 5 years for Google in Mountain View and 9 years for Zenior in Oslo. He likes building things, in particular machine learning, scalable backend systems and Android apps.
The document outlines Firefox OS and open web apps, including an agenda for a workshop on building apps for Firefox OS. It provides overviews of Firefox OS, developing open web apps using HTML5, CSS and JavaScript, app manifest files, and publishing/installing apps. It also describes various web APIs available to Firefox OS apps, including battery status, notifications, screen orientation, vibration, networking information, proximity sensing, ambient light detection, device storage, contacts, and activities. Future planned APIs are listed as well.
RubyMotion allows developers to quickly build and test native iOS apps using the Ruby programming language instead of Objective-C. It uses the Ruby language, RSpec for testing, and integrates with Xcode and the iOS SDK to compile to native apps. Developers can create timers, pickers, buttons, and audio using RubyMotion and the iOS frameworks.
How to Use Twilio Video Plugin for Android with Flutter.pptxRubenGray1
In today's article, we will learn how Flutter developers can use the Twilio video plugin for Android while developing communication apps using Flutter technology.
In this workshop, you will learn how to build a SwiftUI application with Firebase. We will cover the following topics:
- Data modeling for Firestore
- Efficiently mapping Firestore data using Swift’s Codable protocol
- Fetching data from Firestore using snapshot listeners
- Connecting SwiftUI’s state management system to Firestore to implement real-time sync
- Securing your user’s data using Firebase Security Rules
- Signing in your users using Firebase Authentication
We will be using the latest versions of Firebase and SwiftUI, making use of Combine and async/await to demonstrate how to call asynchronous APIs using modern Swift technologies. Please bring your laptop, making sure to install the latest stable version of Xcode before the workshop.
From object oriented to functional domain modelingMario Fusco
This document discusses moving from an object-oriented approach to a functional approach for domain modeling. It provides examples of modeling a bank account and salary calculator in both OOP and FP styles. Some key benefits of the functional approach highlighted include immutability, avoiding side effects, handling errors through monads instead of exceptions, and composing functions together through currying and composition. Overall the document advocates that while OOP and FP both have merits, modeling as functions can provide advantages in terms of understandability, testability, and extensibility of the code.
- Async functions run on the global executor by default, but can be instructed to run on the main actor using annotations like @MainActor. Using nonisolated allows escaping the main actor.
- Tasks are used to represent independent units of work but do not affect execution context. Unstructured tasks inherit context, detached tasks inherit nothing.
- Structured concurrency relates to the relationships between parent and child tasks. A parent task cannot complete until its children finish.
Using Combine, SwiftUI and callAsFunction to build an experimental localizati...Donny Wals
Learn how to use Combine, SwiftUI and Swift 5.2's callAsFunction to build an experimental localization system and familiarize yourself with these new APIs in iOS 13.
Combine is Apple's own Functional Reactive Programming framework. In this talk, I explain three of the main pillars that Combine is built on. By re-implementing Combine's sink subscriber we explore every aspect Combine's subscription stream.
Building reusable components with generics and protocolsDonny Wals
This document discusses building reusable components with generics and protocols in Swift. It begins by outlining goals of understanding how to design code using generics, simple generics and associated types, and protocols with associated types and generics. An example problem of wanting a generic cache is presented. The document then walks through steps to build such a generic cache, including defining generics, protocols with associated types, and assembling the pieces while ensuring type safety. It concludes by summarizing best practices like designing the API first, introducing abstractions like generics and protocols as needed, and using constraints for type safety.
Many developers know that they should be writing tests for their apps. However, it’s often hard to know how to get started or to convince your manager that you should be spending half of your time writing and maintaining test code. In this talk, you will learn how you can integrate testing into your day-to-day workflow and you’ll learn why a good test suite will not cost you a lot of time. Instead, it should end up saving you time. And as you know, the manager loves it when you manage to save time. You will understand how TDD works, how to integrate the important bits of TDD and how to build a high-quality test suite that is a pleasure to maintain. To round things out, you will also learn about Xcode 11’s new test plans feature and how you can use it to make your test suite even better!
Over the years, Core Data has gained a pretty bad reputation amongst developers who prefer to use another service like Realm for their local persistence. In this talk I will make an argument for using Core Data and why it's not so bad. I will share some examples of where it's easy to go wrong with Core Data, and how to avoid those pitfalls. I will also quickly go over setting up Core Data in an app and by the end, the audience should have a couple of simple rules that should help them safely integrate Core Data in their apps.
Developing in the Fastlane -> How LookLive uses Fastlane to automate and spee...Donny Wals
App deployment can be frustrating and time consuming. At LookLive, we have optimized this process using a tool called Fastlane. In this talk, I will demonstrate how we did it and you'll learn how you can set up Fastlane for your own projects.
Securiport is a border security systems provider with a progressive team approach to its task. The company acknowledges the importance of specialized skills in creating the latest in innovative security tech. The company has offices throughout the world to serve clients, and its employees speak more than twenty languages at the Washington D.C. headquarters alone.
AI Emotional Actors: “When Machines Learn to Feel and Perform"AkashKumar809858
Welcome to the era of AI Emotional Actors.
The entertainment landscape is undergoing a seismic transformation. What started as motion capture and CGI enhancements has evolved into a full-blown revolution: synthetic beings not only perform but express, emote, and adapt in real time.
For reading further follow this link -
https://akash97.gumroad.com/l/meioex
Dev Dives: System-to-system integration with UiPath API WorkflowsUiPathCommunity
Join the next Dev Dives webinar on May 29 for a first contact with UiPath API Workflows, a powerful tool purpose-fit for API integration and data manipulation!
This session will guide you through the technical aspects of automating communication between applications, systems and data sources using API workflows.
📕 We'll delve into:
- How this feature delivers API integration as a first-party concept of the UiPath Platform.
- How to design, implement, and debug API workflows to integrate with your existing systems seamlessly and securely.
- How to optimize your API integrations with runtime built for speed and scalability.
This session is ideal for developers looking to solve API integration use cases with the power of the UiPath Platform.
👨🏫 Speakers:
Gunter De Souter, Sr. Director, Product Manager @UiPath
Ramsay Grove, Product Manager @UiPath
This session streamed live on May 29, 2025, 16:00 CET.
Check out all our upcoming UiPath Dev Dives sessions:
👉 https://community.uipath.com/dev-dives-automation-developer-2025/
Introducing FME Realize: A New Era of Spatial Computing and ARSafe Software
A new era for the FME Platform has arrived – and it’s taking data into the real world.
Meet FME Realize: marking a new chapter in how organizations connect digital information with the physical environment around them. With the addition of FME Realize, FME has evolved into an All-data, Any-AI Spatial Computing Platform.
FME Realize brings spatial computing, augmented reality (AR), and the full power of FME to mobile teams: making it easy to visualize, interact with, and update data right in the field. From infrastructure management to asset inspections, you can put any data into real-world context, instantly.
Join us to discover how spatial computing, powered by FME, enables digital twins, AI-driven insights, and real-time field interactions: all through an intuitive no-code experience.
In this one-hour webinar, you’ll:
-Explore what FME Realize includes and how it fits into the FME Platform
-Learn how to deliver real-time AR experiences, fast
-See how FME enables live, contextual interactions with enterprise data across systems
-See demos, including ones you can try yourself
-Get tutorials and downloadable resources to help you start right away
Whether you’re exploring spatial computing for the first time or looking to scale AR across your organization, this session will give you the tools and insights to get started with confidence.
Data Virtualization: Bringing the Power of FME to Any ApplicationSafe Software
Imagine building web applications or dashboards on top of all your systems. With FME’s new Data Virtualization feature, you can deliver the full CRUD (create, read, update, and delete) capabilities on top of all your data that exploit the full power of FME’s all data, any AI capabilities. Data Virtualization enables you to build OpenAPI compliant API endpoints using FME Form’s no-code development platform.
In this webinar, you’ll see how easy it is to turn complex data into real-time, usable REST API based services. We’ll walk through a real example of building a map-based app using FME’s Data Virtualization, and show you how to get started in your own environment – no dev team required.
What you’ll take away:
-How to build live applications and dashboards with federated data
-Ways to control what’s exposed: filter, transform, and secure responses
-How to scale access with caching, asynchronous web call support, with API endpoint level security.
-Where this fits in your stack: from web apps, to AI, to automation
Whether you’re building internal tools, public portals, or powering automation – this webinar is your starting point to real-time data delivery.
Improving Developer Productivity With DORA, SPACE, and DevExJustin Reock
Ready to measure and improve developer productivity in your organization?
Join Justin Reock, Deputy CTO at DX, for an interactive session where you'll learn actionable strategies to measure and increase engineering performance.
Leave this session equipped with a comprehensive understanding of developer productivity and a roadmap to create a high-performing engineering team in your company.
Maxx nft market place new generation nft marketing placeusersalmanrazdelhi
PREFACE OF MAXXNFT
MaxxNFT: Powering the Future of Digital Ownership
MaxxNFT is a cutting-edge Web3 platform designed to revolutionize how
digital assets are owned, traded, and valued. Positioned at the forefront of the
NFT movement, MaxxNFT views NFTs not just as collectibles, but as the next
generation of internet equity—unique, verifiable digital assets that unlock new
possibilities for creators, investors, and everyday users alike.
Through strategic integrations with OKT Chain and OKX Web3, MaxxNFT
enables seamless cross-chain NFT trading, improved liquidity, and enhanced
user accessibility. These collaborations make it easier than ever to participate
in the NFT ecosystem while expanding the platform’s global reach.
With a focus on innovation, user rewards, and inclusive financial growth,
MaxxNFT offers multiple income streams—from referral bonuses to liquidity
incentives—creating a vibrant community-driven economy. Whether you
'
re
minting your first NFT or building a digital asset portfolio, MaxxNFT empowers
you to participate in the future of decentralized value exchange.
https://maxxnft.xyz/
Supercharge Your AI Development with Local LLMsFrancesco Corti
In today's AI development landscape, developers face significant challenges when building applications that leverage powerful large language models (LLMs) through SaaS platforms like ChatGPT, Gemini, and others. While these services offer impressive capabilities, they come with substantial costs that can quickly escalate especially during the development lifecycle. Additionally, the inherent latency of web-based APIs creates frustrating bottlenecks during the critical testing and iteration phases of development, slowing down innovation and frustrating developers.
This talk will introduce the transformative approach of integrating local LLMs directly into their development environments. By bringing these models closer to where the code lives, developers can dramatically accelerate development lifecycles while maintaining complete control over model selection and configuration. This methodology effectively reduces costs to zero by eliminating dependency on pay-per-use SaaS services, while opening new possibilities for comprehensive integration testing, rapid prototyping, and specialized use cases.
Microsoft Build 2025 takeaways in one presentationDigitalmara
Microsoft Build 2025 introduced significant updates. Everything revolves around AI. DigitalMara analyzed these announcements:
• AI enhancements for Windows 11
By embedding AI capabilities directly into the OS, Microsoft is lowering the barrier for users to benefit from intelligent automation without requiring third-party tools. It's a practical step toward improving user experience, such as streamlining workflows and enhancing productivity. However, attention should be paid to data privacy, user control, and transparency of AI behavior. The implementation policy should be clear and ethical.
• GitHub Copilot coding agent
The introduction of coding agents is a meaningful step in everyday AI assistance. However, it still brings challenges. Some people compare agents with junior developers. They noted that while the agent can handle certain tasks, it often requires supervision and can introduce new issues. This innovation holds both potential and limitations. Balancing automation with human oversight is crucial to ensure quality and reliability.
• Introduction of Natural Language Web
NLWeb is a significant step toward a more natural and intuitive web experience. It can help users access content more easily and reduce reliance on traditional navigation. The open-source foundation provides developers with the flexibility to implement AI-driven interactions without rebuilding their existing platforms. NLWeb is a promising level of web interaction that complements, rather than replaces, well-designed UI.
• Introduction of Model Context Protocol
MCP provides a standardized method for connecting AI models with diverse tools and data sources. This approach simplifies the development of AI-driven applications, enhancing efficiency and scalability. Its open-source nature encourages broader adoption and collaboration within the developer community. Nevertheless, MCP can face challenges in compatibility across vendors and security in context sharing. Clear guidelines are crucial.
• Windows Subsystem for Linux is open-sourced
It's a positive step toward greater transparency and collaboration in the developer ecosystem. The community can now contribute to its evolution, helping identify issues and expand functionality faster. However, open-source software in a core system also introduces concerns around security, code quality management, and long-term maintenance. Microsoft’s continued involvement will be key to ensuring WSL remains stable and secure.
• Azure AI Foundry platform hosts Grok 3 AI models
Adding new models is a valuable expansion of AI development resources available at Azure. This provides developers with more flexibility in choosing language models that suit a range of application sizes and needs. Hosting on Azure makes access and integration easier when using Microsoft infrastructure.
Jeremy Millul - A Talented Software DeveloperJeremy Millul
Jeremy Millul is a talented software developer based in NYC, known for leading impactful projects such as a Community Engagement Platform and a Hiking Trail Finder. Using React, MongoDB, and geolocation tools, Jeremy delivers intuitive applications that foster engagement and usability. A graduate of NYU’s Computer Science program, he brings creativity and technical expertise to every project, ensuring seamless user experiences and meaningful results in software development.
Introduction and Background:
Study Overview and Methodology: The study analyzes the IT market in Israel, covering over 160 markets and 760 companies/products/services. It includes vendor rankings, IT budgets, and trends from 2025-2029. Vendors participate in detailed briefings and surveys.
Vendor Listings: The presentation lists numerous vendors across various pages, detailing their names and services. These vendors are ranked based on their participation and market presence.
Market Insights and Trends: Key insights include IT market forecasts, economic factors affecting IT budgets, and the impact of AI on enterprise IT. The study highlights the importance of AI integration and the concept of creative destruction.
Agentic AI and Future Predictions: Agentic AI is expected to transform human-agent collaboration, with AI systems understanding context and orchestrating complex processes. Future predictions include AI's role in shopping and enterprise IT.
GDG Cloud Southlake #43: Tommy Todd: The Quantum Apocalypse: A Looming Threat...James Anderson
The Quantum Apocalypse: A Looming Threat & The Need for Post-Quantum Encryption
We explore the imminent risks posed by quantum computing to modern encryption standards and the urgent need for post-quantum cryptography (PQC).
Bio: With 30 years in cybersecurity, including as a CISO, Tommy is a strategic leader driving security transformation, risk management, and program maturity. He has led high-performing teams, shaped industry policies, and advised organizations on complex cyber, compliance, and data protection challenges.
Protecting Your Sensitive Data with Microsoft Purview - IRMS 2025Nikki Chapple
Session | Protecting Your Sensitive Data with Microsoft Purview: Practical Information Protection and DLP Strategies
Presenter | Nikki Chapple (MVP| Principal Cloud Architect CloudWay) & Ryan John Murphy (Microsoft)
Event | IRMS Conference 2025
Format | Birmingham UK
Date | 18-20 May 2025
In this closing keynote session from the IRMS Conference 2025, Nikki Chapple and Ryan John Murphy deliver a compelling and practical guide to data protection, compliance, and information governance using Microsoft Purview. As organizations generate over 2 billion pieces of content daily in Microsoft 365, the need for robust data classification, sensitivity labeling, and Data Loss Prevention (DLP) has never been more urgent.
This session addresses the growing challenge of managing unstructured data, with 73% of sensitive content remaining undiscovered and unclassified. Using a mountaineering metaphor, the speakers introduce the “Secure by Default” blueprint—a four-phase maturity model designed to help organizations scale their data security journey with confidence, clarity, and control.
🔐 Key Topics and Microsoft 365 Security Features Covered:
Microsoft Purview Information Protection and DLP
Sensitivity labels, auto-labeling, and adaptive protection
Data discovery, classification, and content labeling
DLP for both labeled and unlabeled content
SharePoint Advanced Management for workspace governance
Microsoft 365 compliance center best practices
Real-world case study: reducing 42 sensitivity labels to 4 parent labels
Empowering users through training, change management, and adoption strategies
🧭 The Secure by Default Path – Microsoft Purview Maturity Model:
Foundational – Apply default sensitivity labels at content creation; train users to manage exceptions; implement DLP for labeled content.
Managed – Focus on crown jewel data; use client-side auto-labeling; apply DLP to unlabeled content; enable adaptive protection.
Optimized – Auto-label historical content; simulate and test policies; use advanced classifiers to identify sensitive data at scale.
Strategic – Conduct operational reviews; identify new labeling scenarios; implement workspace governance using SharePoint Advanced Management.
🎒 Top Takeaways for Information Management Professionals:
Start secure. Stay protected. Expand with purpose.
Simplify your sensitivity label taxonomy for better adoption.
Train your users—they are your first line of defense.
Don’t wait for perfection—start small and iterate fast.
Align your data protection strategy with business goals and regulatory requirements.
💡 Who Should Watch This Presentation?
This session is ideal for compliance officers, IT administrators, records managers, data protection officers (DPOs), security architects, and Microsoft 365 governance leads. Whether you're in the public sector, financial services, healthcare, or education.
🔗 Read the blog: https://nikkichapple.com/irms-conference-2025/
As data privacy regulations become more pervasive across the globe and organizations increasingly handle and transfer (including across borders) meaningful volumes of personal and confidential information, the need for robust contracts to be in place is more important than ever.
This webinar will provide a deep dive into privacy contracting, covering essential terms and concepts, negotiation strategies, and key practices for managing data privacy risks.
Whether you're in legal, privacy, security, compliance, GRC, procurement, or otherwise, this session will include actionable insights and practical strategies to help you enhance your agreements, reduce risk, and enable your business to move fast while protecting itself.
This webinar will review key aspects and considerations in privacy contracting, including:
- Data processing addenda, cross-border transfer terms including EU Model Clauses/Standard Contractual Clauses, etc.
- Certain legally-required provisions (as well as how to ensure compliance with those provisions)
- Negotiation tactics and common issues
- Recent lessons from recent regulatory actions and disputes
Offshore IT Support: Balancing In-House and Offshore Help Desk Techniciansjohn823664
In today's always-on digital environment, businesses must deliver seamless IT support across time zones, devices, and departments. This SlideShare explores how companies can strategically combine in-house expertise with offshore talent to build a high-performing, cost-efficient help desk operation.
From the benefits and challenges of offshore support to practical models for integrating global teams, this presentation offers insights, real-world examples, and key metrics for success. Whether you're scaling a startup or optimizing enterprise support, discover how to balance cost, quality, and responsiveness with a hybrid IT support strategy.
Perfect for IT managers, operations leads, and business owners considering global help desk solutions.
Agentic AI - The New Era of IntelligenceMuzammil Shah
This presentation is specifically designed to introduce final-year university students to the foundational principles of Agentic Artificial Intelligence (AI). It aims to provide a clear understanding of how Agentic AI systems function, their key components, and the underlying technologies that empower them. By exploring real-world applications and emerging trends, the session will equip students with essential knowledge to engage with this rapidly evolving area of AI, preparing them for further study or professional work in the field.
8. Everything < iOS 10
Showing notifications while foregrounded
There’s one more thing…
9. iOS 10
Media in notifications
Custom user interface
True end-to-end encryption
Unified framework
10. UserNotification at a glance
Unified Local and Remote
Single registration handler
Handle notifications through a delegate
Not compatible with < iOS 10
func userNotificationCenter(_ center:
UNUserNotificationCenter, didReceive response:
UNNotificationResponse, withCompletionHandler
completionHandler: @escaping () -> Void) {
}
func userNotificationCenter(_ center:
UNUserNotificationCenter, willPresent notification:
UNNotification, withCompletionHandler completionHandler:
@escaping (UNNotificationPresentationOptions) -> Void) {
}
let notificationCenter = UNUserNotificationCenter.current()
notificationCenter.getNotificationSettings { settings in
if settings.authorizationStatus == .notDetermined {
notificationCenter.requestAuthorization(options:
[.badge, .alert]) { success, error in
// handle status
}
}
}
11. UserNotification at a glance
UIApplication.shared.registerForRemoteNotifications() APNS
func application(_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken
deviceToken: Data) {
}
12. UserNotification at a glance
let content = UNMutableNotificationContent()
content.title = “Next speaker"
content.body = “Donny is up next"
content.badge = 1
let path = Bundle.main.path(forResource: "thumbs", ofType:
"png")!
let imageUrl = URL(fileURLWithPath: path)
let image = try! UNNotificationAttachment(identifier:
"thumbs-up", url: imageUrl, options: nil)
content.attachments = [image]
let trigger =
UNTimeIntervalNotificationTrigger(timeInterval: 10, repeats:
false)
let request = UNNotificationRequest(identifier:
“nextSpeaker", content: content, trigger: trigger)
notificationCenter.add(request, withCompletionHandler: nil)
Create notification contents
Schedule the notification
Update notification contents
13. UserNotification at a glance
Create notification contents
Schedule the notification
Update notification contents
14. And when you're in the
foreground...
func userNotificationCenter(_ center:
UNUserNotificationCenter, willPresent notification:
UNNotification, withCompletionHandler completionHandler:
@escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler([.alert, .sound])
}
15. Service extensions
Hey there! What's up?
49 29b9 cfdc15cfe
3969 107fa
Service Extension
End to end encryption
Send push with mutable-content: 1
Update contents
Limited time available
16. Service extensions
override func didReceive(_ request: UNNotificationRequest,
withContentHandler contentHandler: @escaping
(UNNotificationContent) -> Void) {
self.contentHandler = contentHandler
decryptedContent = (request.content.mutableCopy() as?
UNMutableNotificationContent)
if let decryptedContent = decryptedContent {
decryptedContent.title = "Updated title"
contentHandler(decryptedContent)
}
}
override func serviceExtensionTimeWillExpire() {
if let contentHandler = contentHandler, let
decryptedContent = decryptedContent {
contentHandler(decryptedContent)
}
}
End to end encryption
Send push with mutable-content: 1
Update contents
Limited time available
17. Content extensions
View controller based extension
Extensions are tied to categories
Set content ratio in .plist
Actions are to added to notifications separately
<key>NSExtensionAttributes</key>
<dict>
<key>UNNotificationExtensionCategory</key>
<string>wheel</string>
<key>UNNotificationExtensionInitialContentSizeRatio</
key>
<real>1</real>
</dict>
let content = UNMutableNotificationContent()
content.title = "Spin the wheel?"
content.body = "Win tickets for Do iOS"
content.categoryIdentifier = "wheel"
content.badge = 1
18. Content extensions
Bring your own UI
Extensions don’t receive touches
Extensions do receive notification responses
Even less need for users to open your app
func didReceive(_ response: UNNotificationResponse,
completionHandler completion: @escaping
(UNNotificationContentExtensionResponseOption) -> Void) {
if response.actionIdentifier == "spin" {
wheel.spin()
}
}
19. Looking at the bigger
picture
Stand out with Content Extensions
Design for short, quick interactions
Increased privacy with Service Extensions
Hey there! What's up?
49 29b9 cfdc15cfe
3969 107fa
Service Extension
20. Looking at the bigger
picture
Cleaner code, more maintainable
Only send meaningful messages
Use identifiers to update notifications if needed