iOhYes show

iOhYes

Summary: A podcast by iOS developers for iOS developers, delivering news, tips, and rants for professional iOS/Mac developers, with something for enterprise and indie developers alike. Hosted by Darryl Thomas & John Sextro.

Podcasts:

 120: Force Quit | File Type: audio/mpeg | Duration: 21:11

Thanks to all of our listeners, sponsors, former guests and hosts and to Dan and Haddie and the rest of the 5by5 network. This will be our last episode. We hope you've enjoyed the series as much as we've enjoyed producing it.

 119: Wobble | File Type: audio/mpeg | Duration: 46:00

Discussion: tvOS Development with special guest Mark Sands Recreating the Parallax effect 3D transform Sheen (Glossy effect) Shadow Wobble Top Shelf Extension on tvOS Open Source project Re:Lax on GitHub CAR Files Compiled asset catalog Theme Engine from Alex CAR file inspector Bill of Materials Tree graph structure Folklore.org Stories from Andy Hertzfeld about his life on the original Macitosh project tvML Blog post - tvOS App Development Changes by Jared Sinclair Special Shoutout to Mark’s collaborated on this project James Rantanen

 118: Dependencies All the Way Down | File Type: audio/mpeg | Duration: 53:10

Discussion: Your App Build Pipeline Dependency management Carthage Punic - Clean room implementation of Carthage CocoaPods SPM Build systems CircleCI Travis XCTool from Facebook Xcode Server Are you using it? Let us know @iohyespodcast Darryl's Pick Punic, Clean room implementation of Carthage

 117: Twenty Out Of Twenty Is Bad | File Type: audio/mpeg | Duration: 32:48

Discussion: Energy Profiler For more info see Ep. 104, Power Struggles Apple really wants us to be good citizens of the battery. Apps that quickly drain the battery will be shunned by users Remember the Facebook background audio “bug” (some say ploy to allow the fb app to stay alive in background) “App as patient” metaphor iOS Energy Gauge / Energy Report provides a high-level overview of energy usage as you test your app Energy logging on phone Good for long periods of data collection Energy Instrument for best results, target an iOS device wirelessly (I wasn’t able to get this working because you need Bonjour and multicast enabled on your wireless network access point) 20 / 20 is bad, 1 / 20 is good Energy experts at Apple recommend Do it never (Do it less) Do it later Use the background activity scheduler APIs Do it more efficiently Picks John This Week in Swift from Natasha the Robot

 116: Jittery Moment | File Type: audio/mpeg | Duration: 51:20

Discussion: Time Profiler But first: a brief rundown of the Instruments UI Toolbar Record/Stop Pause Target Selection Status display Strategy Selection CPU data Instrument data Thread data Detail/inspector toggles Timeline Plots data along the time your app was sampled Can be filtered and zoomed Disclosure arrow can toggle display of just the current run or of all runs in the trace document Detail Contents vary by Instrument, but this will generally be a table with some representation of the sampled data Inspectors Record Settings Display Settings Extended detail (often the heaviest stack trace) What is Time Profiler? An Instrument providing sample-based analysis of an application’s activity Periodically samples the call stack to determine where an app is spending its time These are instantaneous samples. They don’t track the duration of a function call, but rather how many times when sampled was the application currently in said function call. No distinction between a fast function called many times and a slow function called few times Extremely fast functions may not get sampled at all, if they happen to occur in between samples Provides a detail view listing call trees, optionally separated by thread and/or state, allowing the developer to drive down into calls to identify areas that may need to be optimized Weight - Percentage of samples in which a function appeared and an aggregate summary of samples (count * sample interval) Self Weight - Aggregate summary of samples in which the function was at the top of the call stack Symbol Name - The thing represented in the current row (may be a function, method, closure/block, thread, or app) Category Additional columns available: Count Self Count Library Picks John SelfControl Darryl WWDC 2016 Session 418 - Using Time Profiler in Instruments Alternative show title suggestions Try harder n squared complexity my code, vs not my code expected or unexpected notion of runs

 115: Do the Weak-Strong Dance | File Type: audio/mpeg | Duration: 56:30

Discussion - Allocations and Leaks instruments Extraordinarily hard to spot Tough to find offending code without help from tools Unbounded Memory Growth (memory growth without a chance to collect (deallocate) memory True Leaks (retain cycles) Allocations Generation Analysis Tracks allocations still resident when the generation is marked - As you do multiple generations you will see only the new allocations since the last generations Simulate Memory Warning (did it help, do you have anything observing for this?) I have unbounded memory growth, now what? - Look for the biggest offenders (sorting) - Drill into the code and look for ways to release unnecessary allocations Good ‘ol fashion memory management If you’re intentionally holding onto objects, consider implementing an observer for UIApplicationDidReceiveMemoryWarningNotification to release them Leaks / Retain Cycles aka. Strong Reference Cycles Persistent vs. Transient Static Code Analyis Narrow list to your code Use / Observe (detective work) “You’re in the ballpark” now what? Reference counting Weak and Unowned Closure example with capture list; weak and unowned Apple says, “Use a weak reference whenever it is valid for that reference to become nil at some point during its lifetime. Use an unowned reference when you know that the reference will never be nil once it has been set during initialization.” Picks Darryl Visual Debugging with Xcode WWDC 2016 Session 410 demonstrates the use of the new Memory Graph Debugger starting at about 24 minutes in John "Weak, Strong, Unowned, Oh My!" - a Guide to References in Swift by Hector Matos

 114: It's All Unified | File Type: audio/mpeg | Duration: 47:06

Discussion - Notifications in iOS 10 Brief breakdown of WWDC sessions related to notifications What’s New in the Apple Push Notification Service Introduction to Notifications Advanced Notifications New stuff APNS Token-based authentication UserNotifications (and UserNotificationsUI) Framework (Unifies Remote and Local Notifications) Access to user-defined notification settings Expanded content Titles Subtitles Media attachments Scheduling and handling within Extensions In-app presentation Removal/update of pending notifications Dismissal actions Service Extensions APNS Token-based authentication Uses JSON Web Tokens (libraries widely available to assist with token generation) For server-side solutions where using a certificate isn’t practical/feasible Addresses issue of certificate expiration (though tokens also expire, new ones can be generated on the fly) UserNotifications Framework Provides a single notifications API across iOS, watchOS and tvOS iOS: Full support for scheduling and management of notifications watchOS: Support for forwarded notifications and local notifications on the watch tvOS: Support for badging app icons Key components/concepts: UNUserNotificationCenter Authorization requests Scheduling via requests (by providing content and triggers) UNNotificationRequest Identifier Content Trigger UNMutableNotificationContent UNNotificationAttachment Audio Images Video Triggers Push (UNPushNotificationTrigger is not instantiated by apps) UNTimeIntervalNotificationTrigger UNCalendarNotificationTrigger UNLocationNotificationTrigger UNUserNotificationCenterDelegate Protocol userNotificationCenter:willPresentNotification:withCompletionHandler: userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler UNNotificationCategory - defines a type of notification, allows actionable notifications and content extensions UNNotificationAction - represents a task you can perform in response to a notification UNNotificationServiceExtension - Entry point for service extensions. Allows you to process the payload of a push notification before it is presented (eg: end-to-end encryption or notification attachments). Use in conjunction with “mutable-content: 1” in the aps portion of an APNS payload. UserNotificationsUI Framework Provides the UNNotificationContentExtension protocol View controllers adopt this protocol, using the VC’s view to display the notification contents Custom content is sandwiched between a header with the application icon and title and the default notification payload (default payload can be hidden using an attribute in the Info.plist) No user interaction Actions are displayed and extensions can respond to them by intercepting action responses Protocol provides a didRecieveNotification: method you can use to set up UI in response to the notification Picks Darryl New Swift, Core Data and Cocoa Books - Use Your Loaf John List of Public Slack Groups Mr Robot returns to USA Network July 13

 113: Qualified Yeses | File Type: audio/mpeg | Duration: 59:10

John and Darryl recap and grade their WWDC wish-lists and discuss changes to the Human Interface Guidelines for iOS. WWDC Wishlist Scorecard John Get serious about home automation, maybe make Apple TV an automation hub (Half Credit) Siri as a Service (3rd party integration) (Yes) Refactoring for Swift (in Xcode) (No) Announce date to sunset Obj-C (No) Xcode for iPad Pro (Half Credit) Darryl More voice command vocabulary. Something like AppleScript (Half Credit) Make Buttons Great Again (Quarter Credit) Better accessibility hierarchy visualization tools built into Xcode (Three Quarters Credit) Additional accessibility tools for checking things like color contrast. (TBD) Improved dynamic font API (Yes, but not what I’d hoped for) Upgrade pricing/trials (No: but we got clarification on subscriptions on The Talk Show) Faster watch app loading. A way of deferring the most expensive parts? (Yes!) Simulators and Xcode bots for Linux? (Lol) iOS 10 HIG Changes Widgets Available on “Search” and above “Quick Action List” when you 3D touch an icon on Home screen Panning/Scrolling not supported Avoid backgrounds / no background images Allow jump to app, but no “Open App” button. Allow interaction via content Messages Can now integrate with Message by providing a messaging extension Content with Focus and Value Constrained space Simple/Intuitive interface Integration with Siri Don’t Advertise Impersonate Siri Do Minimize visual/touch interactions Respond quickly Take people directly to content Improve accuracy via custom vocabulary Provide example requests Expanded Notifications Detail view Actions that make sense There be dragons, destructive actions Picks Darryl Auto Adjusting Fonts for Dynamic Type Build Phase John Audio-Technica ATH-ANC7B QuietPoint Active Noise-Cancelling Closed-Back Headphones - Wired Alternative show title suggestions Stuck in my craw Return of bezels Cocoa-isims I hate you I’m not a fun person

 112: Wonderful Whisky Drinking Chat 2016 | File Type: audio/mpeg | Duration: 3:18:00

Darryl and Nolan are joined by Amro Mousa and Matt Massicotte to discuss the WWDC 2016 Keynote and Developer State of the Union. Also, Whisky. The Whiskies Mars Iwai Tradition Japanese Whisky Amrut Fusion Single Malt Whisky Laphroaig Single Malt Whisky - 10 Year Keynote Pre-keynote observation Hated the music Apple TV Events app worked fine Tim takes the stage Talks about Orlando, offering sypathies. Called it an act of terrorism and hate. Talks about Apple's diversity Stream restarted Moment of silence where there would normally be an energizing video Bill Graham Auditorium 27th WWDC 13 Million Registered devs, growth of 2M y-t-y 72% first-time attendies 2 Million Apps on App Store $50 Billion paid to developers watchOS (Kevin Lynch) Optimizations to App Launch time!!! Instant response in watchOS 3 Apps stay in memory, support background updates App dock replaces contacts! Swipe up is now Control Center Streamlined notification response workflow Scribble! Handwriting (grafitti?) recognition Improved watch faces Minnie Mouse watch face Activity watch face in 3 variants. Acts kinda like a full-screen complication Numerals Improved face switching with edge to edge swipe Demo Time to first woman on stage: approx. 15 minutes Timer improvements Reminders improvements Find my Friends SOS Press and hold side button, and 911 is called after a countdown, notifies emergency contacts withlocation Watch shows Medical ID info Works internationally (calls the right emergency number) Jay (Blahnic?) Activity sharing: allows you to view friends' activity and send messages Support for Wheelchair users Changes algorithms used to detect movement "Time to roll" notification Wheelchair-specific workouts Breath App Simple deep breathing sessions to calm and reduce stress Supports reminder notifications 1 to 5 minute sessions Supports haptic feedback Summary with time and heart rate New APIs In-app Apple Pay Background workout info SpriteKit & SceneKit Native Events Speaker Audio Inline video Game Center Preview available today, release in Fall tvOS (Eddy Cue) 1300 Video Channels 6000 Apps New Remote App! w/ all the features of the physical remote Siri Search Movies by topic Search YouTube! Live Tune-In ("Watch ESPN 2") iPad and AppleTV Better authentication with Single sign-on Also available on iOS Dark Mode ReplayKit PhotoKit HomeKit Multiplayer Game sessions and more controller support OS X (now macOS) (Craig) Sierra Continuity AutoUnlock - proximity-based unlock of Mac Universal Clipboard iCloud Drive 10 Billion documents today Desktop syncing (and available on iOS) Storage optimization (purges recoverable/unneeded files) Apple Pay on the web Authenticates using TouchID on iPhone Tabs System-wide support for tabs for all multi-windowed apps Picture in Picture Siri Siri button/icon on dock File search with filterable results 200% more snark Result pinning Craig doesn't blink at paying $140 for movie tickets Developer preview today, public beta in July, Release Fall iOS Biggest iOS release ever Experience Redesigned lock screen Raise to wake a la watchOS Notification redesign 3d touch on notifications Rich notification content Clear all Quicker access to camera, widgets and control center 3d touch now supports display of widgets from app icons Siri 2 Billion requests a week Developer API!!! Messaging Slack WhatsApp WeChat Photosearch Workouts Payments VoIP calling Sounds like it's not a complete opening QuickType Intelligent keyboard Deep learning (LSTMs) for completion suggestions Example: "Where are you?" provides option to send location Contextual event creation Photos Places map view Face recognition Object and scene recognition Memories clusters photos into collections that may be relevant Automatically creates a slideshow movie of photos and videos Provides length and mood controls to change editing and music of movie Also on macOS Maps Proactive destinations Destination filtering Continued use of carosel (like the Memories stuff) Accessibility impact? Destinations along your route Alternative routes with time-saving estimations CarPlay gets instrument panel turn-by-turn Map Extensions!! Book Reservations Request a ride Music 15 Million paid subscribers All new design Clarity and simplicity Improved library UI Lyrics Don't make developers participate!!! News 2000 publications, 60 million readers Redesigned For you is categorized, with smart topics Subscriptions Breaking news notifications HomeKit Home app Access to scenes and individual accessory control Integrated into control center Interactive notifications iPhone, iPad, Watch Phone Voicemail Transcription (Kinda like Google Voice) Extension API (detect spam, etc) VoIP API! Side note: https://twitter.com/chockenberry/status/742422670046683137 (Buttons look more like buttons) Messages Most-frequently used app on iOS Rich links Different camera and photo picker. Big emoji (shit) Emojifier Bubble effects Tap-back quick responses Handwriting Digital touch Fullscreen effects Annoying demo https://twitter.com/_DavidSmith/status/742425105809039360 iMessage Apps Stickers Annoying photo manipulation Payment Can I block Jibjab? Differential privacy One more thing: a video :( Developer preview Today, public beta July, release Fall Developers (Tim) Swift playgrounds on iPad (get insight from Amro re: hour of code with his 6 yr old) Developer keyboard Released today with the beta Free First "emotional" Apple video in a while to actually make me emotional Developer State of the Union iMessage Apps Extensions App Store iMessage App Store "Get app" link Sticker art, UIKit Display in the same space as the keyboard would, but can be expanded to fullscreen MSSession, MSConversation, MSMessage Privacy measures Simulator support for viewing both sides of a conversation Siri SiriKit (first version) Speech, Intent, Action, Response Vocabulary Plist for app vocabulary, code for user vocab AppLogic, User Interface Extension, NSUserActivity Example: Hologram Domain, Intent, Recipent, Content Swift 3 Swift on iPad File Format Docs Lesson materials Record sessions Compatible with Xcode playgrounds Xcode 8 Source Editor Active line highlighting Swift color literals Swift image literals Markup generation App Extensions Selection Transforms Pasteboard modification Unified API Reference Fully available offline Interface Builder Design-time effects Device size configuration bar Improved size-class support Canvas operations at any zoom level!! Captured crash logs Test without building Runtime issues UI Threads Thread sanitizer Identify race conditions and more Memory Display object graph Identifies leaks with backtraces to where captures happen Reference Cycle graph Provisioning New signing actions Configuration and issue details Actionable messages Provisioning report Automatic code signing with a dedicated profile Customized code signing per build configuration Platform Compression Open-sourcing lczse Traffic prioritization Logging Unified Levels In memory trace Privacy New console application File Systems HFS+ 18+ years old Apple File System Scalable Modern Flash/SSD Resilient 64-bit Encryption Cloning (copy on write) Fast Zero space File and directories Snapshots Full volume Mountable Supports reverting Coming "Soon". Not specified Differential Privacy Adds noise to individual responses so that individual responses can't be identified Privacy budget limits submissions per period iOS Share app from homescreen via 3D touch Activity based integration Extensions Notifications Service Extension Modifies push payload before notification surfaces. Allows encryption or additional content downloads. Content extensions Widgits New vibrant look Additional compact size iCloud available to all signed apps on macOS Sierra, not just App Store CloudKit Sharing Allows control over who can access data CKShare class governs permissions watchOS Glanceable Actionable Responsive Glances are no longer "necessary" Workout apps run continuously during a workout even with screen off or when in another app Raw access to crown events Gesture recornizers Gyroscope Complications gallery SceneKit/SpritKit tvOS Talking about stuff we already knew, but which wasn't discussed in WWDC2015 Focusable elements TVMLKit Handoff Multipeer connectivity 4 simultaneous game controllers Updated controller policy: can require game controllers Graphics Color Wide Color (P3) gamut APIs Sharing PDF/print System apps Cameras capture deep color API to access DNGs API to capture LivePhotos Metal Games ReplayKit streaming GameCenter invitations via sharing GameCenter sessions GameplayKit Picks Matt: Human Resource Machine Amro: Provenance

 111: Make Buttons Great Again | File Type: audio/mpeg | Duration: 1:01:21

Discussion - WWDC Wish List John Get serious about home automation, maybe make Apple TV an automation hub Siri as a Service (3rd party integration) Refactoring for Swift (in Xcode) Announce date to sunset Obj-C Xcode for iPad Pro Darryl More voice command vocabulary. Something like AppleScript dictionaries? Make Buttons Great Again Better accessibility hierarchy visualization tools built into Xcode Additional accessibility tools for checking things like color contrast. Improved dynamic font API, better support for font replacement in IB Upgrade pricing/trials Faster watch app loading. A way of deferring the most expensive parts? Simulators and Xcode bots for Linux? Past Wish Lists WWDC 2015 New Year’s 2016 Picks Darryl Samuel Ford’s Blog - Discovered as a part of the Swift dynamism conversation. Pretty good stuff. John Multi-Client monitor from Dell

 110: Caveat Apptor | File Type: audio/mpeg | Duration: 1:04:43

Discussion Swift 3.0 To be available later this year * [Winding Down the Swift 3 release - Chris Lattner](http://thread.gmane.org/gmane.comp.lang.swift.evolution/17276) * New “blue sky” proposals will be considered for post-3.0 development (~August) * Generics features (among other dependencies) are preventing the previously-planned ABI stability * ABI stability will come in a later release and is considered of “highest priority” CareKit Why use it? enable people to actively manage their own medical conditions through app-based care plans, and symptom and medication monitoring, while sharing insights with care teams and others you trust Examples: Surgery recovery app Depression treatment app High blood pressure treatment app What is it? open source framework can integrate with ResearchKit able to access HealthKit data, when granted permission ((Opinion)) Why the focus from Apple on Health Apps? Is this a legacy from Steve Jobs? Components of CareKit Care Card Symptom and Measurement Tracker Care Plan Store Insights Documents Connect Privacy concerns Downloader beware. Make sure you understand the privacy policy for the app. Make sure the app is from a reputable source Picks Darryl Writing good code: how to reduce the cognitive load of your code John Start CareKit app for tracking the effectiveness of depression medication

 109: Mistakes Were Made | File Type: audio/mpeg | Duration: 45:15

Discussion Buglife Buglife.com What is it? What was the motivation? How do we incorporate it into our apps? Pricing Core product is free Planned introduction of paid plans for enterprise teams How did you arrive at this strategy? Who did the voiceover for your demo video? Fiverr.com Creating a 3rd-party service and framework for iOS apps You’re not only the primary engineer but also a PM. What is your process for user research and determining a roadmap? Are there any key (and perhaps unexpected) differences from developing first-party applications? How do you obtain information about framework stability as a third-party? (crashes, logging, etc) Picks Dave Making your own Passbook business card - just in time for WWDC! Darryl X-rite Color Munki - Display/monitor calbration (including iOS devices) Testing IBOutlets and IBActions With Curried Functions in Swift Nolan SwiftyBeaver - Swift based logging framework and service John Word Flow Keyboard New keyboard with single handed typing via swipe capabilities

 108: Peeling the Onion on Networking | File Type: audio/mpeg | Duration: 1:15:35

Discussion Testing normal networks (aka, not the US) 62.5% of the world’s 3.2 Billion internet users have 2G connections (or worse). That number is growing. LTE speeds aren’t going to catch up for at least a decade if not much longer. When building robust networking between your client apps and your services, the common case should be the default case. AKA: not WiFi and not LTE. Things that help a great deal: Test on 2G and flaky networks Helps to do real world testing in parking garages, elevators and in transit. Simulation will be the highest reproducible ROI way to test Fail fast and accurately. Timeouts play a part in this. Be dynamic with how you handle the network. Slower speeds should have less networking Use modern tech, like HTTP/2 Defer, defer, defer (and prioritize) Robustly handle errors If at first you don’t succeed, try again! And again and again. Retry policies can get you from one-9 of success to three-9s very simply. Design your network API in a robust manner! Simulating bad connections: Using Network Link Conditioner - iOS and Mac Simulation over WiFi with router firmware Simulation by throttling via your network services with custom headers Simulation in your app by controlling the flow of data being received Expert mode: drop down to the TCP level! Timeouts List of timeouts: TCP: connection timeout (TLS connection timeout too), SYN timeout, keepalive/idle timeout, retransmission timeout NSURL: request timeout (max time between data being received in response - default is 60 seconds), resource timeout (time for entire transfer to complete - default is 7 days) Custom timeouts: transaction timeouts (time from initiation to completion including redirects and retries), queue timeout (how long can the request be queued without starting before it times), idle timeout (how long can a request do nothing regarding upload or download before timeout) NSURLSession has a problem with scale. Every different configuration setting requires another NSURLSession to be maintained and managed. Timeouts, different default headers, different TLS settings, different cookie settings, different NSURLCache, cellular vs non-cellular Robust API design Transactional APIs Robust error codes (not just HTTP status codes!) Retry policies to the rescue Picks Darryl Pain Free Constraints with Layout Anchors - A bit of follow-up from last week’s episode. I felt like John and I were having trouble explaining anchors, and I remembered this article from a few weeks back. Nolan Performance Culture Alternative show title suggestions Just remember: You’re wrong Not all requests are made equal Item potency

 107: Hit the TIE Fighter | File Type: audio/mpeg | Duration: 1:17:58

Discussion Auto Layout Stack Views, FTW (Auto Layout without constraints) (New in iOS 9, similar to what’s available in watchOS and NSStackView, which is available from OS X 10.9) UILayoutGuide New in iOS 9 Defines a rectangular geometry that can interact with Auto Layout Eliminates the need (in many cases, at least) for views that are included solely for layout purposes (container views, spacing views, etc) Views can still provide a greater degree of encapsulation Provide anchors that can be used to generate constraints Anatomy of constraints The layout of your view hierarchy is defined as a series of linear equations. Each constraint represents a single equation. Your goal is to declare a series of equations that has one and only one possible solution. Two basic types of attributes Size attributes (for example, Height and Width) Location attributes (for example, Leading, Left, and Top) The following rules apply: You cannot constrain a size attribute to a location attribute. You cannot assign constant values to location attributes. You cannot use a nonidentity multiplier (a value other than 1.0) with location attributes. For location attributes, you cannot constrain vertical attributes to horizontal attributes. For location attributes, you cannot constrain Leading or Trailing attributes to Left or Right attributes. Rule of Thumb for clarity Whole number multipliers are favored over fractional multipliers. Positive constants are favored over negative constants. Wherever possible, views should appear in layout order: leading to trailing, top to bottom. Constraint Priorities 1000 is required < 1000 is optional Intrinsic Content Size Content Compression Resistance Content Hugging Debugging Auto Layout Error Types Unsatisfiable Layouts. Your layout has no valid solution. Usually 2 or more required constraints conflict Ambiguous Layouts. Your layout has two or more possible solutions. * Need additional constraints conflicting optional constraints Logical Errors. There is a bug in your layout logic. Tips and Tricks take advantage of the logs use meaning identifiers on views and constraints Debug > View Debugging > Show Alignment Rectangles Picks Darryl App Cooker & App Taster - Prototyping tool for Watch, iPhone and iPad apps Nolan We Haven’t Forgotten How To Program Enough John Mysteries of Auto Layout Part 1 and Part 2 from WWDC 2015 My choice for a smart watch, Fitbit Blaze

 106: Push It to the Limit | File Type: audio/mpeg | Duration: 53:08

Discussion Push Notification Overview Notifications Intended for user Certificate required Can be disabled Remote vs. Local Local - schedule by the app on device Best example is Reminders app Schedule by elapsed time or exact time location based Remote - come from your server Actions Interactive Notifications Categories Text Input New type of “Action” Behavior is “.textInput” APNS (Apple Push Notification Service) Device token created by APNS, need to store on server, associated with particular client app Payload must include aps, but can also include custom values, as well Payload “aps dictionary”: alert (string or dictionary), badge, sound, content-available, category Payload alert dictionary: title, body, title-loc-key, title-loc-args, action-loc-key, loc-key, loc-args, launch-image Silent notifications (content-available == 1) wakes your app in the background so that you can fetch data, etc. Feedback service, how to discover tokens that are no longer active Device tokens are 32 bytes, may be increasing to 100 bytes soon New provider API released in 2015 HTTP/2 notification requests to APNS get a response multiplexed binary Notification requests POST json Notification responses 200 OK 400 BAD REQUEST with json payload and reason Instant Feedback Allows you to learn about inactive tokens in the notification response via 410 status code in the response Simplified Certificate Handling Now one certificate for all push actions Push notifications payload size increased from 2KB to 4KB

Comments

Login or signup comment.