diff --git a/ConfCore/Environment.swift b/ConfCore/Environment.swift index 8c43160..d924aef 100644 --- a/ConfCore/Environment.swift +++ b/ConfCore/Environment.swift @@ -73,7 +73,7 @@ extension Environment { public static let test = Environment(baseURL: "http://localhost:9042", videosPath: "/videos.json", - sessionsPath: "/sessions.json", + sessionsPath: "/contents.json", newsPath: "/news.json", liveVideosPath: "/videos_live.json") diff --git a/ConfCore/Session.swift b/ConfCore/Session.swift index 638894f..b771bd5 100644 --- a/ConfCore/Session.swift +++ b/ConfCore/Session.swift @@ -120,6 +120,13 @@ public class Session: Object { self.trackIdentifier = other.trackIdentifier self.staticContentId = other.staticContentId + // merge assets + let assets = other.assets.filter { otherAsset in + return !self.assets.contains(where: { $0.identifier == otherAsset.identifier }) + } + + self.assets.append(objectsIn: assets) + let otherFocuses = other.focuses.map { newFocus -> (Focus) in if newFocus.realm == nil, let existingFocus = realm.object(ofType: Focus.self, forPrimaryKey: newFocus.name) diff --git a/ConfCore/SessionInstance.swift b/ConfCore/SessionInstance.swift index 90e6061..8cb8e88 100644 --- a/ConfCore/SessionInstance.swift +++ b/ConfCore/SessionInstance.swift @@ -133,8 +133,8 @@ public class SessionInstance: Object { self.trackIdentifier = other.trackIdentifier self.eventIdentifier = other.eventIdentifier - if let otherSession = other.session { - self.session = realm.object(ofType: Session.self, forPrimaryKey: otherSession.identifier) + if let otherSession = other.session, let session = self.session { + session.merge(with: otherSession, in: realm) } let otherKeywords = other.keywords.map { newKeyword -> (Keyword) in diff --git a/Fixtures/json_contingency/contents.json b/Fixtures/json_contingency/contents.json new file mode 100644 index 0000000..eaa47f1 Binary files /dev/null and b/Fixtures/json_contingency/contents.json differ diff --git a/Fixtures/json_post_contingency/contents.json b/Fixtures/json_post_contingency/contents.json new file mode 100644 index 0000000..cc62b8c --- /dev/null +++ b/Fixtures/json_post_contingency/contents.json @@ -0,0 +1,18347 @@ +{ + "updated": "2017-05-30T08:29:14-07:00", + "snapshotId": 44, + "events": [{ + "name": "WWDC 2017", + "current": true, + "id": "wwdc2017", + "webUrlKey": "wwdc17", + "startTime": "2017-06-05T10:00:00-07:00", + "endTime": "2017-06-09T16:00:00-07:00", + "imagesPath": "https://devimages-cdn.apple.com/wwdc-services/images/7", + "hashtag": "#WWDC17" + }, { + "name": "WWDC 2016", + "current": false, + "id": "wwdc2016", + "webUrlKey": "wwdc16", + "startTime": "2016-06-13T10:00:00-07:00", + "endTime": "2016-06-17T18:00:00-07:00", + "imagesPath": "https://devimages-cdn.apple.com/wwdc-services/images/1", + "hashtag": "#WWDC 2016" + }, { + "name": "WWDC 2015", + "current": false, + "id": "wwdc2015", + "webUrlKey": "wwdc15", + "startTime": "2015-06-08T10:00:00-07:00", + "endTime": "2015-06-12T18:00:00-07:00", + "imagesPath": "https://devimages-cdn.apple.com/wwdc-services/images/2", + "hashtag": "#WWDC 2015" + }, { + "name": "WWDC 2014", + "current": false, + "id": "wwdc2014", + "webUrlKey": "wwdc14", + "startTime": "2014-06-02T10:00:00-07:00", + "endTime": "2014-06-06T16:00:00-07:00", + "imagesPath": "https://devimages-cdn.apple.com/wwdc-services/images/3", + "hashtag": "#WWDC 2014" + }, { + "name": "WWDC 2013", + "current": false, + "id": "wwdc2013", + "webUrlKey": "wwdc13", + "startTime": "2013-06-10T10:00:00-07:00", + "endTime": "2013-06-14T18:00:00-07:00", + "imagesPath": "https://devimages-cdn.apple.com/wwdc-services/images/4", + "hashtag": "#WWDC 2013" + }], + "contents": [{ + "id": "wwdc2017-4010", + "staticContentId": 1874, + "eventContentId": 4010, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4010", + "description": "To Be Announced", + "title": "👃 Nobody nose what to call this yet.", + "startTime": "2017-06-06T10:00:00-07:00", + "endTime": "2017-06-06T12:00:00-07:00", + "trackId": 5, + "type": "Lab", + "roomId": 71 + }, { + "id": "wwdc2017-8080", + "staticContentId": 1714, + "eventContentId": 8080, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/8080", + "description": "Get advice on making your apps simple to use and more visually compelling. Come prepared with a working prototype, development build or your released app. Appointments are required and limited to one per developer for the duration of the conference. You may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "User Interface Design By Appointment Lab", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T15:30:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 9, + "type": "Lab", + "actionLinkPrompt": "Request appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 7 + }, { + "id": "wwdc2017-4170", + "staticContentId": 1884, + "eventContentId": 4170, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4170", + "description": "To Be Announced", + "title": "🎼 If we told you, we’d get in treble.", + "startTime": "2017-06-08T16:10:00-07:00", + "endTime": "2017-06-08T18:00:00-07:00", + "trackId": 5, + "type": "Lab", + "roomId": 77 + }, { + "id": "wwdc2017-231", + "staticContentId": 1670, + "eventContentId": 231, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/231", + "description": "To Be Announced", + "title": "🛬 Haven’t landed on a name yet.", + "startTime": "2017-06-08T16:10:00-07:00", + "endTime": "2017-06-08T16:50:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-712", + "staticContentId": 1606, + "eventContentId": 712, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/712", + "description": "To Be Announced", + "title": "⛏ We’ve picked a name, but it’s secret.", + "startTime": "2017-06-08T11:00:00-07:00", + "endTime": "2017-06-08T12:00:00-07:00", + "trackId": 7, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-3140", + "staticContentId": 1970, + "eventContentId": 3140, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3140", + "description": "Gain a better understanding of the App Store Review Guidelines so you can plan and build your apps with these important guidelines in mind.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "App Review By Appointment Lab", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 25 + }, { + "id": "wwdc2017-3260", + "staticContentId": 1972, + "eventContentId": 3260, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3260", + "description": "Gain a better understanding of the App Store Review Guidelines so you can plan and build your apps with these important guidelines in mind.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "App Review By Appointment Lab", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T16:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 25 + }, { + "id": "wwdc2017-8010", + "staticContentId": 1711, + "eventContentId": 8010, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/8010", + "description": "Get advice on making your apps simple to use and more visually compelling. Come prepared with a working prototype, development build or your released app. Appointments are required and limited to one per developer for the duration of the conference. You may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "User Interface Design By Appointment Lab", + "startTime": "2017-06-06T10:00:00-07:00", + "endTime": "2017-06-06T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 9, + "type": "Lab", + "actionLinkPrompt": "Request appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 7, + "related": { + "resources": [17, 15, 14, 13, 11, 10] + } + }, { + "id": "wwdc2017-2360", + "staticContentId": 1594, + "eventContentId": 2360, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2360", + "description": "To Be Announced", + "title": "⛽️ Fuel just wait a bit, we’ll tell you.", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T11:00:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 68 + }, { + "id": "wwdc2017-3130", + "staticContentId": 1964, + "eventContentId": 3130, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3130", + "description": "Get help with updating your developer account, managing your development devices and certificates, renewing your membership, and more. Be sure to have your Apple ID, Team ID, and any related information that will help us assist you.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "Apple Developer Program Support By Appointment Lab", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 8 + }, { + "id": "wwdc2017-4210", + "staticContentId": 1935, + "eventContentId": 4210, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4210", + "description": "Join Apple engineering teams as they answer your questions about Swift. Bring your code and your questions.", + "title": "Swift Open Hours", + "startTime": "2017-06-09T12:00:00-07:00", + "endTime": "2017-06-09T13:30:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 5, + "type": "Lab", + "roomId": 70 + }, { + "id": "wwdc2017-3250", + "staticContentId": 1966, + "eventContentId": 3250, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3250", + "description": "Get help with updating your developer account, managing your development devices and certificates, renewing your membership, and more. Be sure to have your Apple ID, Team ID, and any related information that will help us assist you.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "Apple Developer Program Support By Appointment Lab", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T16:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 8 + }, { + "id": "wwdc2017-409", + "staticContentId": 1677, + "eventContentId": 409, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/409", + "description": "To Be Announced", + "title": "🐍 Fangs for your patience.", + "startTime": "2017-06-08T15:10:00-07:00", + "endTime": "2017-06-08T15:50:00-07:00", + "trackId": 5, + "type": "Session", + "roomId": 62, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-3200", + "staticContentId": 1965, + "eventContentId": 3200, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3200", + "description": "Get help with updating your developer account, managing your development devices and certificates, renewing your membership, and more. Be sure to have your Apple ID, Team ID, and any related information that will help us assist you.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "Apple Developer Program Support By Appointment Lab", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 8 + }, { + "id": "wwdc2017-410", + "staticContentId": 1688, + "eventContentId": 410, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/410", + "description": "Localizing a playground book is more than just translation. Explore best practices, potential problem areas, and the unique challenges of localizing educational content. Understand how a localized playground book is structured and hear about the lessons learned by the people who made it happen.", + "title": "Localizing Content for Swift Playgrounds", + "startTime": "2017-06-08T15:10:00-07:00", + "endTime": "2017-06-08T15:50:00-07:00", + "platforms": ["iOS"], + "keywords": ["🌍", "🌎", "🌏", "i18n", "localization", "world"], + "trackId": 5, + "type": "Session", + "roomId": 64, + "images": ["square", "wide"], + "related": { + "activities": ["wwdc2017-416", "wwdc2016-201"] + } + }, { + "id": "wwdc2017-5220", + "staticContentId": 1644, + "eventContentId": 5220, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5220", + "description": "To Be Announced", + "title": "🕴 Still floating a few ideas.", + "startTime": "2017-06-09T13:50:00-07:00", + "endTime": "2017-06-09T16:00:00-07:00", + "trackId": 1, + "type": "Lab", + "roomId": 72 + }, { + "id": "wwdc2017-801", + "staticContentId": 1649, + "eventContentId": 801, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/801", + "description": "To Be Announced", + "title": "😜 说真的,这活动的名字还是假字呢。", + "startTime": "2017-06-06T17:10:00-07:00", + "endTime": "2017-06-06T18:10:00-07:00", + "trackId": 9, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-818", + "staticContentId": 1926, + "eventContentId": 818, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/818", + "description": "To Be Announced", + "title": "😏 Something’s up our sleeve.", + "trackId": 9, + "type": "Video" + }, { + "id": "wwdc2017-7190", + "staticContentId": 1816, + "eventContentId": 7190, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7190", + "description": "To Be Announced", + "title": "👻 Ghoul luck figuring out what we’re planning.", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T12:00:00-07:00", + "trackId": 7, + "type": "Lab", + "roomId": 76 + }, { + "id": "wwdc2017-706", + "staticContentId": 1717, + "eventContentId": 706, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/706", + "description": "To Be Announced", + "title": "⛽️ Fuel just wait a bit, we’ll tell you.", + "startTime": "2017-06-07T11:00:00-07:00", + "endTime": "2017-06-07T12:00:00-07:00", + "trackId": 7, + "type": "Session", + "roomId": 64, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-6010", + "staticContentId": 1860, + "eventContentId": 6010, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/6010", + "description": "Get one-on-one technical assistance and advice from Apple engineers about using Game Center in your titles. Bring your code and your questions.", + "title": "Game Center Lab", + "startTime": "2017-06-06T10:00:00-07:00", + "endTime": "2017-06-06T13:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 8, + "type": "Lab", + "roomId": 72 + }, { + "id": "wwdc2017-247", + "staticContentId": 1937, + "eventContentId": 247, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/247", + "description": "To Be Announced", + "title": "🏧 Can’t tell you at the moment.", + "trackId": 6, + "type": "Video" + }, { + "id": "wwdc2017-3280", + "staticContentId": 1969, + "eventContentId": 3280, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3280", + "description": "Get help with iTunes Connect and features like TestFlight, Sales and Trends, and App Analytics. Receive guidance on responding to customer reviews, offering subscriptions, setting up in-app purchases, uploading builds, in-app purchase receipts, using altool and Transporter, and more.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "iTunes Connect and App Analytics By Appointment Lab", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T16:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 24 + }, { + "id": "wwdc2017-3240", + "staticContentId": 1971, + "eventContentId": 3240, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3240", + "description": "Gain a better understanding of the App Store Review Guidelines so you can plan and build your apps with these important guidelines in mind.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "App Review By Appointment Lab", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 25 + }, { + "id": "wwdc2017-819", + "staticContentId": 1927, + "eventContentId": 819, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/819", + "description": "To Be Announced", + "title": "Not secret anymore haha", + "trackId": 9, + "type": "Video", + "keywords": ["🍔", "🍽", "🏖", "🏝", "🏨", "🐠", "📱", "🚘", "✈️", "apple design", "apple designers", "cross platform", "design", "design best practices", "design principles", "global design", "hi", "hig", "human interface", "ios", "ios design", "mac design"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/101g0jrsvv5qcoduisk/101/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/101g0jrsvv5qcoduisk/101/atv_vod_mvp.m3u8", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/101g0jrsvv5qcoduisk/101/subtitles/eng/101_sd_keynote.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/101g0jrsvv5qcoduisk/101/101_hd_keynote.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/101g0jrsvv5qcoduisk/101/101_sd_keynote.mp4", + "duration": 7370 + } + }, { + "id": "wwdc2017-820", + "staticContentId": 1925, + "eventContentId": 820, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/820", + "description": "To Be Announced", + "title": "👃 Nobody nose what to call this yet.", + "trackId": 9, + "type": "Video" + }, { + "id": "wwdc2017-515", + "staticContentId": 1693, + "eventContentId": 515, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/515", + "description": "To Be Announced", + "title": "🙏 说到活动名称嘛,不可说,不可说。", + "trackId": 1, + "type": "Video" + }, { + "id": "wwdc2017-3160", + "staticContentId": 1973, + "eventContentId": 3160, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3160", + "description": "Receive guidance on choosing the right business model for your app, pricing strategies, discoverability, launch planning, marketing, engaging your users, making the most of your product page, and localizing your app to reach users around the world. Bring any information that will help us assist you, such as a demo of your app or business and marketing plans.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "Business and Marketing By Appointment Lab", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 26 + }, { + "id": "wwdc2017-241", + "staticContentId": 1628, + "eventContentId": 241, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/241", + "description": "To Be Announced", + "title": "🎲 何が出るかな?何が出るかな?", + "startTime": "2017-06-09T11:00:00-07:00", + "endTime": "2017-06-09T11:40:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 64, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-3190", + "staticContentId": 1974, + "eventContentId": 3190, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3190", + "description": "Receive guidance on choosing the right business model for your app, pricing strategies, discoverability, launch planning, marketing, engaging your users, making the most of your product page, and localizing your app to reach users around the world. Bring any information that will help us assist you, such as a demo of your app or business and marketing plans.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "Business and Marketing By Appointment Lab", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 26 + }, { + "id": "wwdc2017-225", + "staticContentId": 1701, + "eventContentId": 225, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/225", + "description": "Safari View Controller provides the easiest and most privacy-conscious way for bringing 3rd-party web content and authentication mechanisms into your app. See the latest features and advances designed to deliver an even more integrated presentation and user experience within your app.", + "title": "What's New in Safari View Controller", + "startTime": "2017-06-08T10:00:00-07:00", + "endTime": "2017-06-08T10:40:00-07:00", + "platforms": ["iOS", "macOS"], + "trackId": 6, + "type": "Session", + "roomId": 64, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-4110", + "staticContentId": 1880, + "eventContentId": 4110, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4110", + "description": "Get expert help on how to use Auto Layout in your apps. Bring your code and talk with Interface Builder, Cocoa, and Cocoa Touch engineers about how to optimally structure your user interface.", + "title": "Advanced Interface Builder and Auto Layout Lab", + "startTime": "2017-06-07T15:10:00-07:00", + "endTime": "2017-06-07T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 5, + "type": "Lab", + "roomId": 77 + }, { + "id": "wwdc2017-3290", + "staticContentId": 1975, + "eventContentId": 3290, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3290", + "description": "Receive guidance on choosing the right business model for your app, pricing strategies, discoverability, launch planning, marketing, engaging your users, making the most of your product page, and localizing your app to reach users around the world. Bring any information that will help us assist you, such as a demo of your app or business and marketing plans.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "Business and Marketing By Appointment Lab", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T16:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 26 + }, { + "id": "wwdc2017-3010", + "staticContentId": 1868, + "eventContentId": 3010, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3010", + "description": "Meet with our Search Ads experts. Learn how to improve discoverability of your app and get answers to any questions about the platform.", + "title": "Search Ads Lab", + "startTime": "2017-06-06T16:10:00-07:00", + "endTime": "2017-06-06T17:10:00-07:00", + "platforms": ["iOS"], + "trackId": 3, + "type": "Lab", + "roomId": 68 + }, { + "id": "wwdc2017-301", + "staticContentId": 1706, + "eventContentId": 301, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/301", + "description": "To Be Announced", + "title": "💅 Haven’t nailed this name yet.", + "startTime": "2017-06-07T11:00:00-07:00", + "endTime": "2017-06-07T12:00:00-07:00", + "trackId": 3, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-3170", + "staticContentId": 1976, + "eventContentId": 3170, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3170", + "description": "Learn how you can be considered for potential promotional opportunities on Apple.com, Apple Retail Stores, Channel, and Broadcast.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "Apple Marketing Communications By Appointment Lab", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 28 + }, { + "id": "wwdc2017-3210", + "staticContentId": 1977, + "eventContentId": 3210, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3210", + "description": "Learn how you can be considered for potential promotional opportunities on Apple.com, Apple Retail Stores, Channel, and Broadcast.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "Apple Marketing Communications By Appointment Lab", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 28 + }, { + "id": "wwdc2017-4060", + "staticContentId": 1885, + "eventContentId": 4060, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4060", + "description": "To Be Announced", + "title": "📍 Haven’t pinned this down yet.", + "startTime": "2017-06-06T16:10:00-07:00", + "endTime": "2017-06-06T18:00:00-07:00", + "trackId": 5, + "type": "Lab", + "roomId": 77 + }, { + "id": "wwdc2017-3270", + "staticContentId": 1978, + "eventContentId": 3270, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3270", + "description": "Learn how you can be considered for potential promotional opportunities on Apple.com, Apple Retail Stores, Channel, and Broadcast.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "Apple Marketing Communications By Appointment Lab", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T16:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 28 + }, { + "id": "wwdc2017-2130", + "staticContentId": 1824, + "eventContentId": 2130, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2130", + "description": "To Be Announced", + "title": "📠 Can’t give you all the fax yet.", + "startTime": "2017-06-07T10:00:00-07:00", + "endTime": "2017-06-07T12:00:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 70 + }, { + "id": "wwdc2017-109", + "staticContentId": 1979, + "eventContentId": 109, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/109", + "description": "Open to all women and advocates for women, these informal breakfast get-togethers are a great way to meet the phenomenal community of women at WWDC, and enjoy a breakfast buffet and coffee to start your day. Catherine Ashcraft, Senior Research Scientist NCWIT, University of Colorado Boulder, will share thoughts from her current research on issues related to gender, diversity, and technology.\r\n\r\nThis event takes place at the Hilton San Jose, in the Market Room, located on street level.", + "title": "Women@WWDC Breakfast Get-Together", + "startTime": "2017-06-07T07:30:00-07:00", + "endTime": "2017-06-07T08:45:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Get-Together", + "roomId": 85 + }, { + "id": "wwdc2017-401", + "staticContentId": 1703, + "eventContentId": 401, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/401", + "description": "To Be Announced", + "title": "🐋 Whale let you know when it’s ready.", + "startTime": "2017-06-06T10:20:00-07:00", + "endTime": "2017-06-06T11:00:00-07:00", + "trackId": 5, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-5210", + "staticContentId": 1723, + "eventContentId": 5210, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5210", + "description": "To Be Announced", + "title": "👪 This name’s not a parent yet.", + "startTime": "2017-06-09T13:50:00-07:00", + "endTime": "2017-06-09T16:00:00-07:00", + "trackId": 1, + "type": "Lab", + "roomId": 67 + }, { + "id": "wwdc2017-7030", + "staticContentId": 1615, + "eventContentId": 7030, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7030", + "description": "To Be Announced", + "title": "😶 Session name: Poker Face.", + "startTime": "2017-06-06T16:10:00-07:00", + "endTime": "2017-06-06T18:00:00-07:00", + "trackId": 7, + "type": "Lab", + "roomId": 76 + }, { + "id": "wwdc2017-2190", + "staticContentId": 1904, + "eventContentId": 2190, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2190", + "description": "To Be Announced", + "title": "🔨 Für diese Session Hammer noch keinen Namen.", + "startTime": "2017-06-07T15:10:00-07:00", + "endTime": "2017-06-07T18:00:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 75 + }, { + "id": "wwdc2017-7160", + "staticContentId": 1609, + "eventContentId": 7160, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7160", + "description": "To Be Announced", + "title": "👗 We’ll a dress this session name later.", + "startTime": "2017-06-08T16:10:00-07:00", + "endTime": "2017-06-08T17:40:00-07:00", + "trackId": 7, + "type": "Lab", + "roomId": 76 + }, { + "id": "wwdc2017-2420", + "staticContentId": 1903, + "eventContentId": 2420, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2420", + "description": "To Be Announced", + "title": "🍛 Name’s coming. What’s your curry?", + "startTime": "2017-06-09T12:00:00-07:00", + "endTime": "2017-06-09T13:50:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 69 + }, { + "id": "wwdc2017-229", + "staticContentId": 1506, + "eventContentId": 229, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/229", + "description": "To Be Announced", + "title": "👾 Just saving this space.", + "startTime": "2017-06-08T13:50:00-07:00", + "endTime": "2017-06-08T14:50:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 62, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-2030", + "staticContentId": 1748, + "eventContentId": 2030, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2030", + "description": "The tvOS SDK allows you to create and build amazing apps and games for the big screen. And with TVMLKit you can easily and quickly develop native tvOS apps that are backed by XML templates and JavaScript logic. Get one-on-one technical guidance from Apple engineers about your own apps. Bring your code and your questions.", + "title": "tvOS Lab", + "startTime": "2017-06-06T12:00:00-07:00", + "endTime": "2017-06-06T13:50:00-07:00", + "platforms": ["tvOS"], + "trackId": 6, + "type": "Lab", + "roomId": 75 + }, { + "id": "wwdc2017-2140", + "staticContentId": 1736, + "eventContentId": 2140, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2140", + "description": "To Be Announced", + "title": "🏔 This is only meant to peak your interest.", + "startTime": "2017-06-07T11:00:00-07:00", + "endTime": "2017-06-07T13:00:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 69 + }, { + "id": "wwdc2017-411", + "staticContentId": 1715, + "eventContentId": 411, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/411", + "description": "To Be Announced", + "title": "🍳 Still cooking this session up.", + "startTime": "2017-06-08T16:10:00-07:00", + "endTime": "2017-06-08T16:50:00-07:00", + "trackId": 5, + "type": "Session", + "roomId": 62, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-2330", + "staticContentId": 1722, + "eventContentId": 2330, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2330", + "description": "Well-executed typography is essential to good user interface design. Work with Apple engineers on best practices for using Text Kit or Core Text in your apps. Get advice on achieving complex text layouts, and learn how to use text and fonts to create compelling interfaces. Bring your code and your questions.", + "title": "Text and Fonts Lab", + "startTime": "2017-06-08T13:50:00-07:00", + "endTime": "2017-06-08T15:50:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["nslayoutmanager", "nstextcontainer", "nstextstorage", "uilabel", "uitextfield", "uitextview"], + "trackId": 6, + "type": "Lab", + "roomId": 74 + }, { + "id": "wwdc2017-1030", + "staticContentId": 1728, + "eventContentId": 1030, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/1030", + "description": "Reserve time in our fully outfitted studio to record the latest episode of your audio podcast, right here at WWDC. Each 60 minute session can accommodate up to four contributors, with Apple experts on hand to help get your session up and running. You will receive a copy of your session for post-production and distribution.\r\n\r\nYou may request a reservation beginning at 7 a.m. for that day only. Reservations fill quickly.", + "title": "Apple Podcasts Studio", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T18:00:00-07:00", + "platforms": ["iOS", "macOS"], + "trackId": 4, + "type": "Lab", + "actionLinkPrompt": "Request reservation", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 60 + }, { + "id": "wwdc2017-5180", + "staticContentId": 1752, + "eventContentId": 5180, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5180", + "description": "To Be Announced", + "title": "⛄️⛄️ Snow mention of this name yet.", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T11:00:00-07:00", + "trackId": 1, + "type": "Lab", + "roomId": 67 + }, { + "id": "wwdc2017-124", + "staticContentId": 1981, + "eventContentId": 124, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/124", + "description": "Open to all women and advocates for women, these informal breakfast get-togethers are a great way to meet the phenomenal community of women at WWDC, and enjoy a breakfast buffet and coffee to start your day. On Friday, join us for an inspirational panel discussion with some of the WWDC scholarship recipients, moderated by Katherine Poulter, Software Engineer, Apple Developer Publications.\r\n\r\nThis event takes place at the Hilton San Jose, in the Market Room, located on street level.", + "title": "Women@WWDC Breakfast Get-Together", + "startTime": "2017-06-09T07:30:00-07:00", + "endTime": "2017-06-09T08:45:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Get-Together", + "roomId": 85 + }, { + "id": "wwdc2017-3100", + "staticContentId": 1946, + "eventContentId": 3100, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3100", + "description": "Get help with updating your developer account, managing your development devices and certificates, renewing your membership, and more. Be sure to have your Apple ID, Team ID, and any related information that will help us assist you.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "Apple Developer Program Support By Appointment Lab", + "startTime": "2017-06-06T10:00:00-07:00", + "endTime": "2017-06-06T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 8 + }, { + "id": "wwdc2017-251", + "staticContentId": 1929, + "eventContentId": 251, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/251", + "description": "To Be Announced", + "title": "👠 活动名会晚点出来,因为起名的人脚崴了。", + "trackId": 6, + "type": "Video" + }, { + "id": "wwdc2017-8060", + "staticContentId": 1720, + "eventContentId": 8060, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/8060", + "description": "Find out how to make your apps accessible and easy to use for everyone. Learn the basics of VoiceOver and other accessibility features to better understand how customers with varying needs use your products. Come prepared with a working prototype, development build, or your released app.\r\n\r\nAppointments are required and limited to one per developer for the duration of the conference. You may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "Accessibility Design By Appointment Lab", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 9, + "type": "Lab", + "actionLinkPrompt": "Request appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 27 + }, { + "id": "wwdc2017-3050", + "staticContentId": 1829, + "eventContentId": 3050, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3050", + "description": "Meet the engineers creating the technologies to configure, deploy, and manage Apple devices in business and education. If you're a SysAdmin or educator deploying macOS, iOS and tvOS in your environment, this lab will help answer questions and guide you through the process. Learn best practices for integrating custom apps in your IT environment, development considerations and deployment of Shared iPad, and the latest techniques for distributing apps and Apple hardware within your organization.", + "title": "Device Configuration, Deployment, and Management Lab", + "startTime": "2017-06-08T15:10:00-07:00", + "endTime": "2017-06-08T17:10:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "roomId": 75 + }, { + "id": "wwdc2017-3120", + "staticContentId": 1951, + "eventContentId": 3120, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3120", + "description": "Gain a better understanding of the App Store Review Guidelines so you can plan and build your apps with these important guidelines in mind.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "App Review By Appointment Lab", + "startTime": "2017-06-06T10:00:00-07:00", + "endTime": "2017-06-06T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 25 + }, { + "id": "wwdc2017-7170", + "staticContentId": 1822, + "eventContentId": 7170, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7170", + "description": "To Be Announced", + "title": "📍 Haven’t pinned this down yet.", + "startTime": "2017-06-08T16:10:00-07:00", + "endTime": "2017-06-08T18:00:00-07:00", + "trackId": 7, + "type": "Lab", + "roomId": 69 + }, { + "id": "wwdc2017-7240", + "staticContentId": 1897, + "eventContentId": 7240, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7240", + "description": "To Be Announced", + "title": "🐎 Hold your horses. We can’t tell you yet.", + "startTime": "2017-06-09T13:50:00-07:00", + "endTime": "2017-06-09T16:00:00-07:00", + "trackId": 7, + "type": "Lab", + "roomId": 70 + }, { + "id": "wwdc2017-7010", + "staticContentId": 1821, + "eventContentId": 7010, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7010", + "description": "To Be Announced", + "title": "🙃 You’ll flip when this is revealed.", + "startTime": "2017-06-06T10:00:00-07:00", + "endTime": "2017-06-06T13:50:00-07:00", + "trackId": 7, + "type": "Lab", + "roomId": 76 + }, { + "id": "wwdc2017-3150", + "staticContentId": 1967, + "eventContentId": 3150, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3150", + "description": "Get help with iTunes Connect and features like TestFlight, Sales and Trends, and App Analytics. Receive guidance on responding to customer reviews, offering subscriptions, setting up in-app purchases, uploading builds, in-app purchase receipts, using altool and Transporter, and more.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "iTunes Connect and App Analytics By Appointment Lab", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 24 + }, { + "id": "wwdc2017-8020", + "staticContentId": 1718, + "eventContentId": 8020, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/8020", + "description": "Find out how to make your apps accessible and easy to use for everyone. Learn the basics of VoiceOver and other accessibility features to better understand how customers with varying needs use your products. Come prepared with a working prototype, development build, or your released app.\r\n\r\nAppointments are required and limited to one per developer for the duration of the conference. You may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "Accessibility Design By Appointment Lab", + "startTime": "2017-06-06T10:00:00-07:00", + "endTime": "2017-06-06T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 9, + "type": "Lab", + "actionLinkPrompt": "Request appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 27 + }, { + "id": "wwdc2017-408", + "staticContentId": 1680, + "eventContentId": 408, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/408", + "description": "To Be Announced", + "title": "🙊 Mmmph.", + "startTime": "2017-06-08T10:00:00-07:00", + "endTime": "2017-06-08T10:40:00-07:00", + "trackId": 5, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-5120", + "staticContentId": 1846, + "eventContentId": 5120, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5120", + "description": "To Be Announced", + "title": "🍛 Name’s coming. What’s your curry?", + "startTime": "2017-06-07T15:10:00-07:00", + "endTime": "2017-06-07T18:00:00-07:00", + "trackId": 1, + "type": "Lab", + "roomId": 72 + }, { + "id": "wwdc2017-6130", + "staticContentId": 1857, + "eventContentId": 6130, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/6130", + "description": "To Be Announced", + "title": "🐻 Hope you can bear the wait.", + "startTime": "2017-06-09T12:00:00-07:00", + "endTime": "2017-06-09T14:30:00-07:00", + "trackId": 8, + "type": "Lab", + "roomId": 73 + }, { + "id": "wwdc2017-6100", + "staticContentId": 1854, + "eventContentId": 6100, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/6100", + "description": "To Be Announced", + "title": "😉 Trust us. It’s a good one.", + "startTime": "2017-06-08T12:00:00-07:00", + "endTime": "2017-06-08T15:00:00-07:00", + "trackId": 8, + "type": "Lab", + "roomId": 67 + }, { + "id": "wwdc2017-3230", + "staticContentId": 1948, + "eventContentId": 3230, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3230", + "description": "Find out what is required for your apps to comply with the U.S. Export Regulations for encryption and get details on how Apple reviews apps that use encryption technologies.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "Export Compliance By Appointment Lab", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 29 + }, { + "id": "wwdc2017-6050", + "staticContentId": 1856, + "eventContentId": 6050, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/6050", + "description": "To Be Announced", + "title": "🌁 We’re a little foggy on this one.", + "startTime": "2017-06-07T13:00:00-07:00", + "endTime": "2017-06-07T16:10:00-07:00", + "trackId": 8, + "type": "Lab", + "roomId": 73 + }, { + "id": "wwdc2017-2170", + "staticContentId": 1739, + "eventContentId": 2170, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2170", + "description": "To Be Announced", + "title": "🎲 何が出るかな?何が出るかな?", + "startTime": "2017-06-07T13:00:00-07:00", + "endTime": "2017-06-07T15:10:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 69 + }, { + "id": "wwdc2017-3090", + "staticContentId": 1954, + "eventContentId": 3090, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3090", + "description": "Get help with iTunes Connect and features like TestFlight, Sales and Trends, and App Analytics. Receive guidance on responding to customer reviews, offering subscriptions, setting up in-app purchases, uploading builds, in-app purchase receipts, using altool and Transporter, and more.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "iTunes Connect and App Analytics By Appointment Lab", + "startTime": "2017-06-06T10:00:00-07:00", + "endTime": "2017-06-06T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 24 + }, { + "id": "wwdc2017-609", + "staticContentId": 1667, + "eventContentId": 609, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/609", + "description": "To Be Announced", + "title": "🌁 We’re a little foggy on this one.", + "startTime": "2017-06-09T10:00:00-07:00", + "endTime": "2017-06-09T10:40:00-07:00", + "trackId": 8, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-245", + "staticContentId": 1559, + "eventContentId": 245, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/245", + "description": "To Be Announced", + "title": "🍦 Thank you froyo patience.", + "startTime": "2017-06-09T13:50:00-07:00", + "endTime": "2017-06-09T14:30:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-226", + "staticContentId": 1617, + "eventContentId": 226, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/226", + "description": "To Be Announced", + "title": "⛵️ We’ll tell you schooner or later.", + "startTime": "2017-06-08T10:00:00-07:00", + "endTime": "2017-06-08T10:40:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-3180", + "staticContentId": 1949, + "eventContentId": 3180, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3180", + "description": "Learn how you can put your apps at the top of relevant search results and get details on implementing Search Ads.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "Search Ads By Appointment Lab", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T18:00:00-07:00", + "platforms": ["iOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 29 + }, { + "id": "wwdc2017-2300", + "staticContentId": 1866, + "eventContentId": 2300, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2300", + "description": "To Be Announced", + "title": "😲 Voilà votre tête quand on vous dira ce que c’est…", + "startTime": "2017-06-08T15:10:00-07:00", + "endTime": "2017-06-08T18:00:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 68 + }, { + "id": "wwdc2017-511", + "staticContentId": 1708, + "eventContentId": 511, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/511", + "description": "To Be Announced", + "title": "🚝 We’re rail excited to tell you.", + "startTime": "2017-06-09T11:00:00-07:00", + "endTime": "2017-06-09T12:00:00-07:00", + "trackId": 1, + "type": "Session", + "roomId": 62, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-5240", + "staticContentId": 1982, + "eventContentId": 5240, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5240", + "description": "PhotoKit provides all the API needed to enable rich, high-performing integration with user's photo libraries within your app. For web based applications, there is the new LivePhotosKit JS support that enables proper presentation of Live Photo content. Get one-on-one technical guidance from Apple engineers on how to use these frameworks with in your app. Bring your code and your questions.", + "title": "iCloud Photo Library \u0026 PhotoKit Lab", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T11:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS"], + "trackId": 1, + "type": "Lab", + "roomId": 73 + }, { + "id": "wwdc2017-202", + "staticContentId": 1656, + "eventContentId": 202, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/202", + "description": "To Be Announced", + "title": "🙊 Mmmph.", + "startTime": "2017-06-06T11:20:00-07:00", + "endTime": "2017-06-06T12:00:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-7180", + "staticContentId": 1850, + "eventContentId": 7180, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7180", + "description": "To Be Announced", + "title": "🎱 Ask again later.", + "startTime": "2017-06-08T16:10:00-07:00", + "endTime": "2017-06-08T18:00:00-07:00", + "trackId": 7, + "type": "Lab", + "roomId": 70 + }, { + "id": "wwdc2017-6140", + "staticContentId": 1955, + "eventContentId": 6140, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/6140", + "description": "To Be Announced", + "title": "Not secret anymore haha", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T12:00:00-07:00", + "trackId": 8, + "type": "Lab", + "roomId": 72, + "keywords": ["🍔", "🍽", "🏖", "🏝", "🏨", "🐠", "📱", "🚘", "✈️", "apple design", "apple designers", "cross platform", "design", "design best practices", "design principles", "global design", "hi", "hig", "human interface", "ios", "ios design", "mac design"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/101g0jrsvv5qcoduisk/101/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/101g0jrsvv5qcoduisk/101/atv_vod_mvp.m3u8", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/101g0jrsvv5qcoduisk/101/subtitles/eng/101_sd_keynote.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/101g0jrsvv5qcoduisk/101/101_hd_keynote.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/101g0jrsvv5qcoduisk/101/101_sd_keynote.mp4", + "duration": 7370 + } + }, { + "id": "wwdc2017-1010", + "staticContentId": 1726, + "eventContentId": 1010, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/1010", + "description": "Reserve time in our fully outfitted studio to record the latest episode of your audio podcast, right here at WWDC. Each 60 minute session can accommodate up to four contributors, with Apple experts on hand to help get your session up and running. You will receive a copy of your session for post-production and distribution.\r\n\r\nYou may request a reservation beginning at 7 a.m. for that day only. Reservations fill quickly.", + "title": "Apple Podcasts Studio", + "startTime": "2017-06-06T10:00:00-07:00", + "endTime": "2017-06-06T18:00:00-07:00", + "platforms": ["iOS", "macOS"], + "trackId": 4, + "type": "Lab", + "actionLinkPrompt": "Request reservation", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 60 + }, { + "id": "wwdc2017-3080", + "staticContentId": 1952, + "eventContentId": 3080, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3080", + "description": "Receive guidance on choosing the right business model for your app, pricing strategies, discoverability, launch planning, marketing, engaging your users, making the most of your product page, and localizing your app to reach users around the world. Bring any information that will help us assist you, such as a demo of your app or business and marketing plans.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "Business and Marketing By Appointment Lab", + "startTime": "2017-06-06T10:00:00-07:00", + "endTime": "2017-06-06T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 26 + }, { + "id": "wwdc2017-3110", + "staticContentId": 1953, + "eventContentId": 3110, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3110", + "description": "Learn how you can be considered for potential promotional opportunities on Apple.com, Apple Retail Stores, Channel, and Broadcast.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "Apple Marketing Communications By Appointment Lab", + "startTime": "2017-06-06T10:00:00-07:00", + "endTime": "2017-06-06T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 28 + }, { + "id": "wwdc2017-224", + "staticContentId": 1654, + "eventContentId": 224, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/224", + "description": "To Be Announced", + "title": "🐋 Whale let you know when it’s ready.", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T09:40:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 64, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-246", + "staticContentId": 1704, + "eventContentId": 246, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/246", + "description": "To Be Announced", + "title": "👾 Just saving this space.", + "trackId": 6, + "type": "Video" + }, { + "id": "wwdc2017-2460", + "staticContentId": 1983, + "eventContentId": 2460, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2460", + "description": "Whether you are new to development or just new to Apple's platforms, knowing how to get started building apps can sometimes be a daunting task. Get help taking that first step with insights and tips from Apple engineers. See how Swift Playgrounds can ease the onramp to learning to code. Talk with members of our Developer Publications team to understand how to get the most out of our documentation. Be inspired by the engineers that build many of the apps included in iOS and macOS about best practices for building apps. Bring your ideas, questions, and code!", + "title": "New to Apple Platforms Lab", + "startTime": "2017-06-06T10:20:00-07:00", + "endTime": "2017-06-06T12:40:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["🍼", "🐣", "🐤", "🐥", "👶", "💻", "🖥", "beginner", "learn", "n00b", "noob"], + "trackId": 6, + "type": "Lab", + "roomId": 69 + }, { + "id": "wwdc2017-7250", + "staticContentId": 1963, + "eventContentId": 7250, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7250", + "description": "Meet with the Maps and Location engineers to discuss how you can leverage the MapKit and CoreLocation APIs in your app. Get details and advice on using new map and annotation features and best practices for providing location-based features in a power efficient and privacy conscious manner.", + "title": "Location and Mapping Technologies Lab", + "startTime": "2017-06-07T11:00:00-07:00", + "endTime": "2017-06-07T13:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 7, + "type": "Lab", + "roomId": 68 + }, { + "id": "wwdc2017-2280", + "staticContentId": 1750, + "eventContentId": 2280, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2280", + "description": "The tvOS SDK allows you to create and build amazing apps and games for the big screen. And with TVMLKit you can easily and quickly develop native tvOS apps that are backed by XML templates and JavaScript logic. Get one-on-one technical guidance from Apple engineers about your own apps. Bring your code and your questions.", + "title": "tvOS Lab", + "startTime": "2017-06-08T11:00:00-07:00", + "endTime": "2017-06-08T13:00:00-07:00", + "platforms": ["tvOS"], + "trackId": 6, + "type": "Lab", + "roomId": 75 + }, { + "id": "wwdc2017-3220", + "staticContentId": 1968, + "eventContentId": 3220, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3220", + "description": "Get help with iTunes Connect and features like TestFlight, Sales and Trends, and App Analytics. Receive guidance on responding to customer reviews, offering subscriptions, setting up in-app purchases, uploading builds, in-app purchase receipts, using altool and Transporter, and more.\r\n\r\nYou may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "iTunes Connect and App Analytics By Appointment Lab", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "actionLinkPrompt": "Request Appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 24 + }, { + "id": "wwdc2017-2090", + "staticContentId": 1907, + "eventContentId": 2090, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2090", + "description": "Meet with Apple engineers about writing high performance and energy-efficient code. Figure out what is using up that battery capacity, and what you can do about it! Come prepared to have your questions about power and performance answered.", + "title": "Power and Performance Lab", + "startTime": "2017-06-06T16:10:00-07:00", + "endTime": "2017-06-06T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 6, + "type": "Lab", + "roomId": 74 + }, { + "id": "wwdc2017-2200", + "staticContentId": 1592, + "eventContentId": 2200, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2200", + "description": "If you have an app on Apple Watch, it's vital that people always see up-to-date information whether your app is in their Dock or on their Watch face. Swing by and work with one of our watchOS frameworks engineers to answer any questions you have about WatchKit development or background app refresh.", + "title": "Background Updates and WatchKit Lab", + "startTime": "2017-06-07T15:10:00-07:00", + "endTime": "2017-06-07T18:00:00-07:00", + "platforms": ["watchOS"], + "keywords": ["⌚️", "clockkit"], + "trackId": 6, + "type": "Lab", + "roomId": 74, + "related": { + "activities": ["wwdc2017-808", "wwdc2017-2020"], + "resources": [9] + } + }, { + "id": "wwdc2017-2150", + "staticContentId": 1749, + "eventContentId": 2150, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2150", + "description": "The tvOS SDK allows you to create and build amazing apps and games for the big screen. And with TVMLKit you can easily and quickly develop native tvOS apps that are backed by XML templates and JavaScript logic. Get one-on-one technical guidance from Apple engineers about your own apps. Bring your code and your questions.", + "title": "tvOS Lab", + "startTime": "2017-06-07T11:00:00-07:00", + "endTime": "2017-06-07T14:00:00-07:00", + "platforms": ["tvOS"], + "trackId": 6, + "type": "Lab", + "roomId": 74 + }, { + "id": "wwdc2017-2440", + "staticContentId": 1738, + "eventContentId": 2440, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2440", + "description": "Meet with Apple engineers to have your questions about AppKit and Foundation answered. Bring your laptop and your code to work one-on-one and resolve any issues or questions you may have.", + "title": "Cocoa Lab", + "startTime": "2017-06-09T13:50:00-07:00", + "endTime": "2017-06-09T15:20:00-07:00", + "platforms": ["iOS", "macOS"], + "trackId": 6, + "type": "Lab", + "roomId": 68 + }, { + "id": "wwdc2017-606", + "staticContentId": 1653, + "eventContentId": 606, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/606", + "description": "To Be Announced", + "title": "🐾 This session name’s on paws.", + "startTime": "2017-06-09T10:00:00-07:00", + "endTime": "2017-06-09T10:40:00-07:00", + "trackId": 8, + "type": "Session", + "roomId": 62, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-4090", + "staticContentId": 1870, + "eventContentId": 4090, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4090", + "description": "Stop by during Open Hours to talk with Apple engineers about things you learned during the week, to get answers to questions about new technologies you're experimenting with, or to find a fix for a difficult bug.", + "title": "Xcode Open Hours", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T12:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 5, + "type": "Lab", + "roomId": 77 + }, { + "id": "wwdc2017-2270", + "staticContentId": 1735, + "eventContentId": 2270, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2270", + "description": "To Be Announced", + "title": "🚇 This name’s still underground.", + "startTime": "2017-06-08T11:00:00-07:00", + "endTime": "2017-06-08T13:00:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 69 + }, { + "id": "wwdc2017-804", + "staticContentId": 1639, + "eventContentId": 804, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/804", + "description": "Learn techniques for determining which Apple platforms are right for your app and how to create a great user experience by designing for the unique capabilities and strengths of each platform.", + "title": "Designing Across Platforms", + "startTime": "2017-06-08T16:10:00-07:00", + "endTime": "2017-06-08T16:50:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["apple design", "apple designers", "apple tv", "apple watch", "cross platform", "design", "design best practices", "hi", "hig", "human interface", "ios design", "ipad", "iphone", "multiple platforms"], + "trackId": 9, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-4020", + "staticContentId": 1869, + "eventContentId": 4020, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4020", + "description": "Stop by during Open Hours to talk with Apple engineers about things you learned during the week, to get answers to questions about new technologies you're experimenting with, or to find a fix for a difficult bug.", + "title": "Xcode Open Hours", + "startTime": "2017-06-06T10:00:00-07:00", + "endTime": "2017-06-06T13:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 5, + "type": "Lab", + "roomId": 77 + }, { + "id": "wwdc2017-120", + "staticContentId": 1960, + "eventContentId": 120, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/120", + "description": "Watch A Beautiful Planet, an IMAX adventure at the Tech Museum of Innovation, just a few blocks away from the McEnery Convention Center. Seating is limited. To enter, you’ll need your badge, wristband, and a ticket that you can pick up free of charge at Attendee Services starting Tuesday.", + "title": "Movie Night", + "startTime": "2017-06-07T19:00:00-07:00", + "endTime": "2017-06-07T22:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Special Event", + "roomId": 82 + }, { + "id": "wwdc2017-803", + "staticContentId": 1638, + "eventContentId": 803, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/803", + "description": "Design is not just about what people see, it’s also about what they hear. Learn about how sound design can help you create a more immersive, usable and meaningful user experience in your app or game, and get a glimpse of how the sounds in Apple products are created.", + "title": "Designing Sound", + "startTime": "2017-06-07T16:10:00-07:00", + "endTime": "2017-06-07T16:50:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["🎧", "🎵", "🎶", "🎼", "📱", "🔇", "🔈", "🔉", "🔊", "🔔", "🔕", "🗣", "apple design", "apple designers", "design", "design best practices", "design demo", "ios design", "sound design"], + "trackId": 9, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-105", + "staticContentId": 1957, + "eventContentId": 105, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/105", + "description": "To Be Announced", + "title": "🐝 To bee determined.", + "startTime": "2017-06-06T09:00:00-07:00", + "endTime": "2017-06-06T10:00:00-07:00", + "trackId": 4, + "type": "Special Event", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-2340", + "staticContentId": 1737, + "eventContentId": 2340, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2340", + "description": "Core Data is a framework that manages object graphs, relationships, and persistence of those objects. Apple engineers will be on hand to answer questions about Core Data and how it reduces the amount of code you have to write to manage your model. We're here to help you get answers, learn about the latest development techniques and tools, and improve your code and apps.", + "title": "Core Data Lab", + "startTime": "2017-06-08T16:10:00-07:00", + "endTime": "2017-06-08T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 6, + "type": "Lab", + "roomId": 74 + }, { + "id": "wwdc2017-2210", + "staticContentId": 1740, + "eventContentId": 2210, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2210", + "description": "Core Data is a framework that manages object graphs, relationships, and persistence of those objects. Apple engineers will be on hand to answer questions about Core Data and how it reduces the amount of code you have to write to manage your model. We're here to help you get answers, learn about the latest development techniques and tools, and improve your code and apps.", + "title": "Core Data Lab", + "startTime": "2017-06-07T15:10:00-07:00", + "endTime": "2017-06-07T17:40:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 6, + "type": "Lab", + "roomId": 69 + }, { + "id": "wwdc2017-506", + "staticContentId": 1618, + "eventContentId": 506, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/506", + "description": "To Be Announced", + "title": "👪 This name’s not a parent yet.", + "startTime": "2017-06-07T15:10:00-07:00", + "endTime": "2017-06-07T15:50:00-07:00", + "trackId": 1, + "type": "Session", + "roomId": 62, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-5100", + "staticContentId": 1751, + "eventContentId": 5100, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5100", + "description": "To Be Announced", + "title": "🎁 This one’s under wraps.", + "startTime": "2017-06-07T11:00:00-07:00", + "endTime": "2017-06-07T13:00:00-07:00", + "trackId": 1, + "type": "Lab", + "roomId": 67 + }, { + "id": "wwdc2017-2470", + "staticContentId": 1984, + "eventContentId": 2470, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2470", + "description": "Whether you are new to development or just new to Apple's platforms, knowing how to get started building apps can sometimes be a daunting task. Get help taking that first step with insights and tips from Apple engineers. See how Swift Playgrounds can ease the onramp to learning to code. Talk with members of our Developer Publications team to understand how to get the most out of our documentation. Be inspired by the engineers that build many of the apps included in iOS and macOS about best practices for building apps. Bring your ideas, questions, and code!", + "title": "New to Apple Platforms Lab", + "startTime": "2017-06-08T13:00:00-07:00", + "endTime": "2017-06-08T15:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["🍼", "🐣", "🐤", "🐥", "👶", "💻", "🖥", "beginner", "learn", "n00b", "noob"], + "trackId": 6, + "type": "Lab", + "roomId": 68 + }, { + "id": "wwdc2017-416", + "staticContentId": 1687, + "eventContentId": 416, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/416", + "description": "Teaching can be difficult and teaching programming can be even harder — it's abstract and concrete at the same time, and you must help the learner build a mental model of what code really does. Find out how the Swift Playgrounds content team works through the teaching process, from idea to finished playground. We'll cover lessons learned building the Learn to Code series, and tips and methods we've developed to streamline our current workflow. Come away with valuable teaching insights and a great head start on building your own instructional content.", + "title": "Teaching with Swift Playgrounds", + "startTime": "2017-06-09T14:50:00-07:00", + "endTime": "2017-06-09T15:30:00-07:00", + "platforms": ["iOS"], + "trackId": 5, + "type": "Session", + "roomId": 62, + "images": ["square", "wide"], + "related": { + "activities": ["wwdc2017-410"] + } + }, { + "id": "wwdc2017-108", + "staticContentId": 1958, + "eventContentId": 108, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/108", + "description": "To Be Announced", + "title": "🐍 Fangs for your patience.", + "startTime": "2017-06-06T18:30:00-07:00", + "endTime": "2017-06-06T19:30:00-07:00", + "trackId": 4, + "type": "Special Event", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-8040", + "staticContentId": 1712, + "eventContentId": 8040, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/8040", + "description": "Get advice on making your apps simple to use and more visually compelling. Come prepared with a working prototype, development build or your released app. Appointments are required and limited to one per developer for the duration of the conference. You may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "User Interface Design By Appointment Lab", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 9, + "type": "Lab", + "actionLinkPrompt": "Request appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 7 + }, { + "id": "wwdc2017-811", + "staticContentId": 1923, + "eventContentId": 811, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/811", + "description": "To Be Announced", + "title": "📡 Can’t dish on this yet.", + "trackId": 9, + "type": "Video" + }, { + "id": "wwdc2017-107", + "staticContentId": 1961, + "eventContentId": 107, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/107", + "description": "Enjoy live music, and a selection of local beers in front of the McEnery Convention Center. To enter, you’ll need your badge and wristband. Attendees 21 years and older will need to present government-issued photo ID to drink alcohol.", + "title": "Music in the Plaza", + "startTime": "2017-06-06T18:00:00-07:00", + "endTime": "2017-06-06T20:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Special Event", + "roomId": 84 + }, { + "id": "wwdc2017-7140", + "staticContentId": 1604, + "eventContentId": 7140, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7140", + "description": "To Be Announced", + "title": "🍻 If we told you, we’d be toast.", + "startTime": "2017-06-08T12:00:00-07:00", + "endTime": "2017-06-08T13:30:00-07:00", + "trackId": 7, + "type": "Lab", + "roomId": 76 + }, { + "id": "wwdc2017-513", + "staticContentId": 1742, + "eventContentId": 513, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/513", + "description": "To Be Announced", + "title": "😉 Trust us. It’s a good one.", + "trackId": 1, + "type": "Video" + }, { + "id": "wwdc2017-610", + "staticContentId": 1668, + "eventContentId": 610, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/610", + "description": "To Be Announced", + "title": "🍮 We flan on telling you later.", + "startTime": "2017-06-09T14:50:00-07:00", + "endTime": "2017-06-09T15:30:00-07:00", + "trackId": 8, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-8030", + "staticContentId": 1719, + "eventContentId": 8030, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/8030", + "description": "Find out how to make your apps accessible and easy to use for everyone. Learn the basics of VoiceOver and other accessibility features to better understand how customers with varying needs use your products. Come prepared with a working prototype, development build, or your released app.\r\n\r\nAppointments are required and limited to one per developer for the duration of the conference. You may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "Accessibility Design By Appointment Lab", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 9, + "type": "Lab", + "actionLinkPrompt": "Request appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 27 + }, { + "id": "wwdc2017-7120", + "staticContentId": 1812, + "eventContentId": 7120, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7120", + "description": "To Be Announced", + "title": "🚣 Canoe keep a secret? We can.", + "startTime": "2017-06-08T11:00:00-07:00", + "endTime": "2017-06-08T15:30:00-07:00", + "trackId": 7, + "type": "Lab", + "roomId": 70 + }, { + "id": "wwdc2017-121", + "staticContentId": 1980, + "eventContentId": 121, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/121", + "description": "Open to all women and advocates for women, these informal breakfast get-togethers are a great way to meet the phenomenal community of women at WWDC, and enjoy a breakfast buffet and coffee to start your day. We’ll hear remarks from Jay Blahnik, Apple’s Director of Fitness and Health Technologies, and Executive Advocate of Women@Apple, one of Apple's internal diversity network associations.\r\n\r\nThis event takes place at the Hilton San Jose, in the Market Room, located on street level.", + "title": "Women@WWDC Breakfast Get-Together", + "startTime": "2017-06-08T07:30:00-07:00", + "endTime": "2017-06-08T08:45:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Get-Together", + "roomId": 85 + }, { + "id": "wwdc2017-123", + "staticContentId": 1959, + "eventContentId": 123, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/123", + "description": "Experience incredible music, food, and drinks at Discovery Meadow, just steps away from the McEnery Convention Center. To enter, you’ll need your badge and wristband. Attendees 21 years and older may drink alcohol and can pick up an additional wristband for drinks on Thursday at either Attendee Services or at the tent inside Discovery Meadow. Bag check is not available at the bash, so please leave your bags at the hotel.", + "title": "The Bash", + "startTime": "2017-06-08T19:00:00-07:00", + "endTime": "2017-06-08T23:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Special Event", + "roomId": 81 + }, { + "id": "wwdc2017-7100", + "staticContentId": 1813, + "eventContentId": 7100, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7100", + "description": "Engineers from Apple’s networking teams will be on hand to help you solve networking problems, optimize your networking code, and keep up-to-date with the latest networking standards.", + "title": "Networking Lab", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T11:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 7, + "type": "Lab", + "roomId": 70 + }, { + "id": "wwdc2017-504", + "staticContentId": 1627, + "eventContentId": 504, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/504", + "description": "To Be Announced", + "title": "🤓 You’ll geek out when we announce.", + "startTime": "2017-06-06T17:10:00-07:00", + "endTime": "2017-06-06T18:10:00-07:00", + "trackId": 1, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-7150", + "staticContentId": 1814, + "eventContentId": 7150, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7150", + "description": "Questions about local and push notifications, the APNs protocol, Today Widgets? Come and meet the Apple engineers who can answer your questions and give you expert implementation advice.", + "title": "Notifications Lab", + "startTime": "2017-06-08T13:50:00-07:00", + "endTime": "2017-06-08T16:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 7, + "type": "Lab", + "roomId": 76, + "related": { + "resources": [16, 4] + } + }, { + "id": "wwdc2017-104", + "staticContentId": 1962, + "eventContentId": 104, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/104", + "description": "Enjoy a vibrant evening in one of downtown’s premiere destinations, less than a mile from the McEnery Convention Center. The San Pedro Square Market is the place to meet up for food, drinks, and special live music. You can purchase food from over 15 different specialty booths so there’s something for everyone. Hang out in the open-air plaza or inside one of three unique interior spaces.", + "title": "San Pedro Square", + "startTime": "2017-06-05T18:00:00-07:00", + "endTime": "2017-06-06T00:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Special Event", + "roomId": 83 + }, { + "id": "wwdc2017-236", + "staticContentId": 1626, + "eventContentId": 236, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/236", + "description": "To Be Announced", + "title": "🎁 This one’s under wraps.", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T09:40:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 62, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-705", + "staticContentId": 1607, + "eventContentId": 705, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/705", + "description": "To Be Announced", + "title": "🍳 Still cooking this session up.", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T09:40:00-07:00", + "trackId": 7, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-211", + "staticContentId": 1622, + "eventContentId": 211, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/211", + "description": "Touch Bar replaces the function keys that have long occupied the top of your keyboard with a versatile MultiTouch input device that features a Retina display. AppKit provides powerful APIs to let you easily leverage the power of Touch Bar in your applications. Learn how to use Touch Bar in your application to add context sensitive commands and flexible content to your user experience. This session will cover the basic concepts, design considerations, standard controls, IB support, and API that you will need to get started using Touch Bar.", + "title": "Touch Bar Fundamentals", + "startTime": "2017-06-07T10:00:00-07:00", + "endTime": "2017-06-07T10:40:00-07:00", + "platforms": ["macOS"], + "trackId": 6, + "type": "Session", + "roomId": 64, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-501", + "staticContentId": 1631, + "eventContentId": 501, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/501", + "description": "To Be Announced", + "title": "😏 Something’s up our sleeve.", + "startTime": "2017-06-06T13:50:00-07:00", + "endTime": "2017-06-06T14:50:00-07:00", + "trackId": 1, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-3060", + "staticContentId": 1828, + "eventContentId": 3060, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3060", + "description": "Meet the engineers creating the technologies to configure, deploy, and manage Apple devices in business and education. If you're a SysAdmin or educator deploying macOS, iOS and tvOS in your environment, this lab will help answer questions and guide you through the process. Learn best practices for integrating custom apps in your IT environment, development considerations and deployment of Shared iPad, and the latest techniques for distributing apps and Apple hardware within your organization.", + "title": "Device Configuration, Deployment, and Management Lab", + "startTime": "2017-06-09T13:00:00-07:00", + "endTime": "2017-06-09T15:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "roomId": 75 + }, { + "id": "wwdc2017-2410", + "staticContentId": 1826, + "eventContentId": 2410, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2410", + "description": "Apple engineers will be on hand to review your code and answer questions about CareKit and ResearchKit. Any technical, code-based, or session follow-up question are fair game so don't be shy. We're here to answer your questions, help you learn about the latest development techniques and tools, and improve your code and apps.", + "title": "ResearchKit and CareKit Lab", + "startTime": "2017-06-09T11:00:00-07:00", + "endTime": "2017-06-09T13:00:00-07:00", + "platforms": ["iOS"], + "trackId": 6, + "type": "Lab", + "roomId": 74 + }, { + "id": "wwdc2017-7080", + "staticContentId": 1809, + "eventContentId": 7080, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7080", + "description": "Get together with engineers in Apple's Core OS and Kernel team to ask your questions and get expert advice on GCD, XPC and other low-level operating system services.", + "title": "Kernel \u0026 Runtime Lab", + "startTime": "2017-06-07T13:50:00-07:00", + "endTime": "2017-06-07T16:10:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 7, + "type": "Lab", + "roomId": 70 + }, { + "id": "wwdc2017-2100", + "staticContentId": 1734, + "eventContentId": 2100, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2100", + "description": "To Be Announced", + "title": "📽 Just wait. The hype is reel.", + "startTime": "2017-06-06T16:10:00-07:00", + "endTime": "2017-06-06T18:00:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 75 + }, { + "id": "wwdc2017-218", + "staticContentId": 1625, + "eventContentId": 218, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/218", + "description": "AppKit offers numerous ways to easily present your data. Join our framework engineers for a guided tour of versatile standard view classes you can put to work in your own macOS apps. Hear about NSStackView, NSTableView, NSCollectionView, and other container views in AppKit. Explore the interesting features and benefits of each, and examine real-world use cases to help you choose the most suitable building blocks for your apps' user interfaces.", + "title": "Choosing the Right Cocoa Container View", + "startTime": "2017-06-07T15:10:00-07:00", + "endTime": "2017-06-07T15:50:00-07:00", + "platforms": ["macOS"], + "keywords": ["nsbrowser", "nscollectionview", "nsgridview", "nsoutlineview", "nsstackview", "nstableview"], + "trackId": 6, + "type": "Session", + "roomId": 64, + "images": ["square", "wide"], + "related": { + "activities": ["wwdc2016-236", "wwdc2016-239", "wwdc2015-225"] + } + }, { + "id": "wwdc2017-222", + "staticContentId": 1623, + "eventContentId": 222, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/222", + "description": "Look behind the scenes into how system applications enhance their Touch Bar content with more than the basic controls. Learn about NSScrubber, customizing the text bar, candidate list item, event handling, layout, animations, and more. Leverage the full power of the Touch Bar to take your Mac app to the next level.", + "title": "Advanced Touch Bar", + "startTime": "2017-06-07T17:10:00-07:00", + "endTime": "2017-06-07T18:10:00-07:00", + "platforms": ["macOS"], + "trackId": 6, + "type": "Session", + "roomId": 64, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-6060", + "staticContentId": 1855, + "eventContentId": 6060, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/6060", + "description": "To Be Announced", + "title": "✍️ We’re drawing a blank on this name.", + "startTime": "2017-06-07T15:10:00-07:00", + "endTime": "2017-06-07T18:00:00-07:00", + "trackId": 8, + "type": "Lab", + "roomId": 67 + }, { + "id": "wwdc2017-204", + "staticContentId": 1552, + "eventContentId": 204, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/204", + "description": "To Be Announced", + "title": "🌄 We’ve picked a setting, but not a name.", + "startTime": "2017-06-06T16:10:00-07:00", + "endTime": "2017-06-06T16:50:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-412", + "staticContentId": 1674, + "eventContentId": 412, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/412", + "description": "To Be Announced", + "title": "💅 Haven’t nailed this name yet.", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T09:40:00-07:00", + "trackId": 5, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-2430", + "staticContentId": 1867, + "eventContentId": 2430, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2430", + "description": "To Be Announced", + "title": "🎅 This one’s under a nondisclosure Claus.", + "startTime": "2017-06-09T13:00:00-07:00", + "endTime": "2017-06-09T16:00:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 74 + }, { + "id": "wwdc2017-4080", + "staticContentId": 1875, + "eventContentId": 4080, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4080", + "description": "Join Apple engineering teams as they answer your questions about Swift. Bring your code and your questions.", + "title": "Swift Open Hours", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T12:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 5, + "type": "Lab", + "roomId": 71 + }, { + "id": "wwdc2017-216", + "staticContentId": 1505, + "eventContentId": 216, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/216", + "description": "To Be Announced", + "title": "🛋 We haven’t furnished naming this yet.", + "startTime": "2017-06-07T13:50:00-07:00", + "endTime": "2017-06-07T14:50:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-4180", + "staticContentId": 1891, + "eventContentId": 4180, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4180", + "description": "Bring your C, Objective-C, and C++ questions to discuss with the LLVM teams. Work out issues you're having building and linking C language code.", + "title": "LLVM Compiler, Objective-C, and C++ Lab", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T11:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 5, + "type": "Lab", + "roomId": 71 + }, { + "id": "wwdc2017-209", + "staticContentId": 1655, + "eventContentId": 209, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/209", + "description": "To Be Announced", + "title": "🐬 We’re being vague on porpoise.", + "startTime": "2017-06-07T10:00:00-07:00", + "endTime": "2017-06-07T10:40:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-719", + "staticContentId": 1546, + "eventContentId": 719, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/719", + "description": "To Be Announced", + "title": "🔒 我们什么都保密,你懂的。", + "trackId": 7, + "type": "Video" + }, { + "id": "wwdc2017-230", + "staticContentId": 1557, + "eventContentId": 230, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/230", + "description": "So much power has been added to animations on iOS since their inception that it's time to think about animations in a whole new way! Learn to combine and coordinate between multiple animations, resulting in interactive transitions and learn some tips and tricks along the way.", + "title": "Advanced Animations with UIKit", + "startTime": "2017-06-08T15:10:00-07:00", + "endTime": "2017-06-08T15:50:00-07:00", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"], + "related": { + "resources": [3] + } + }, { + "id": "wwdc2017-810", + "staticContentId": 1917, + "eventContentId": 810, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/810", + "description": "To Be Announced", + "title": "🚣 Canoe keep a secret? We can.", + "trackId": 9, + "type": "Video" + }, { + "id": "wwdc2017-206", + "staticContentId": 1705, + "eventContentId": 206, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/206", + "description": "To Be Announced", + "title": "💄 We’ve got to make up names for now.", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T09:40:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 64, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-8050", + "staticContentId": 1713, + "eventContentId": 8050, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/8050", + "description": "Get advice on making your apps simple to use and more visually compelling. Come prepared with a working prototype, development build or your released app. Appointments are required and limited to one per developer for the duration of the conference. You may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "User Interface Design By Appointment Lab", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 9, + "type": "Lab", + "actionLinkPrompt": "Request appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 7 + }, { + "id": "wwdc2017-208", + "staticContentId": 1543, + "eventContentId": 208, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/208", + "description": "To Be Announced", + "title": "🛬 Haven’t landed on a name yet.", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T09:40:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-207", + "staticContentId": 1621, + "eventContentId": 207, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/207", + "description": "To Be Announced", + "title": "🎻 Still fiddling around with this one.", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T09:40:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-239", + "staticContentId": 1567, + "eventContentId": 239, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/239", + "description": "To Be Announced", + "title": "🏔 This is only meant to peak your interest.", + "startTime": "2017-06-09T10:00:00-07:00", + "endTime": "2017-06-09T10:40:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 64, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-304", + "staticContentId": 1614, + "eventContentId": 304, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/304", + "description": "To Be Announced", + "title": "🎼 If we told you, we’d get in treble.", + "startTime": "2017-06-08T13:50:00-07:00", + "endTime": "2017-06-08T14:50:00-07:00", + "trackId": 3, + "type": "Session", + "roomId": 64, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-8070", + "staticContentId": 1721, + "eventContentId": 8070, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/8070", + "description": "Find out how to make your apps accessible and easy to use for everyone. Learn the basics of VoiceOver and other accessibility features to better understand how customers with varying needs use your products. Come prepared with a working prototype, development build, or your released app.\r\n\r\nAppointments are required and limited to one per developer for the duration of the conference. You may request an appointment beginning at 7 a.m. for that day only. Appointments fill quickly.", + "title": "Accessibility Design By Appointment Lab", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T13:15:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 9, + "type": "Lab", + "actionLinkPrompt": "Request appointment", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 27 + }, { + "id": "wwdc2017-716", + "staticContentId": 1569, + "eventContentId": 716, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/716", + "description": "To Be Announced", + "title": "🗑 This name hasn’t bin released yet.", + "startTime": "2017-06-09T13:50:00-07:00", + "endTime": "2017-06-09T14:30:00-07:00", + "trackId": 7, + "type": "Session", + "roomId": 64, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-2450", + "staticContentId": 1565, + "eventContentId": 2450, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2450", + "description": "To Be Announced", + "title": "🍵🍵차차 말씀드릴게요, 뭐하는 세션인지.", + "startTime": "2017-06-09T13:50:00-07:00", + "endTime": "2017-06-09T15:20:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 69 + }, { + "id": "wwdc2017-242", + "staticContentId": 1541, + "eventContentId": 242, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/242", + "description": "To Be Announced", + "title": "🔕 This session name doesn’t ring a bell.", + "startTime": "2017-06-09T11:00:00-07:00", + "endTime": "2017-06-09T12:00:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-116", + "staticContentId": 1786, + "eventContentId": 116, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/116", + "description": "Join fellow developers and Apple experts to explore the many ways that apps can be accessible and inclusive to everyone, including users with special needs. Find out about great accessibility work being done in gaming, health and fitness, home automation, coding education, and more. Come to get inspired, ask questions, share experiences, and envision new possibilities together.", + "title": "Accessible Technology and Inclusive Design Get-Together", + "startTime": "2017-06-07T18:30:00-07:00", + "endTime": "2017-06-07T19:45:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Get-Together", + "roomId": 78 + }, { + "id": "wwdc2017-510", + "staticContentId": 1634, + "eventContentId": 510, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/510", + "description": "To Be Announced", + "title": "🍱 This’ll be the best session you’ve ever bento.", + "startTime": "2017-06-08T13:50:00-07:00", + "endTime": "2017-06-08T14:50:00-07:00", + "trackId": 1, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-7130", + "staticContentId": 1818, + "eventContentId": 7130, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7130", + "description": "If your apps do large-scale mathematical computations and image calculations, you should be using the Accelerate framework and the simd library. Get together with the Accelerate team for expert advice and answers to your questions.", + "title": "Accelerate Lab", + "startTime": "2017-06-08T11:00:00-07:00", + "endTime": "2017-06-08T13:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 7, + "type": "Lab", + "roomId": 73 + }, { + "id": "wwdc2017-7210", + "staticContentId": 1817, + "eventContentId": 7210, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7210", + "description": "The Apple File System is a modern, highly optimized file system for iOS, macOS, tvOS, and watchOS. Bring your questions and talk to the engineers on the Apple File System team.", + "title": "Apple File System Lab", + "startTime": "2017-06-09T10:00:00-07:00", + "endTime": "2017-06-09T12:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 7, + "type": "Lab", + "roomId": 70 + }, { + "id": "wwdc2017-5070", + "staticContentId": 1802, + "eventContentId": 5070, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5070", + "description": "To Be Announced", + "title": "🎼 If we told you, we’d get in treble.", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T11:00:00-07:00", + "trackId": 1, + "type": "Lab", + "roomId": 67 + }, { + "id": "wwdc2017-7020", + "staticContentId": 1810, + "eventContentId": 7020, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7020", + "description": "Get together with the Apple security and privacy teams for expert advice on ensuring the data your apps handle is properly protected on device and on the wire, complies with Apple’s privacy standards, and takes advantage of the latest improvements to the security and privacy technologies built into every Apple product.", + "title": "Security \u0026 Privacy Lab", + "startTime": "2017-06-06T13:50:00-07:00", + "endTime": "2017-06-06T15:50:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 7, + "type": "Lab", + "roomId": 70, + "related": { + "activities": ["wwdc2017-701"] + } + }, { + "id": "wwdc2017-112", + "staticContentId": 1789, + "eventContentId": 112, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/112", + "description": "Please join fellow Education and Kids development colleagues in discussions on topics that are important to the Education Market. Come share your experiences, get inspired, and encourage others.", + "title": "Education and Kids Get-Together", + "startTime": "2017-06-07T18:30:00-07:00", + "endTime": "2017-06-07T19:45:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Get-Together", + "roomId": 87 + }, { + "id": "wwdc2017-2060", + "staticContentId": 1819, + "eventContentId": 2060, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2060", + "description": "Prepare for a global audience by localizing your app to perform seamlessly regardless of language. Apple engineers working on localization tools and technologies will be available to answer any technical questions you may have. Bring your code and we'll work with you one-on-one to help improve your app for international markets.", + "title": "Internationalization Lab", + "startTime": "2017-06-06T13:50:00-07:00", + "endTime": "2017-06-06T16:10:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["🌍", "🌎", "🌏", "i18n", "localization", "localizing", "world"], + "trackId": 6, + "type": "Lab", + "roomId": 75 + }, { + "id": "wwdc2017-608", + "staticContentId": 1661, + "eventContentId": 608, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/608", + "description": "To Be Announced", + "title": "💄 We’ve got to make up names for now.", + "startTime": "2017-06-08T16:10:00-07:00", + "endTime": "2017-06-08T16:50:00-07:00", + "trackId": 8, + "type": "Session", + "roomId": 64, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-238", + "staticContentId": 1724, + "eventContentId": 238, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/238", + "description": "People expect long battery life on their mobile devices, and apps play a vital role in achieving that experience. Learn strategies to conserve energy while providing the best experience for your app. Find out about the key areas that affect energy consumption of an app as well as how to best use the available APIs to optimize battery life. Master energy debugging tools to make your app more energy efficient.", + "title": "Writing Energy Efficient Apps", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T09:40:00-07:00", + "platforms": ["iOS", "macOS", "watchOS"], + "trackId": 6, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-604", + "staticContentId": 1665, + "eventContentId": 604, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/604", + "description": "To Be Announced", + "title": "🐙 O polvo quer saber as novidades.", + "startTime": "2017-06-07T11:00:00-07:00", + "endTime": "2017-06-07T12:00:00-07:00", + "trackId": 8, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-813", + "staticContentId": 1921, + "eventContentId": 813, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/813", + "description": "To Be Announced", + "title": "⛵️ We’ll tell you schooner or later.", + "trackId": 9, + "type": "Video" + }, { + "id": "wwdc2017-244", + "staticContentId": 1624, + "eventContentId": 244, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/244", + "description": "To Be Announced", + "title": "😢 Você vai se emojionar com as novidades.", + "startTime": "2017-06-09T13:50:00-07:00", + "endTime": "2017-06-09T14:30:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 62, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-812", + "staticContentId": 1918, + "eventContentId": 812, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/812", + "description": "To Be Announced", + "title": "🕶 Sorry to be shady about this.", + "trackId": 9, + "type": "Video" + }, { + "id": "wwdc2017-814", + "staticContentId": 1922, + "eventContentId": 814, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/814", + "description": "To Be Announced", + "title": "🙊 Mmmph.", + "trackId": 9, + "type": "Video" + }, { + "id": "wwdc2017-101", + "staticContentId": 1796, + "eventContentId": 101, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/101", + "description": "WWDC 2017 Keynote", + "title": "WWDC 2017 Keynote", + "startTime": "2017-06-05T10:00:00-07:00", + "endTime": "2017-06-05T12:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Special Event", + "roomId": 63 + }, { + "id": "wwdc2017-402", + "staticContentId": 1673, + "eventContentId": 402, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/402", + "description": "To Be Announced", + "title": "🔒 我们什么都保密,你懂的。", + "startTime": "2017-06-06T13:50:00-07:00", + "endTime": "2017-06-06T14:50:00-07:00", + "trackId": 5, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-122", + "staticContentId": 1801, + "eventContentId": 122, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/122", + "description": "What happens when you fuse a love of engineering and dance? Miral Kotb and iLUMINATE. Miral was inspired at WWDC 2009 to invent a way to wirelessly control lights on dancers’ bodies from the palm of her hand. Her groundbreaking light suits and innovative dance moves have since mesmerized crowds (and judges) on “America’s Got Talent”, audiences at her Off-Broadway hit show, and Grammy-winning artists who have used her suits. Hear about her unusual journey and get a peek ‘behind the curtains’ to see how she creates the magic.", + "title": "I’m Dancing as Fast as I Can… Code", + "startTime": "2017-06-08T12:40:00-07:00", + "endTime": "2017-06-08T13:30:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Special Event", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-2070", + "staticContentId": 1905, + "eventContentId": 2070, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2070", + "description": "To Be Announced", + "title": "⛏ We’ve picked a name, but it’s secret.", + "startTime": "2017-06-06T13:50:00-07:00", + "endTime": "2017-06-06T16:10:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 69 + }, { + "id": "wwdc2017-215", + "staticContentId": 1560, + "eventContentId": 215, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/215", + "description": "To Be Announced", + "title": "🚝 We’re rail excited to tell you.", + "startTime": "2017-06-07T13:50:00-07:00", + "endTime": "2017-06-07T14:50:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 64, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-3040", + "staticContentId": 1815, + "eventContentId": 3040, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3040", + "description": "Engineers from the StoreKit, App Store, and iTunes Connect team will be in the lab to answer your questions and advise you on In-App Purchase, Subscriptions and managing IAP in iTC.", + "title": "StoreKit Lab", + "startTime": "2017-06-08T15:10:00-07:00", + "endTime": "2017-06-08T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS"], + "trackId": 3, + "type": "Lab", + "roomId": 71 + }, { + "id": "wwdc2017-113", + "staticContentId": 1792, + "eventContentId": 113, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/113", + "description": "Come make connections and engage in discussions around healthcare, fitness, wellness, and research. Conversations will touch on Apple technologies (HealthKit, ResearchKit, CareKit), and other connected health topics. This is a great opportunity to share your iOS, tvOS and watchOS app experiences, get inspired, network, and brainstorm new solutions together.", + "title": "Health, Fitness, and Research Get-Together", + "startTime": "2017-06-07T18:30:00-07:00", + "endTime": "2017-06-07T19:45:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Get-Together", + "roomId": 64 + }, { + "id": "wwdc2017-5200", + "staticContentId": 1803, + "eventContentId": 5200, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5200", + "description": "To Be Announced", + "title": "🔨 Für diese Session Hammer noch keinen Namen.", + "startTime": "2017-06-09T12:00:00-07:00", + "endTime": "2017-06-09T13:50:00-07:00", + "trackId": 1, + "type": "Lab", + "roomId": 72 + }, { + "id": "wwdc2017-704", + "staticContentId": 1657, + "eventContentId": 704, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/704", + "description": "To Be Announced", + "title": "🍱 This’ll be the best session you’ve ever bento.", + "startTime": "2017-06-06T16:10:00-07:00", + "endTime": "2017-06-06T16:50:00-07:00", + "trackId": 7, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-250", + "staticContentId": 1936, + "eventContentId": 250, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/250", + "description": "To Be Announced", + "title": "😘 We’re still flirting with what to call this.", + "trackId": 6, + "type": "Video" + }, { + "id": "wwdc2017-5190", + "staticContentId": 1646, + "eventContentId": 5190, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5190", + "description": "To Be Announced", + "title": "🌄 We’ve picked a setting, but not a name.", + "startTime": "2017-06-08T15:10:00-07:00", + "endTime": "2017-06-08T18:00:00-07:00", + "trackId": 1, + "type": "Lab", + "roomId": 72 + }, { + "id": "wwdc2017-115", + "staticContentId": 1793, + "eventContentId": 115, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/115", + "description": "The importance of diversity in the workplace is recognized at every great company and requires sustained commitment to achieve. Join like-minded peers and industry leaders in open conversations about Navigating Unconscious Bias, Fostering a Diverse Work Culture, Becoming an Advocate, and Unconventional Career Paths. Prepare to inspire and be inspired.", + "title": "Inclusion and Diversity Get-Together", + "startTime": "2017-06-07T18:30:00-07:00", + "endTime": "2017-06-07T19:45:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Get-Together", + "roomId": 79 + }, { + "id": "wwdc2017-816", + "staticContentId": 1920, + "eventContentId": 816, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/816", + "description": "To Be Announced", + "title": "🤖 We’re a bot to reveal the real name.", + "trackId": 9, + "type": "Video" + }, { + "id": "wwdc2017-114", + "staticContentId": 1795, + "eventContentId": 114, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/114", + "description": "To Be Announced", + "title": "🍩 Donut ask what this one’s called yet.", + "startTime": "2017-06-07T18:30:00-07:00", + "endTime": "2017-06-07T19:45:00-07:00", + "trackId": 4, + "type": "Get-Together", + "roomId": 67 + }, { + "id": "wwdc2017-2230", + "staticContentId": 1906, + "eventContentId": 2230, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2230", + "description": "Meet with Apple engineers to have your questions about Touch Bar answered. Bring your Touch Bar designs, ideas, as well your code, and work one-on-one with the experts to resolve any issues or questions you may have.", + "title": "Cocoa Touch Bar Lab", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T11:00:00-07:00", + "platforms": ["macOS"], + "trackId": 6, + "type": "Lab", + "roomId": 69 + }, { + "id": "wwdc2017-240", + "staticContentId": 1616, + "eventContentId": 240, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/240", + "description": "To Be Announced", + "title": "💎 私の口はダイヤモンドよりカタいです。", + "startTime": "2017-06-09T10:00:00-07:00", + "endTime": "2017-06-09T10:40:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-815", + "staticContentId": 1919, + "eventContentId": 815, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/815", + "description": "To Be Announced", + "title": "🐋 Whale let you know when it’s ready.", + "trackId": 9, + "type": "Video" + }, { + "id": "wwdc2017-805", + "staticContentId": 1641, + "eventContentId": 805, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/805", + "description": "To Be Announced", + "title": "🔜 Almost ready to tell you.", + "startTime": "2017-06-08T13:50:00-07:00", + "endTime": "2017-06-08T14:50:00-07:00", + "trackId": 9, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-5150", + "staticContentId": 1843, + "eventContentId": 5150, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5150", + "description": "AVFoundation is a powerful framework for all types of media operations, including capture, editing, playback, and export. Get one-on-one technical guidance from Apple engineers about using AVFoundation in your apps. Bring your code and your questions.", + "title": "AVFoundation Lab", + "startTime": "2017-06-08T12:00:00-07:00", + "endTime": "2017-06-08T15:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 1, + "type": "Lab", + "roomId": 72 + }, { + "id": "wwdc2017-6030", + "staticContentId": 1851, + "eventContentId": 6030, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/6030", + "description": "To Be Announced", + "title": "🚇 This name’s still underground.", + "startTime": "2017-06-06T15:10:00-07:00", + "endTime": "2017-06-06T18:00:00-07:00", + "trackId": 8, + "type": "Lab", + "roomId": 67 + }, { + "id": "wwdc2017-5090", + "staticContentId": 1840, + "eventContentId": 5090, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5090", + "description": "AVKit offers a fully featured and intuitive user interface for media in apps on iOS, macOS, and tvOS. Get one-on-one technical guidance from Apple engineers about using AVKit in your apps. Bring your code and your questions.", + "title": "AVKit Lab", + "startTime": "2017-06-07T11:00:00-07:00", + "endTime": "2017-06-07T13:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS"], + "trackId": 1, + "type": "Lab", + "roomId": 72 + }, { + "id": "wwdc2017-5230", + "staticContentId": 1848, + "eventContentId": 5230, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5230", + "description": "To Be Announced", + "title": "🤒 Do us a fever and wait a bit longer.", + "startTime": "2017-06-09T14:30:00-07:00", + "endTime": "2017-06-09T16:00:00-07:00", + "trackId": 1, + "type": "Lab", + "roomId": 73 + }, { + "id": "wwdc2017-6040", + "staticContentId": 1853, + "eventContentId": 6040, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/6040", + "description": "To Be Announced", + "title": "🙃 You’ll flip when this is revealed.", + "startTime": "2017-06-07T13:00:00-07:00", + "endTime": "2017-06-07T15:10:00-07:00", + "trackId": 8, + "type": "Lab", + "roomId": 67 + }, { + "id": "wwdc2017-507", + "staticContentId": 1602, + "eventContentId": 507, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/507", + "description": "To Be Announced", + "title": "🌮 Este nome ainda não taco firmado.", + "startTime": "2017-06-07T17:10:00-07:00", + "endTime": "2017-06-07T18:10:00-07:00", + "trackId": 1, + "type": "Session", + "roomId": 62, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-512", + "staticContentId": 1652, + "eventContentId": 512, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/512", + "description": "To Be Announced", + "title": "😡 Can’t say what this is a pout yet.", + "startTime": "2017-06-09T13:50:00-07:00", + "endTime": "2017-06-09T14:30:00-07:00", + "trackId": 1, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-713", + "staticContentId": 1650, + "eventContentId": 713, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/713", + "description": "To Be Announced", + "title": "😜 说真的,这活动的名字还是假字呢。", + "startTime": "2017-06-08T15:10:00-07:00", + "endTime": "2017-06-08T15:50:00-07:00", + "trackId": 7, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-6080", + "staticContentId": 1862, + "eventContentId": 6080, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/6080", + "description": "Receive one-on-one technical assistance and troubleshooting advice from the Graphics and Imaging team. Get help with Core Animation, Core Graphics, Image Capture, Image I/O, ImageKit, PDFKit, ColorSync, and more. Bring your project and get your questions answered.", + "title": "Core Animation and Quartz 2D Lab", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T11:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 8, + "type": "Lab", + "roomId": 73 + }, { + "id": "wwdc2017-5020", + "staticContentId": 1841, + "eventContentId": 5020, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5020", + "description": "AVKit offers a fully featured and intuitive user interface for media in apps on iOS, macOS, and tvOS. Get one-on-one technical guidance from Apple engineers about using AVKit in your apps. Bring your code and your questions.", + "title": "AVKit Lab", + "startTime": "2017-06-06T13:00:00-07:00", + "endTime": "2017-06-06T16:10:00-07:00", + "platforms": ["iOS", "macOS", "tvOS"], + "trackId": 1, + "type": "Lab", + "roomId": 73 + }, { + "id": "wwdc2017-817", + "staticContentId": 1924, + "eventContentId": 817, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/817", + "description": "To Be Announced", + "title": "🐝 To bee determined.", + "trackId": 9, + "type": "Video" + }, { + "id": "wwdc2017-102", + "staticContentId": 1671, + "eventContentId": 102, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/102", + "description": "WWDC 2017 Platforms State of the Union", + "title": "Platforms State of the Union", + "startTime": "2017-06-05T14:30:00-07:00", + "endTime": "2017-06-05T16:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-405", + "staticContentId": 1679, + "eventContentId": 405, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/405", + "description": "To Be Announced", + "title": "🐎 Hold your horses. We can’t tell you yet.", + "startTime": "2017-06-07T15:10:00-07:00", + "endTime": "2017-06-07T15:50:00-07:00", + "trackId": 5, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-6120", + "staticContentId": 1852, + "eventContentId": 6120, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/6120", + "description": "To Be Announced", + "title": "👀 You real eyes this name’s not permanent, right?", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T12:00:00-07:00", + "trackId": 8, + "type": "Lab", + "roomId": 72 + }, { + "id": "wwdc2017-807", + "staticContentId": 1640, + "eventContentId": 807, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/807", + "description": "To Be Announced", + "title": "🤔 Still thinking up a name for this.", + "startTime": "2017-06-09T11:00:00-07:00", + "endTime": "2017-06-09T12:00:00-07:00", + "trackId": 9, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-821", + "staticContentId": 1915, + "eventContentId": 821, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/821", + "description": "To Be Announced", + "title": "🍩 Donut ask what this one’s called yet.", + "trackId": 9, + "type": "Video" + }, { + "id": "wwdc2017-6090", + "staticContentId": 1859, + "eventContentId": 6090, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/6090", + "description": "To Be Announced", + "title": "🕳 Hole on. Name coming soon.", + "startTime": "2017-06-09T11:00:00-07:00", + "endTime": "2017-06-09T13:50:00-07:00", + "trackId": 8, + "type": "Lab", + "roomId": 67 + }, { + "id": "wwdc2017-503", + "staticContentId": 1629, + "eventContentId": 503, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/503", + "description": "To Be Announced", + "title": "🔜 Almost ready to tell you.", + "startTime": "2017-06-06T16:10:00-07:00", + "endTime": "2017-06-06T16:50:00-07:00", + "trackId": 1, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-5160", + "staticContentId": 1697, + "eventContentId": 5160, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5160", + "description": "iOS, macOS, watchOS and tvOS offer a rich set APIs for recording, processing, and playing back audio in your apps. Additionally, Audio Unit Extensions let you add sophisticated audio manipulation and processing capabilities to host apps. Get one-on-one technical guidance from Apple engineers about using Audio APIs and Audio Unit Extensions. Bring your code and your questions.", + "title": "Audio Lab", + "startTime": "2017-06-08T13:00:00-07:00", + "endTime": "2017-06-08T15:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 1, + "type": "Lab", + "roomId": 73 + }, { + "id": "wwdc2017-4100", + "staticContentId": 1887, + "eventContentId": 4100, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4100", + "description": "To Be Announced", + "title": "🐾 This session name’s on paws.", + "startTime": "2017-06-07T12:00:00-07:00", + "endTime": "2017-06-07T15:00:00-07:00", + "trackId": 5, + "type": "Lab", + "roomId": 71 + }, { + "id": "wwdc2017-6020", + "staticContentId": 1861, + "eventContentId": 6020, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/6020", + "description": "Receive one-on-one technical assistance and troubleshooting advice from the Graphics and Imaging team. Get help with Core Animation, Core Graphics, Image Capture, Image I/O, ImageKit, PDFKit, ColorSync, and more. Bring your project and get your questions answered.", + "title": "Core Animation and Quartz 2D Lab", + "startTime": "2017-06-06T12:00:00-07:00", + "endTime": "2017-06-06T15:10:00-07:00", + "platforms": ["iOS", "macOS", "tvOS"], + "trackId": 8, + "type": "Lab", + "roomId": 67 + }, { + "id": "wwdc2017-2050", + "staticContentId": 1865, + "eventContentId": 2050, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2050", + "description": "To Be Announced", + "title": "🐨 You just aren’t koalafied to know yet.", + "startTime": "2017-06-06T12:40:00-07:00", + "endTime": "2017-06-06T14:50:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 74 + }, { + "id": "wwdc2017-2320", + "staticContentId": 1694, + "eventContentId": 2320, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2320", + "description": "The Speech Recognition API allows you to perform rapid and contextually informed speech recognition in both file-based and realtime scenarios. Get one-on-one technical guidance from Apple engineers about using speech recognition in your apps. Bring your code and your questions.", + "title": "Speech Recognition Lab", + "startTime": "2017-06-08T13:00:00-07:00", + "endTime": "2017-06-08T15:00:00-07:00", + "platforms": ["iOS", "macOS"], + "trackId": 6, + "type": "Lab", + "roomId": 75 + }, { + "id": "wwdc2017-223", + "staticContentId": 1551, + "eventContentId": 223, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/223", + "description": "To Be Announced", + "title": "🤖 We’re a bot to reveal the real name.", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T09:40:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 62, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-823", + "staticContentId": 1914, + "eventContentId": 823, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/823", + "description": "To Be Announced", + "title": "🌮 Este nome ainda não taco firmado.", + "trackId": 9, + "type": "Video" + }, { + "id": "wwdc2017-248", + "staticContentId": 1928, + "eventContentId": 248, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/248", + "description": "To Be Announced", + "title": "😬 Anticipation intensifies.", + "trackId": 6, + "type": "Video" + }, { + "id": "wwdc2017-809", + "staticContentId": 1916, + "eventContentId": 809, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/809", + "description": "To Be Announced", + "title": "📍 Haven’t pinned this down yet.", + "trackId": 9, + "type": "Video" + }, { + "id": "wwdc2017-413", + "staticContentId": 1686, + "eventContentId": 413, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/413", + "description": "To Be Announced", + "title": "🍚 现在让你知道活动名,哥们饭碗就没了。", + "startTime": "2017-06-09T10:00:00-07:00", + "endTime": "2017-06-09T10:40:00-07:00", + "trackId": 5, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-607", + "staticContentId": 1660, + "eventContentId": 607, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/607", + "description": "To Be Announced", + "title": "🤓 You’ll geek out when we announce.", + "startTime": "2017-06-08T15:10:00-07:00", + "endTime": "2017-06-08T15:50:00-07:00", + "trackId": 8, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-243", + "staticContentId": 1603, + "eventContentId": 243, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/243", + "description": "To Be Announced", + "title": "🙃 You’ll flip when this is revealed.", + "startTime": "2017-06-09T11:00:00-07:00", + "endTime": "2017-06-09T12:00:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-2110", + "staticContentId": 1598, + "eventContentId": 2110, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2110", + "description": "To Be Announced", + "title": "🎱 Ask again later.", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T11:00:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 69 + }, { + "id": "wwdc2017-822", + "staticContentId": 1913, + "eventContentId": 822, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/822", + "description": "To Be Announced", + "title": "🍞 We’d loaf to tell you, but not yet.", + "trackId": 9, + "type": "Video" + }, { + "id": "wwdc2017-220", + "staticContentId": 1702, + "eventContentId": 220, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/220", + "description": "To Be Announced", + "title": "🤒 Do us a fever and wait a bit longer.", + "startTime": "2017-06-07T16:10:00-07:00", + "endTime": "2017-06-07T16:50:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 64, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-7070", + "staticContentId": 1896, + "eventContentId": 7070, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7070", + "description": "Get together with the Apple security and privacy teams for expert advice on ensuring the data your apps handle is properly protected on device and on the wire, complies with Apple’s privacy standards, and takes advantage of the latest improvements to the security and privacy technologies built into every Apple product.", + "title": "Security \u0026 Privacy Lab", + "startTime": "2017-06-07T13:00:00-07:00", + "endTime": "2017-06-07T15:30:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 7, + "type": "Lab", + "roomId": 76, + "related": { + "activities": ["wwdc2017-701"] + } + }, { + "id": "wwdc2017-514", + "staticContentId": 1692, + "eventContentId": 514, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/514", + "description": "To Be Announced", + "title": "👯 We’re dancing around this session name.", + "trackId": 1, + "type": "Video" + }, { + "id": "wwdc2017-7200", + "staticContentId": 1823, + "eventContentId": 7200, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7200", + "description": "Meet with the Maps and Location engineers to discuss how you can leverage the MapKit and CoreLocation APIs in your app. Get details and advice on using new map and annotation features and best practices for providing location-based features in a power efficient and privacy conscious manner.", + "title": "Location and Mapping Technologies Lab", + "startTime": "2017-06-09T10:00:00-07:00", + "endTime": "2017-06-09T12:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 7, + "type": "Lab", + "roomId": 77 + }, { + "id": "wwdc2017-601", + "staticContentId": 1658, + "eventContentId": 601, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/601", + "description": "To Be Announced", + "title": "🚣 Canoe keep a secret? We can.", + "startTime": "2017-06-06T13:50:00-07:00", + "endTime": "2017-06-06T14:50:00-07:00", + "trackId": 8, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-3020", + "staticContentId": 1832, + "eventContentId": 3020, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3020", + "description": "Meet with members of the iTunes Connect and StoreKit teams for expert guidance on App Analytics, in-app purchase, subscriptions and meta-data optimization techniques for publishing your apps through iTunes Connect. Bring your questions about how best to integrate StoreKit APIs, get information into iTunes Connect, and deliver your binary.", + "title": "App Store and iTunes Connect Lab", + "startTime": "2017-06-07T13:00:00-07:00", + "endTime": "2017-06-07T15:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "roomId": 75 + }, { + "id": "wwdc2017-235", + "staticContentId": 1590, + "eventContentId": 235, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/235", + "description": "iOS and macOS have a wide range of graphics and animation technologies for bringing your app designs to life. Get to know the full graphics stack, from the high-level tools in UIKit and AppKit all the way down to low-level frameworks like Metal. Dive deep into Core Animation and learn the techniques used by Apple engineers to build responsive, engaging UI across the ecosystem.", + "title": "Building Visually Rich User Experiences", + "startTime": "2017-06-08T17:10:00-07:00", + "endTime": "2017-06-08T18:10:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 6, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-2290", + "staticContentId": 1825, + "eventContentId": 2290, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2290", + "description": "To Be Announced", + "title": "🤐 N’insistez pas, nous ne dirons rien.", + "startTime": "2017-06-08T11:00:00-07:00", + "endTime": "2017-06-08T13:00:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 77 + }, { + "id": "wwdc2017-404", + "staticContentId": 1681, + "eventContentId": 404, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/404", + "description": "To Be Announced", + "title": "👀 You real eyes this name’s not permanent, right?", + "startTime": "2017-06-07T10:00:00-07:00", + "endTime": "2017-06-07T10:40:00-07:00", + "trackId": 5, + "type": "Session", + "roomId": 62, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-3030", + "staticContentId": 1833, + "eventContentId": 3030, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3030", + "description": "Meet with members of the iTunes Connect and StoreKit teams for expert guidance on App Analytics, in-app purchase, subscriptions and meta-data optimization techniques for publishing your apps through iTunes Connect. Bring your questions about how best to integrate StoreKit APIs, get information into iTunes Connect, and deliver your binary.", + "title": "App Store and iTunes Connect Lab", + "startTime": "2017-06-08T12:00:00-07:00", + "endTime": "2017-06-08T13:50:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Lab", + "roomId": 74 + }, { + "id": "wwdc2017-414", + "staticContentId": 1678, + "eventContentId": 414, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/414", + "description": "Unit testing is an essential tool to consistently verify your code works correctly. Discover techniques for designing the code of your app so that it can be easily tested. Find out the best practices for developing a test suite that evolves with your app and scales as your app grows.", + "title": "Engineering for Testability", + "startTime": "2017-06-09T13:50:00-07:00", + "endTime": "2017-06-09T14:30:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["ui testing"], + "trackId": 5, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"], + "related": { + "activities": ["wwdc2016-409", "wwdc2015-406", "wwdc2014-414"] + } + }, { + "id": "wwdc2017-5050", + "staticContentId": 1845, + "eventContentId": 5050, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5050", + "description": "To Be Announced", + "title": "👾 Just saving this space.", + "startTime": "2017-06-06T16:10:00-07:00", + "endTime": "2017-06-06T18:00:00-07:00", + "trackId": 1, + "type": "Lab", + "roomId": 73 + }, { + "id": "wwdc2017-227", + "staticContentId": 1725, + "eventContentId": 227, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/227", + "description": "To Be Announced", + "title": "😘 We’re still flirting with what to call this.", + "startTime": "2017-06-08T10:00:00-07:00", + "endTime": "2017-06-08T10:40:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 62, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-2350", + "staticContentId": 1911, + "eventContentId": 2350, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2350", + "description": "To Be Announced", + "title": "☕️ Still brewing this up.", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T11:00:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 74 + }, { + "id": "wwdc2017-5110", + "staticContentId": 1847, + "eventContentId": 5110, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5110", + "description": "To Be Announced", + "title": "🕳 Hole on. Name coming soon.", + "startTime": "2017-06-07T13:00:00-07:00", + "endTime": "2017-06-07T15:10:00-07:00", + "trackId": 1, + "type": "Lab", + "roomId": 72 + }, { + "id": "wwdc2017-603", + "staticContentId": 1659, + "eventContentId": 603, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/603", + "description": "To Be Announced", + "title": "⛄️⛄️ Snow mention of this name yet.", + "startTime": "2017-06-07T10:00:00-07:00", + "endTime": "2017-06-07T10:40:00-07:00", + "trackId": 8, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-2380", + "staticContentId": 1820, + "eventContentId": 2380, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2380", + "description": "Prepare for a global audience by localizing your app to perform seamlessly regardless of language. Apple engineers working on localization tools and technologies will be available to answer any technical questions you may have. Bring your code and we'll work with you one-on-one to help improve your app for international markets.", + "title": "Internationalization Lab", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T11:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["🌍", "🌎", "🌏", "i18n", "localization", "localizing", "world"], + "trackId": 6, + "type": "Lab", + "roomId": 75 + }, { + "id": "wwdc2017-201", + "staticContentId": 1548, + "eventContentId": 201, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/201", + "description": "To Be Announced", + "title": "🏧 Can’t tell you at the moment.", + "startTime": "2017-06-06T10:20:00-07:00", + "endTime": "2017-06-06T11:00:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-5080", + "staticContentId": 1842, + "eventContentId": 5080, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5080", + "description": "AVFoundation is a powerful framework for all types of media operations, including capture, editing, playback, and export. Get one-on-one technical guidance from Apple engineers about using AVFoundation in your apps. Bring your code and your questions.", + "title": "AVFoundation Lab", + "startTime": "2017-06-07T11:00:00-07:00", + "endTime": "2017-06-07T13:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 1, + "type": "Lab", + "roomId": 73 + }, { + "id": "wwdc2017-5010", + "staticContentId": 1647, + "eventContentId": 5010, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5010", + "description": "To Be Announced", + "title": "🤖 We’re a bot to reveal the real name.", + "startTime": "2017-06-06T10:00:00-07:00", + "endTime": "2017-06-06T12:00:00-07:00", + "trackId": 1, + "type": "Lab", + "roomId": 67 + }, { + "id": "wwdc2017-7040", + "staticContentId": 1608, + "eventContentId": 7040, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7040", + "description": "To Be Announced", + "title": "🌖 Sorry to keep you waning.", + "startTime": "2017-06-07T10:00:00-07:00", + "endTime": "2017-06-07T11:30:00-07:00", + "trackId": 7, + "type": "Lab", + "roomId": 76 + }, { + "id": "wwdc2017-6110", + "staticContentId": 1863, + "eventContentId": 6110, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/6110", + "description": "Model I/O and GameplayKit provide the building blocks for loading models and creating well-designed games. Receive hands-on technical guidance and development advice from the Model I/O and GameplayKit engineering teams. Bring your code and your questions.", + "title": "Model I/O and GameplayKit Lab", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T12:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 8, + "type": "Lab", + "roomId": 73 + }, { + "id": "wwdc2017-508", + "staticContentId": 1643, + "eventContentId": 508, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/508", + "description": "To Be Announced", + "title": "👠 活动名会晚点出来,因为起名的人脚崴了。", + "startTime": "2017-06-08T11:00:00-07:00", + "endTime": "2017-06-08T12:00:00-07:00", + "trackId": 1, + "type": "Session", + "roomId": 62, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-1040", + "staticContentId": 1729, + "eventContentId": 1040, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/1040", + "description": "Reserve time in our fully outfitted studio to record the latest episode of your audio podcast, right here at WWDC. Each 60 minute session can accommodate up to four contributors, with Apple experts on hand to help get your session up and running. You will receive a copy of your session for post-production and distribution.\r\n\r\nYou may request a reservation beginning at 7 a.m. for that day only. Reservations fill quickly.", + "title": "Apple Podcasts Studio", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T15:00:00-07:00", + "platforms": ["iOS", "macOS"], + "trackId": 4, + "type": "Lab", + "actionLinkPrompt": "Request reservation", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 60 + }, { + "id": "wwdc2017-808", + "staticContentId": 1503, + "eventContentId": 808, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/808", + "description": "Creating a great Watch experience involves planning and attention to detail. Learn how to focus your development for Apple Watch to ensure that the experience is timely and contextually relevant for your users. Walk through a case study of the WWDC Watch app and gain insights from the development team’s experience across three versions of the app. Finally, learn design and technical tips for making your watchOS app the best it can be.", + "title": "Planning a Great Apple Watch Experience", + "startTime": "2017-06-08T17:10:00-07:00", + "endTime": "2017-06-08T18:10:00-07:00", + "platforms": ["watchOS"], + "keywords": ["🍺", "🍻", "🥃", "⌚️", "clockkit", "watchconnectivity", "watchkit"], + "trackId": 9, + "type": "Session", + "roomId": 62, + "images": ["square", "wide"], + "related": { + "activities": ["wwdc2017-2020", "wwdc2017-2200"], + "resources": [14, 9] + } + }, { + "id": "wwdc2017-1020", + "staticContentId": 1727, + "eventContentId": 1020, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/1020", + "description": "Reserve time in our fully outfitted studio to record the latest episode of your audio podcast, right here at WWDC. Each 60 minute session can accommodate up to four contributors, with Apple experts on hand to help get your session up and running. You will receive a copy of your session for post-production and distribution.\r\n\r\nYou may request a reservation beginning at 7 a.m. for that day only. Reservations fill quickly.", + "title": "Apple Podcasts Studio", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T18:00:00-07:00", + "platforms": ["iOS", "macOS"], + "trackId": 4, + "type": "Lab", + "actionLinkPrompt": "Request reservation", + "actionLinkURL": "https://developer.apple.com/go/?id=wwdc-consultations", + "roomId": 60 + }, { + "id": "wwdc2017-117", + "staticContentId": 1794, + "eventContentId": 117, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/117", + "description": "To Be Announced", + "title": "🐥 O nome ainda não pintou.", + "startTime": "2017-06-07T18:30:00-07:00", + "endTime": "2017-06-07T19:45:00-07:00", + "trackId": 4, + "type": "Get-Together", + "roomId": 76 + }, { + "id": "wwdc2017-5140", + "staticContentId": 1733, + "eventContentId": 5140, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5140", + "description": "To Be Announced", + "title": "😶 Session name: Poker Face.", + "startTime": "2017-06-08T15:10:00-07:00", + "endTime": "2017-06-08T18:00:00-07:00", + "trackId": 1, + "type": "Lab", + "roomId": 67 + }, { + "id": "wwdc2017-5030", + "staticContentId": 1844, + "eventContentId": 5030, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5030", + "description": "AVFoundation is a powerful framework for all types of media operations, including capture, editing, playback, and export. Get one-on-one technical guidance from Apple engineers about using AVFoundation in your apps. Bring your code and your questions.", + "title": "AVFoundation Lab", + "startTime": "2017-06-06T13:00:00-07:00", + "endTime": "2017-06-06T16:10:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 1, + "type": "Lab", + "roomId": 72 + }, { + "id": "wwdc2017-119", + "staticContentId": 1790, + "eventContentId": 119, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/119", + "description": "Connect with other game developers and Apple experts for engaging conversations on the key topics driving game development on Apple platforms. Meet others who share your interests and get play time with award-winning games. A great opportunity to make new connections, share your ideas, and be inspired.", + "title": "Games Get-Together", + "startTime": "2017-06-07T18:30:00-07:00", + "endTime": "2017-06-07T19:45:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Get-Together", + "roomId": 73 + }, { + "id": "wwdc2017-118", + "staticContentId": 1787, + "eventContentId": 118, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/118", + "description": "The app economy is rapidly expanding to every corner of the globe, as people everywhere search for new and compelling apps optimized for their region, needs, and interests. Meet developers and Apple employees from China, India, Southeast Asia, Latin America, Middle East, Russia, Turkey and Africa and learn what it takes to bring your app to these exciting new places. Check out some of the best local apps and explore what's involved in expanding your app business into these countries. Bring your questions about language, culture, infrastructure and region-centric design and come away with a game plan for getting your app into the hands of new customers.", + "title": "Apps for the World Get-Together", + "startTime": "2017-06-07T18:30:00-07:00", + "endTime": "2017-06-07T19:45:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Get-Together", + "roomId": 61 + }, { + "id": "wwdc2017-806", + "staticContentId": 1637, + "eventContentId": 806, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/806", + "description": "By understanding the range of abilities and capabilities of the people who use our apps, you can design robust apps that work for everyone. Learn how designing for accessibility and inclusiveness can do social good, widen participation, and enable everyone to benefit.", + "title": "Design For Everyone", + "startTime": "2017-06-08T11:00:00-07:00", + "endTime": "2017-06-08T12:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["accessibility", "apple design", "apple designers", "design", "design best practices", "dynamic type", "hi", "hig", "human interface", "inclusive design", "ios", "ios design"], + "trackId": 9, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-7060", + "staticContentId": 1613, + "eventContentId": 7060, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7060", + "description": "To Be Announced", + "title": "💎 私の口はダイヤモンドよりカタいです。", + "startTime": "2017-06-07T12:00:00-07:00", + "endTime": "2017-06-07T13:30:00-07:00", + "trackId": 7, + "type": "Lab", + "roomId": 70 + }, { + "id": "wwdc2017-2120", + "staticContentId": 1695, + "eventContentId": 2120, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2120", + "description": "The Speech Recognition API allows you to perform rapid and contextually informed speech recognition in both file-based and realtime scenarios. Get one-on-one technical guidance from Apple engineers about using speech recognition in your apps. Bring your code and your questions.", + "title": "Speech Recognition Lab", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T11:00:00-07:00", + "platforms": ["iOS", "macOS"], + "trackId": 6, + "type": "Lab", + "roomId": 68 + }, { + "id": "wwdc2017-602", + "staticContentId": 1662, + "eventContentId": 602, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/602", + "description": "To Be Announced", + "title": "😲 Voilà votre tête quand on vous dira ce que c’est…", + "startTime": "2017-06-06T17:10:00-07:00", + "endTime": "2017-06-06T18:10:00-07:00", + "trackId": 8, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-111", + "staticContentId": 1788, + "eventContentId": 111, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/111", + "description": "Join fellow developers building innovative apps that give businesses the power to transform workflows, improve customer relationships, and boost productivity. Connect, learn, and share best practices with other experts who are using Apple technology to solve business problems in entirely new ways. Get inspired and engage in the areas of Field Services, Customer Engagement, and IT. There’s never been a better time to do something great in business with Apple technology.", + "title": "Apps in Business Get-Together", + "startTime": "2017-06-07T18:30:00-07:00", + "endTime": "2017-06-07T19:45:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Get-Together", + "roomId": 86 + }, { + "id": "wwdc2017-505", + "staticContentId": 1601, + "eventContentId": 505, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/505", + "description": "To Be Announced", + "title": "🤔 Still thinking up a name for this.", + "startTime": "2017-06-07T13:50:00-07:00", + "endTime": "2017-06-07T14:50:00-07:00", + "trackId": 1, + "type": "Session", + "roomId": 62, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-2220", + "staticContentId": 1831, + "eventContentId": 2220, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2220", + "description": "To Be Announced", + "title": "🍮 We flan on telling you later.", + "startTime": "2017-06-07T17:10:00-07:00", + "endTime": "2017-06-07T18:10:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 68 + }, { + "id": "wwdc2017-4140", + "staticContentId": 1894, + "eventContentId": 4140, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4140", + "description": "To Be Announced", + "title": "📽 Just wait. The hype is reel.", + "startTime": "2017-06-08T13:00:00-07:00", + "endTime": "2017-06-08T16:10:00-07:00", + "trackId": 5, + "type": "Lab", + "roomId": 77 + }, { + "id": "wwdc2017-4040", + "staticContentId": 1888, + "eventContentId": 4040, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4040", + "description": "To Be Announced", + "title": "👠 活动名会晚点出来,因为起名的人脚崴了。", + "startTime": "2017-06-06T13:00:00-07:00", + "endTime": "2017-06-06T16:10:00-07:00", + "trackId": 5, + "type": "Lab", + "roomId": 77 + }, { + "id": "wwdc2017-5130", + "staticContentId": 1645, + "eventContentId": 5130, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5130", + "description": "To Be Announced", + "title": "👃 Nobody nose what to call this yet.", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T12:00:00-07:00", + "trackId": 1, + "type": "Lab", + "roomId": 67 + }, { + "id": "wwdc2017-4120", + "staticContentId": 1883, + "eventContentId": 4120, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4120", + "description": "To Be Announced", + "title": "😢 Você vai se emojionar com as novidades.", + "startTime": "2017-06-07T16:10:00-07:00", + "endTime": "2017-06-07T18:00:00-07:00", + "trackId": 5, + "type": "Lab", + "roomId": 71 + }, { + "id": "wwdc2017-212", + "staticContentId": 1620, + "eventContentId": 212, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/212", + "description": "To Be Announced", + "title": "👻 Ghoul luck figuring out what we’re planning.", + "startTime": "2017-06-07T11:00:00-07:00", + "endTime": "2017-06-07T12:00:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 62, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-2260", + "staticContentId": 1902, + "eventContentId": 2260, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2260", + "description": "To Be Announced", + "title": "🐨 You just aren’t koalafied to know yet.", + "startTime": "2017-06-08T10:00:00-07:00", + "endTime": "2017-06-08T12:30:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 68 + }, { + "id": "wwdc2017-5060", + "staticContentId": 1909, + "eventContentId": 5060, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5060", + "description": "HTTP Live Streaming enables the reliable delivery of media content over a wide variety of network conditions. FairPlay Streaming allows you to protect your content. Get one-on-one technical guidance from Apple engineers about using these technologies in your apps. Bring your code and your questions.", + "title": "HTTP Live Streaming Lab", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T11:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 1, + "type": "Lab", + "roomId": 72 + }, { + "id": "wwdc2017-5170", + "staticContentId": 1910, + "eventContentId": 5170, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5170", + "description": "HTTP Live Streaming enables the reliable delivery of media content over a wide variety of network conditions. FairPlay Streaming allows you to protect your content. Get one-on-one technical guidance from Apple engineers about using these technologies in your apps. Bring your code and your questions.", + "title": "HTTP Live Streaming Lab", + "startTime": "2017-06-08T15:10:00-07:00", + "endTime": "2017-06-08T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 1, + "type": "Lab", + "roomId": 73 + }, { + "id": "wwdc2017-2400", + "staticContentId": 1908, + "eventContentId": 2400, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2400", + "description": "Meet with Apple engineers about writing high performance and energy-efficient code. Figure out what is using up that battery capacity, and what you can do about it! Come prepared to have your questions about power and performance answered.", + "title": "Power and Performance Lab", + "startTime": "2017-06-09T11:00:00-07:00", + "endTime": "2017-06-09T13:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 6, + "type": "Lab", + "roomId": 75 + }, { + "id": "wwdc2017-5040", + "staticContentId": 1696, + "eventContentId": 5040, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/5040", + "description": "iOS, macOS, watchOS and tvOS offer a rich set APIs for recording, processing, and playing back audio in your apps. Additionally, Audio Unit Extensions let you add sophisticated audio manipulation and processing capabilities to host apps. Get one-on-one technical guidance from Apple engineers about using Audio APIs and Audio Unit Extensions. Bring your code and your questions.", + "title": "Audio Lab", + "startTime": "2017-06-06T16:10:00-07:00", + "endTime": "2017-06-06T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 1, + "type": "Lab", + "roomId": 72 + }, { + "id": "wwdc2017-7230", + "staticContentId": 1898, + "eventContentId": 7230, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7230", + "description": "Engineers from Apple’s networking teams will be on hand to help you solve networking problems, optimize your networking code, and keep up-to-date with the latest networking standards.", + "title": "Networking Lab", + "startTime": "2017-06-09T13:50:00-07:00", + "endTime": "2017-06-09T15:50:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 7, + "type": "Lab", + "roomId": 76 + }, { + "id": "wwdc2017-210", + "staticContentId": 1619, + "eventContentId": 210, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/210", + "description": "To Be Announced", + "title": "⛺️ Nicht der Session Name Zelt, sondern der Inhalt.", + "startTime": "2017-06-07T10:00:00-07:00", + "endTime": "2017-06-07T10:40:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-7110", + "staticContentId": 1895, + "eventContentId": 7110, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7110", + "description": "Get together with engineers in Apple's Core OS and Kernel team to ask your questions and get expert advice on GCD, XPC and other low-level operating system services.", + "title": "Kernel \u0026 Runtime Lab", + "startTime": "2017-06-08T10:00:00-07:00", + "endTime": "2017-06-08T12:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 7, + "type": "Lab", + "roomId": 76 + }, { + "id": "wwdc2017-7220", + "staticContentId": 1849, + "eventContentId": 7220, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7220", + "description": "To Be Announced", + "title": "✍️ We’re drawing a blank on this name.", + "startTime": "2017-06-09T12:00:00-07:00", + "endTime": "2017-06-09T13:50:00-07:00", + "trackId": 7, + "type": "Lab", + "roomId": 76 + }, { + "id": "wwdc2017-249", + "staticContentId": 1691, + "eventContentId": 249, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/249", + "description": "To Be Announced", + "title": "🐨 You just aren’t koalafied to know yet.", + "trackId": 6, + "type": "Video" + }, { + "id": "wwdc2017-403", + "staticContentId": 1676, + "eventContentId": 403, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/403", + "description": "To Be Announced", + "title": "😉 Trust us. It’s a good one.", + "startTime": "2017-06-06T15:10:00-07:00", + "endTime": "2017-06-06T15:50:00-07:00", + "trackId": 5, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-3070", + "staticContentId": 1899, + "eventContentId": 3070, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/3070", + "description": "Engineers from the StoreKit, App Store and iTunes Connect team will be in the lab to answer your questions and advise you on In-App Purchase, Subscriptions, and managing IAP in iTunes Connect.", + "title": "StoreKit Lab", + "startTime": "2017-06-09T13:50:00-07:00", + "endTime": "2017-06-09T16:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS"], + "trackId": 3, + "type": "Lab", + "roomId": 71 + }, { + "id": "wwdc2017-103", + "staticContentId": 1798, + "eventContentId": 103, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/103", + "description": "To Be Announced", + "title": "Not secret anymore haha", + "startTime": "2017-06-05T16:00:00-07:00", + "endTime": "2017-06-05T20:00:00-07:00", + "trackId": 4, + "type": "Special Event", + "roomId": 64, + "keywords": ["🍔", "🍽", "🏖", "🏝", "🏨", "🐠", "📱", "🚘", "✈️", "apple design", "apple designers", "cross platform", "design", "design best practices", "design principles", "global design", "hi", "hig", "human interface", "ios", "ios design", "mac design"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/101g0jrsvv5qcoduisk/101/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/101g0jrsvv5qcoduisk/101/atv_vod_mvp.m3u8", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/101g0jrsvv5qcoduisk/101/subtitles/eng/101_sd_keynote.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/101g0jrsvv5qcoduisk/101/101_hd_keynote.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/101g0jrsvv5qcoduisk/101/101_sd_keynote.mp4", + "duration": 7370 + } + }, { + "id": "wwdc2017-4160", + "staticContentId": 1871, + "eventContentId": 4160, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4160", + "description": "Stop by during Open Hours to talk with Apple engineers about things you learned during the week, to get answers to questions about new technologies you're experimenting with, or to find a fix for a difficult bug.", + "title": "Xcode Open Hours", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T12:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 5, + "type": "Lab", + "roomId": 71 + }, { + "id": "wwdc2017-6070", + "staticContentId": 1864, + "eventContentId": 6070, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/6070", + "description": "To Be Announced", + "title": "😡 Can’t say what this is a pout yet.", + "startTime": "2017-06-07T16:10:00-07:00", + "endTime": "2017-06-07T18:00:00-07:00", + "trackId": 8, + "type": "Lab", + "roomId": 73 + }, { + "id": "wwdc2017-406", + "staticContentId": 1682, + "eventContentId": 406, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/406", + "description": "To Be Announced", + "title": "🍞 We’d loaf to tell you, but not yet.", + "startTime": "2017-06-07T17:10:00-07:00", + "endTime": "2017-06-07T18:10:00-07:00", + "trackId": 5, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-4150", + "staticContentId": 1877, + "eventContentId": 4150, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4150", + "description": "Learn how to build playgrounds and content to teach coding concepts with Swift Playgrounds.", + "title": "Creating Content for Swift Playgrounds Lab", + "startTime": "2017-06-08T12:00:00-07:00", + "endTime": "2017-06-08T15:10:00-07:00", + "platforms": ["iOS", "macOS"], + "trackId": 5, + "type": "Lab", + "roomId": 71 + }, { + "id": "wwdc2017-4050", + "staticContentId": 1873, + "eventContentId": 4050, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4050", + "description": "Join Apple engineering teams as they answer your questions about Swift. Bring your code and your questions.", + "title": "Swift Open Hours", + "startTime": "2017-06-06T15:10:00-07:00", + "endTime": "2017-06-06T18:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 5, + "type": "Lab", + "roomId": 71 + }, { + "id": "wwdc2017-4030", + "staticContentId": 1879, + "eventContentId": 4030, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4030", + "description": "Get help on getting started using Interface Builder storyboards and xibs in your apps. Bring your code and your questions.", + "title": "Introduction to Interface Builder Lab", + "startTime": "2017-06-06T12:00:00-07:00", + "endTime": "2017-06-06T15:10:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 5, + "type": "Lab", + "roomId": 71 + }, { + "id": "wwdc2017-4200", + "staticContentId": 1881, + "eventContentId": 4200, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4200", + "description": "Get expert help on how to use Auto Layout in your apps. Bring your code and talk with Interface Builder, Cocoa, and Cocoa Touch engineers about how to optimally structure your user interface.", + "title": "Advanced Interface Builder and Auto Layout Lab", + "startTime": "2017-06-09T12:00:00-07:00", + "endTime": "2017-06-09T13:50:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 5, + "type": "Lab", + "roomId": 77 + }, { + "id": "wwdc2017-802", + "staticContentId": 1700, + "eventContentId": 802, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/802", + "description": "Design principles are the key to understanding how design serves human needs for safety, meaning, achievement and beauty. Learn what these principles are and how they can help you design more welcoming, understandable, empowering and gratifying user experiences.", + "title": "Essential Design Principles", + "startTime": "2017-06-07T13:50:00-07:00", + "endTime": "2017-06-07T14:50:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["🍔", "🍽", "🏖", "🏝", "🏨", "🐠", "📱", "🚘", "✈️", "apple design", "apple designers", "cross platform", "design", "design best practices", "design principles", "global design", "hi", "hig", "human interface", "ios", "ios design", "mac design"], + "trackId": 9, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-4220", + "staticContentId": 1872, + "eventContentId": 4220, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4220", + "description": "Stop by during Open Hours to talk with Apple engineers about things you learned during the week, to get answers to questions about new technologies you're experimenting with, or to find a fix for a difficult bug.", + "title": "Xcode Open Hours", + "startTime": "2017-06-09T13:50:00-07:00", + "endTime": "2017-06-09T16:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 5, + "type": "Lab", + "roomId": 77 + }, { + "id": "wwdc2017-407", + "staticContentId": 1684, + "eventContentId": 407, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/407", + "description": "To Be Announced", + "title": "🙏 说到活动名称嘛,不可说,不可说。", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T09:40:00-07:00", + "trackId": 5, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-4130", + "staticContentId": 1876, + "eventContentId": 4130, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4130", + "description": "Join Apple engineering teams as they answer your questions about Swift. Bring your code and your questions.", + "title": "Swift Open Hours", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T11:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 5, + "type": "Lab", + "roomId": 77 + }, { + "id": "wwdc2017-4070", + "staticContentId": 1886, + "eventContentId": 4070, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4070", + "description": "To Be Announced", + "title": "🍚 现在让你知道活动名,哥们饭碗就没了。", + "startTime": "2017-06-07T12:00:00-07:00", + "endTime": "2017-06-07T15:00:00-07:00", + "trackId": 5, + "type": "Lab", + "roomId": 77 + }, { + "id": "wwdc2017-4190", + "staticContentId": 1892, + "eventContentId": 4190, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/4190", + "description": "Learn the secrets to snappy start up times for your app from our app launch specialists.", + "title": "Optimizing App Startup Time Lab", + "startTime": "2017-06-09T11:00:00-07:00", + "endTime": "2017-06-09T12:30:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 5, + "type": "Lab", + "roomId": 71 + }, { + "id": "wwdc2017-110", + "staticContentId": 1800, + "eventContentId": 110, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/110", + "description": "Why design apps with accessibility? Meet Todd Stabelfeldt, founder of C4 Consulting, who has lived with quadriplegia since the age of 8. Over his decades-long struggle for increased independence in both his personal and professional lives, Todd has become a noted expert in technologies for the disabled, which he has found can offer not only a level of autonomy but also empowerment and dignity to the mobility impaired. Leading by example, Todd runs a successful business but his real passion lies elsewhere. Hear how apps designed well with accessibility in mind have changed his life as a husband, father and as owner of the “Quadthedral“, his family’s HomeKit-enabled smart home.", + "title": "Convenience for You is Independence for Me", + "startTime": "2017-06-07T12:40:00-07:00", + "endTime": "2017-06-07T13:30:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Special Event", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-509", + "staticContentId": 1630, + "eventContentId": 509, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/509", + "description": "To Be Announced", + "title": "🎻 Still fiddling around with this one.", + "startTime": "2017-06-08T16:10:00-07:00", + "endTime": "2017-06-08T16:50:00-07:00", + "trackId": 1, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-106", + "staticContentId": 1799, + "eventContentId": 106, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/106", + "description": "Dr. Christine Darden started her career in 1967 at NASA’s Langley Research Center as one of a pool of African-American female mathematicians whose talent earned them the nickname of ‘human computers’. Demonstrating strong skills, initiative and perseverance throughout 40 years at NASA, Christine’s accomplishments include becoming one of the first female aerospace engineers, achieving groundbreaking work on sonic boom minimization, and becoming the first African-American woman in senior management at NASA Langley. Hear the remarkable story of one of the pioneering mathematicians upon which the book 'Hidden Figures' was based.", + "title": "From Monroe to NASA", + "startTime": "2017-06-06T12:40:00-07:00", + "endTime": "2017-06-06T13:30:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Special Event", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-605", + "staticContentId": 1666, + "eventContentId": 605, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/605", + "description": "To Be Announced", + "title": "🐝 To bee determined.", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T09:40:00-07:00", + "trackId": 8, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-502", + "staticContentId": 1487, + "eventContentId": 502, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/502", + "description": "To Be Announced", + "title": "🍻 If we told you, we’d be toast.", + "startTime": "2017-06-06T15:10:00-07:00", + "endTime": "2017-06-06T15:50:00-07:00", + "trackId": 1, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-214", + "staticContentId": 1501, + "eventContentId": 214, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/214", + "description": "To Be Announced", + "title": "🔕 This session name doesn’t ring a bell.", + "startTime": "2017-06-07T13:50:00-07:00", + "endTime": "2017-06-07T14:50:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-2040", + "staticContentId": 1564, + "eventContentId": 2040, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2040", + "description": "To Be Announced", + "title": "🗑 This name hasn’t bin released yet.", + "startTime": "2017-06-07T16:10:00-07:00", + "endTime": "2017-06-07T18:00:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 76 + }, { + "id": "wwdc2017-217", + "staticContentId": 1561, + "eventContentId": 217, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/217", + "description": "To Be Announced", + "title": "🍦 Thank you froyo patience.", + "startTime": "2017-06-07T15:10:00-07:00", + "endTime": "2017-06-07T15:50:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-237", + "staticContentId": 1568, + "eventContentId": 237, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/237", + "description": "To Be Announced", + "title": "⛺️ Nicht der Session Name Zelt, sondern der Inhalt.", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T09:40:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-718", + "staticContentId": 1585, + "eventContentId": 718, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/718", + "description": "To Be Announced", + "title": "⛏ We’ve picked a name, but it’s secret.", + "trackId": 7, + "type": "Video" + }, { + "id": "wwdc2017-2080", + "staticContentId": 1587, + "eventContentId": 2080, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2080", + "description": "To Be Announced", + "title": "🤐 N’insistez pas, nous ne dirons rien.", + "startTime": "2017-06-06T13:50:00-07:00", + "endTime": "2017-06-06T16:10:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 68 + }, { + "id": "wwdc2017-701", + "staticContentId": 1570, + "eventContentId": 701, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/701", + "description": "Security standards are continuing to evolve to counter emerging threats, and so too must your apps if you want to best protect your users and their data. Learn about new developments in certificate handling, TLS, and certificate status checking on iOS, macOS, watchOS, and tvOS that impact your apps.", + "title": "Your Apps and Evolving Network Security Standards", + "startTime": "2017-06-06T10:20:00-07:00", + "endTime": "2017-06-06T11:00:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 7, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"], + "related": { + "activities": ["wwdc2017-7020", "wwdc2017-7070"] + } + }, { + "id": "wwdc2017-702", + "staticContentId": 1571, + "eventContentId": 702, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/702", + "description": "To Be Announced", + "title": "⛵️ We’ll tell you schooner or later.", + "startTime": "2017-06-06T11:20:00-07:00", + "endTime": "2017-06-06T12:00:00-07:00", + "trackId": 7, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-703", + "staticContentId": 1572, + "eventContentId": 703, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/703", + "description": "To Be Announced", + "title": "📡 Can’t dish on this yet.", + "startTime": "2017-06-06T15:10:00-07:00", + "endTime": "2017-06-06T15:50:00-07:00", + "trackId": 7, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-711", + "staticContentId": 1578, + "eventContentId": 711, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/711", + "description": "To Be Announced", + "title": "🕶 Sorry to be shady about this.", + "startTime": "2017-06-08T10:00:00-07:00", + "endTime": "2017-06-08T10:40:00-07:00", + "trackId": 7, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-714", + "staticContentId": 1576, + "eventContentId": 714, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/714", + "description": "To Be Announced", + "title": "🌖 Sorry to keep you waning.", + "startTime": "2017-06-08T17:10:00-07:00", + "endTime": "2017-06-08T18:10:00-07:00", + "trackId": 7, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-302", + "staticContentId": 1583, + "eventContentId": 302, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/302", + "description": "To Be Announced", + "title": "👽 ワレワレモシリマセン", + "startTime": "2017-06-07T17:10:00-07:00", + "endTime": "2017-06-07T18:10:00-07:00", + "trackId": 3, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-305", + "staticContentId": 1580, + "eventContentId": 305, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/305", + "description": "To Be Announced", + "title": "📍 Haven’t pinned this down yet.", + "startTime": "2017-06-08T13:50:00-07:00", + "endTime": "2017-06-08T14:50:00-07:00", + "trackId": 3, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-710", + "staticContentId": 1573, + "eventContentId": 710, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/710", + "description": "To Be Announced", + "title": "🏧 Can’t tell you at the moment.", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T09:40:00-07:00", + "trackId": 7, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-232", + "staticContentId": 1566, + "eventContentId": 232, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/232", + "description": "To Be Announced", + "title": "📠 Can’t give you all the fax yet.", + "startTime": "2017-06-08T17:10:00-07:00", + "endTime": "2017-06-08T17:50:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 64, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-707", + "staticContentId": 1574, + "eventContentId": 707, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/707", + "description": "To Be Announced", + "title": "🎅 This one’s under a nondisclosure Claus.", + "startTime": "2017-06-07T15:10:00-07:00", + "endTime": "2017-06-07T15:50:00-07:00", + "trackId": 7, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-709", + "staticContentId": 1575, + "eventContentId": 709, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/709", + "description": "To Be Announced", + "title": "🕴 Still floating a few ideas.", + "startTime": "2017-06-07T16:10:00-07:00", + "endTime": "2017-06-07T16:50:00-07:00", + "trackId": 7, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-715", + "staticContentId": 1577, + "eventContentId": 715, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/715", + "description": "To Be Announced", + "title": "🐙 O polvo quer saber as novidades.", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T09:40:00-07:00", + "trackId": 7, + "type": "Session", + "roomId": 64, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-303", + "staticContentId": 1579, + "eventContentId": 303, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/303", + "description": "To Be Announced", + "title": "🔒 我们什么都保密,你懂的。", + "startTime": "2017-06-08T11:00:00-07:00", + "endTime": "2017-06-08T12:00:00-07:00", + "trackId": 3, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-2390", + "staticContentId": 1588, + "eventContentId": 2390, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2390", + "description": "To Be Announced", + "title": "🛋 We haven’t furnished naming this yet.", + "startTime": "2017-06-09T11:00:00-07:00", + "endTime": "2017-06-09T13:50:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 68 + }, { + "id": "wwdc2017-708", + "staticContentId": 1581, + "eventContentId": 708, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/708", + "description": "To Be Announced", + "title": "🐎 Hold your horses. We can’t tell you yet.", + "startTime": "2017-06-07T16:10:00-07:00", + "endTime": "2017-06-07T16:50:00-07:00", + "trackId": 7, + "type": "Session", + "roomId": 62, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-234", + "staticContentId": 1586, + "eventContentId": 234, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/234", + "description": "To Be Announced", + "title": "🐬 We’re being vague on porpoise.", + "startTime": "2017-06-08T17:10:00-07:00", + "endTime": "2017-06-08T18:10:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-2250", + "staticContentId": 1597, + "eventContentId": 2250, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2250", + "description": "Taking advantage of HealthKit in your app helps your users manage and track their health, but what about the health of your code? Sit down with one of our HealthKit frameworks engineers and get answers to all your HealthKit-related questions to make sure your code is ready to provide a great health experience to your customers.", + "title": "HealthKit Lab", + "startTime": "2017-06-08T09:00:00-07:00", + "endTime": "2017-06-08T12:00:00-07:00", + "platforms": ["iOS", "watchOS"], + "keywords": ["⌚️", "fitness"], + "trackId": 6, + "type": "Lab", + "roomId": 74 + }, { + "id": "wwdc2017-2180", + "staticContentId": 1595, + "eventContentId": 2180, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2180", + "description": "To Be Announced", + "title": "🐻 Hope you can bear the wait.", + "startTime": "2017-06-07T15:10:00-07:00", + "endTime": "2017-06-07T17:00:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 68 + }, { + "id": "wwdc2017-2370", + "staticContentId": 1596, + "eventContentId": 2370, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2370", + "description": "Whether you've just started your SiriKit implementation this week or have a robust ride booking service that launched with iOS 10, drop by to work with the SiriKit engineering team to step through your code, maximize its efficiency, and eliminate possible bugs for your users. Get answers to the questions you have to make your SiriKit extension great.", + "title": "SiriKit Lab", + "startTime": "2017-06-09T09:00:00-07:00", + "endTime": "2017-06-09T12:00:00-07:00", + "platforms": ["iOS", "watchOS"], + "keywords": ["🎤", "domain", "intent"], + "trackId": 6, + "type": "Lab", + "roomId": 69, + "related": { + "resources": [12] + } + }, { + "id": "wwdc2017-221", + "staticContentId": 1502, + "eventContentId": 221, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/221", + "description": "To Be Announced", + "title": "😬 Anticipation intensifies.", + "startTime": "2017-06-07T17:10:00-07:00", + "endTime": "2017-06-07T18:10:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-205", + "staticContentId": 1500, + "eventContentId": 205, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/205", + "description": "To Be Announced", + "title": "👗 We’ll a dress this session name later.", + "startTime": "2017-06-07T09:00:00-07:00", + "endTime": "2017-06-07T09:40:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 62, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-2020", + "staticContentId": 1591, + "eventContentId": 2020, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2020", + "description": "Calling all developers with complications, whether a complication for your user's Watch face or a complication in your timeline code. Meet our ClockKit frameworks engineers and work with them on your code to eliminate bugs you may have and learn the best way to update your timeline to make data fresh and available to users at a glance.", + "title": "ClockKit and WatchKit Lab", + "startTime": "2017-06-06T10:20:00-07:00", + "endTime": "2017-06-06T12:40:00-07:00", + "platforms": ["watchOS"], + "keywords": ["⌚"], + "trackId": 6, + "type": "Lab", + "roomId": 68, + "related": { + "activities": ["wwdc2017-808", "wwdc2017-2200"], + "resources": [9, 5] + } + }, { + "id": "wwdc2017-2310", + "staticContentId": 1593, + "eventContentId": 2310, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2310", + "description": "To Be Announced", + "title": "📡 Can’t dish on this yet.", + "startTime": "2017-06-08T13:00:00-07:00", + "endTime": "2017-06-08T16:00:00-07:00", + "trackId": 6, + "type": "Lab", + "roomId": 69 + }, { + "id": "wwdc2017-717", + "staticContentId": 1544, + "eventContentId": 717, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/717", + "description": "To Be Announced", + "title": "🐥 O nome ainda não pintou.", + "trackId": 7, + "type": "Video" + }, { + "id": "wwdc2017-7090", + "staticContentId": 1545, + "eventContentId": 7090, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/7090", + "description": "Apps enabled to work with CarPlay keep drivers focused on the road with a consistent design that's optimized for use in the car. Learn how to enable your audio, messaging, VoIP calling or automaker app to work with CarPlay. If you develop CarPlay hardware, bring your questions to the CarPlay engineering team.", + "title": "CarPlay Lab", + "startTime": "2017-06-07T16:10:00-07:00", + "endTime": "2017-06-07T18:00:00-07:00", + "platforms": ["iOS"], + "keywords": ["🚗", "🚘", "🚙", "automotive", "callkit", "car", "mediaplayer", "mediaplayer framework", "notifications", "sirikit"], + "trackId": 7, + "type": "Lab", + "roomId": 70 + }, { + "id": "wwdc2017-203", + "staticContentId": 1549, + "eventContentId": 203, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/203", + "description": "To Be Announced", + "title": "🕶 Sorry to be shady about this.", + "startTime": "2017-06-06T11:20:00-07:00", + "endTime": "2017-06-06T12:00:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 63, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-213", + "staticContentId": 1550, + "eventContentId": 213, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/213", + "description": "To Be Announced", + "title": "☕️ Still brewing this up.", + "startTime": "2017-06-07T11:00:00-07:00", + "endTime": "2017-06-07T12:00:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 66, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-219", + "staticContentId": 1554, + "eventContentId": 219, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/219", + "description": "To Be Announced", + "title": "🍵🍵차차 말씀드릴게요, 뭐하는 세션인지.", + "startTime": "2017-06-07T16:10:00-07:00", + "endTime": "2017-06-07T16:50:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 65, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-228", + "staticContentId": 1508, + "eventContentId": 228, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/228", + "description": "To Be Announced", + "title": "😏 Something’s up our sleeve.", + "startTime": "2017-06-08T11:00:00-07:00", + "endTime": "2017-06-08T12:00:00-07:00", + "trackId": 6, + "type": "Session", + "roomId": 64, + "images": ["square", "wide"] + }, { + "id": "wwdc2017-2010", + "staticContentId": 1542, + "eventContentId": 2010, + "eventId": "wwdc2017", + "webPermalink": "https://developer.apple.com/wwdc17/2010", + "description": "Apple Engineers will be on hand to review your code and answer questions about the Contacts and EventKit frameworks. We're here to help get answers, learn about the latest development techniques and tools, and improve your code and apps. Bring your code and your questions.", + "title": "Contacts and EventKit Lab", + "startTime": "2017-06-06T10:20:00-07:00", + "endTime": "2017-06-06T12:40:00-07:00", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 6, + "type": "Lab", + "roomId": 74 + }, { + "id": "wwdc2016-101", + "staticContentId": 165, + "eventContentId": 101, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/101", + "description": "WWDC 2016 Keynote", + "title": "Keynote", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Special Event", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/101g0jrsvv5qcoduisk/101/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/101g0jrsvv5qcoduisk/101/atv_vod_mvp.m3u8", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/101g0jrsvv5qcoduisk/101/subtitles/eng/101_sd_keynote.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/101g0jrsvv5qcoduisk/101/101_hd_keynote.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/101g0jrsvv5qcoduisk/101/101_sd_keynote.mp4", + "duration": 7370 + }, + "related": { + "activities": ["wwdc2016-102", "wwdc2016-103"] + } + }, { + "id": "wwdc2016-723", + "staticContentId": 180, + "eventContentId": 723, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/723", + "description": "Learn how CarPlay integrates with your car's infotainment system. Understand how CarPlay is designed to work with your car's resources including the display, speakers, microphone, user inputs, steering wheel controls, instrument cluster and sensors.", + "title": "Developing CarPlay Systems, Part 2", + "platforms": ["iOS"], + "trackId": 7, + "type": "Video", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/723x16j75lwkg414uxk/723/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/723x16j75lwkg414uxk/723/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/723x16j75lwkg414uxk/723/723_developing_carplay_systems_part_2.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/723x16j75lwkg414uxk/723/subtitles/eng/723_sd_developing_carplay_systems_part_2.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/723x16j75lwkg414uxk/723/723_hd_developing_carplay_systems_part_2.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/723x16j75lwkg414uxk/723/723_sd_developing_carplay_systems_part_2.mp4", + "duration": 1573 + }, + "related": { + "activities": ["wwdc2016-722"] + } + }, { + "id": "wwdc2016-301", + "staticContentId": 133, + "eventContentId": 301, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/301", + "description": "See what's new in subscriptions. Learn how our improvements give you more flexibility and control over pricing, and provide powerful incentives to engage and retain your customers.", + "title": "Introducing Expanded Subscriptions in iTunes Connect", + "platforms": ["iOS", "macOS", "tvOS"], + "keywords": ["iap", "subscription"], + "trackId": 3, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/301fbtjd9exjetky78s/301/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/301fbtjd9exjetky78s/301/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/301fbtjd9exjetky78s/301/301_introducing_expanded_subscriptions_in_itunes_connect.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/301fbtjd9exjetky78s/301/301_hd_introducing_expanded_subscriptions_in_itunes_connect.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/301fbtjd9exjetky78s/301/301_sd_introducing_expanded_subscriptions_in_itunes_connect.mp4", + "duration": 2074 + }, + "related": { + "activities": ["wwdc2016-305", "wwdc2016-702"] + } + }, { + "id": "wwdc2016-702", + "staticContentId": 52, + "eventContentId": 702, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/702", + "description": "The StoreKit API allows apps to request payment for additional functionality or content. Hear about the latest changes to StoreKit including Swift 3.0 APIs, updates to Subscriptions and using StoreKit with iMessage apps. Learn best practices for receipt management and Sandbox testing.", + "title": "Using Store Kit for In-App Purchases with Swift 3", + "platforms": ["iOS", "macOS", "tvOS"], + "keywords": ["iap", "itc", "receipts", "subscriptions"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/702rhpkb0ux7uuzixps/702/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/702rhpkb0ux7uuzixps/702/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/702rhpkb0ux7uuzixps/702/702_using_store_kit_for_inapp_purchases_with_swift_3.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/702rhpkb0ux7uuzixps/702/subtitles/eng/702_sd_using_store_kit_for_inapp_purchases_with_swift_3.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/702rhpkb0ux7uuzixps/702/702_hd_using_store_kit_for_inapp_purchases_with_swift_3.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/702rhpkb0ux7uuzixps/702/702_sd_using_store_kit_for_inapp_purchases_with_swift_3.mp4", + "duration": 3247 + }, + "related": { + "activities": ["wwdc2016-221", "wwdc2016-301", "wwdc2016-305"] + } + }, { + "id": "wwdc2016-103", + "staticContentId": 156, + "eventContentId": 103, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/103", + "description": "Join us for an unforgettable award ceremony celebrating developers and their outstanding work. The 2016 Apple Design Awards recognize state of the art iOS, macOS, watchOS, and tvOS apps that reflect excellence in design and innovation.", + "title": "Apple Design Awards", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Special Event", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/103m0752oxdkymyk6gy/103/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/103m0752oxdkymyk6gy/103/atv_vod_mvp.m3u8", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/103m0752oxdkymyk6gy/103/103_hd_apple_design_awards.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/103m0752oxdkymyk6gy/103/103_sd_apple_design_awards.mp4", + "duration": 4070 + }, + "related": { + "activities": ["wwdc2016-101"] + } + }, { + "id": "wwdc2016-404", + "staticContentId": 82, + "eventContentId": 404, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/404", + "description": "Updated to include the latest features, syntax and best practices for Swift 3, this session introduces the basics of the Swift programming language. Learn the recommended manner in which to declare variables, define functions, work with fundamental value types, protocols, generics, and more. Explore some of the great features that make Swift a safe, fast, and expressive language.", + "title": "Getting Started with Swift", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/404hskg1ijeev16mdej/404/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/404hskg1ijeev16mdej/404/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/404hskg1ijeev16mdej/404/404_getting_started_with_swift.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/404hskg1ijeev16mdej/404/subtitles/eng/404_sd_getting_started_with_swift.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/404hskg1ijeev16mdej/404/404_hd_getting_started_with_swift.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/404hskg1ijeev16mdej/404/404_sd_getting_started_with_swift.mp4", + "duration": 3107 + }, + "related": { + "activities": ["wwdc2016-207", "wwdc2016-402", "wwdc2016-403", "wwdc2016-408", "wwdc2016-415", "wwdc2016-419"] + } + }, { + "id": "wwdc2016-509", + "staticContentId": 229, + "eventContentId": 509, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/509", + "description": "iOS 10 brings a brand new Speech Recognition API that allows you to perform rapid and contextually informed speech recognition in both file-based and realtime scenarios. In this video, you will learn all about the new API and how to bring advanced speech recognition services into your apps.", + "title": "Speech Recognition API", + "platforms": ["iOS"], + "keywords": ["audio stream", "cloud", "icloud", "realtime", "recognition", "siri", "speech"], + "trackId": 1, + "type": "Video", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/509n1cnykqms19r9jyp/509/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/509n1cnykqms19r9jyp/509/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/509n1cnykqms19r9jyp/509/509_speech_recognition_api.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/509n1cnykqms19r9jyp/509/subtitles/eng/509_sd_speech_recognition_api.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/509n1cnykqms19r9jyp/509/509_hd_speech_recognition_api.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/509n1cnykqms19r9jyp/509/509_sd_speech_recognition_api.mp4", + "duration": 697 + }, + "related": { + "activities": ["wwdc2016-205", "wwdc2016-217", "wwdc2016-225"] + } + }, { + "id": "wwdc2016-502", + "staticContentId": 2, + "eventContentId": 502, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/502", + "description": "Become a News Publisher. Apple News allows you to monetize your stories and find new readers. Learn how to sign up and discover how easy it is to integrate with your existing CMS or author stories using the News Publisher authoring tool.", + "title": "Getting Published in Apple News", + "platforms": ["iOS"], + "keywords": ["news"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/502lezynlddsti4drbq/502/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/502lezynlddsti4drbq/502/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/502lezynlddsti4drbq/502/502_getting_published_in_apple_news.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/502lezynlddsti4drbq/502/subtitles/eng/502_sd_getting_published_in_apple_news.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/502lezynlddsti4drbq/502/502_hd_getting_published_in_apple_news.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/502lezynlddsti4drbq/502/502_sd_getting_published_in_apple_news.mp4", + "duration": 2363 + }, + "related": { + "activities": ["wwdc2016-508"] + } + }, { + "id": "wwdc2016-610", + "staticContentId": 98, + "eventContentId": 610, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/610", + "description": "SpriteKit adds new features to make it even easier to create high-performance, power-efficient 2D games. See how tile maps enable you to lay out large scenes quickly and check out new APIs for warp transformations and custom shader attributes. Learn about focus-based interactions on Apple TV, rendering on Apple Watch, and new tools built right into Xcode for measuring performance and integrating with GameplayKit.", + "title": "What's New in SpriteKit", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["2d", "action", "animation", "audio", "camera", "collision", "collisions", "constraint", "gpu", "graphics", "inverse kinematics", "lighting", "metal", "opengl", "physics", "platformer", "puzzle", "render", "shaders", "shading", "skaction", "skaudionode", "skcameranode", "sknode", "skreferencenode", "spatial", "sprite"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/610p9xtklo7t2au11md/610/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/610p9xtklo7t2au11md/610/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/610p9xtklo7t2au11md/610/610_whats_new_in_spritekit.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/610p9xtklo7t2au11md/610/610_hd_whats_new_in_spritekit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/610p9xtklo7t2au11md/610/610_sd_whats_new_in_spritekit.mp4", + "duration": 3001 + }, + "related": { + "activities": ["wwdc2016-215", "wwdc2016-410", "wwdc2016-601", "wwdc2016-607", "wwdc2016-608", "wwdc2016-609", "wwdc2016-611", "wwdc2016-804"] + } + }, { + "id": "wwdc2016-231", + "staticContentId": 38, + "eventContentId": 231, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/231", + "description": "CloudKit keeps app data updated across iOS, macOS, watchOS, tvOS, and the web so you can focus on building your app. Hear best practices from the CloudKit engineering team about how to take advantage of the APIs and push notifications in order to provide your users with the best experience. Learn about the ways Apple apps use CloudKit and how you can apply the same approaches in your app.", + "title": "CloudKit Best Practices", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["☁️", "ckoperation", "key value store", "kvs", "nsoperation", "ubiquitous"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/231bhrh1z1fzrejhbz7/231/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/231bhrh1z1fzrejhbz7/231/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/231bhrh1z1fzrejhbz7/231/231_cloudkit_best_practices.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/231bhrh1z1fzrejhbz7/231/subtitles/eng/231_sd_cloudkit_best_practices.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/231bhrh1z1fzrejhbz7/231/231_hd_cloudkit_best_practices.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/231bhrh1z1fzrejhbz7/231/231_sd_cloudkit_best_practices.mp4", + "duration": 2568 + }, + "related": { + "activities": ["wwdc2016-226", "wwdc2016-304"] + } + }, { + "id": "wwdc2016-217", + "staticContentId": 7, + "eventContentId": 217, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/217", + "description": "iOS 10 introduces SiriKit, a new framework enabling apps to integrate with Siri. Simply by speaking, your apps can send messages, place calls, send payments, and more. Learn how SiriKit helps you create new experiences on iOS and explore design principles for creating a great Siri experience.", + "title": "Introducing SiriKit", + "platforms": ["iOS"], + "keywords": ["🎙", "🦄", "design", "intent", "intentkit", "intents", "intentsui", "siri", "sirikit", "speech", "user experience", "vocab", "vocabulary", "voice"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/217x5143f51ztsxao1u/217/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/217x5143f51ztsxao1u/217/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/217x5143f51ztsxao1u/217/217_introducing_sirikit.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/217x5143f51ztsxao1u/217/217_hd_introducing_sirikit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/217x5143f51ztsxao1u/217/217_sd_introducing_sirikit.mp4", + "duration": 3380 + }, + "related": { + "activities": ["wwdc2016-223", "wwdc2016-225", "wwdc2016-230", "wwdc2016-240", "wwdc2016-509", "wwdc2016-704", "wwdc2016-709"] + } + }, { + "id": "wwdc2016-804", + "staticContentId": 71, + "eventContentId": 804, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/804", + "description": "watchOS 3 represents a big leap forward for Apple Watch and the apps that run on it. Performance improvements, powerful graphics and animation capabilities, deeper access to device capabilities, and a refined navigation model lay the foundation for designing useful and stunning Apple Watch apps. Learn best practices and techniques for making complications, notifications and apps that are highly actionable, glanceable and responsive.", + "title": "Designing Great Apple Watch Experiences", + "platforms": ["watchOS"], + "keywords": ["animation", "apple watch", "clockkit", "complications", "design", "experience", "interface", "notifications", "scenekit", "spritekit", "ui", "user", "ux", "watch", "watchos", "watch os", "wearable"], + "trackId": 9, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/804zpr8et6qv87n8j1z/804/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/804zpr8et6qv87n8j1z/804/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/804zpr8et6qv87n8j1z/804/804_designing_great_apple_watch_experiences.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/804zpr8et6qv87n8j1z/804/subtitles/eng/804_sd_designing_great_apple_watch_experiences.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/804zpr8et6qv87n8j1z/804/804_hd_designing_great_apple_watch_experiences.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/804zpr8et6qv87n8j1z/804/804_sd_designing_great_apple_watch_experiences.mp4", + "duration": 3366 + }, + "related": { + "activities": ["wwdc2016-208", "wwdc2016-211", "wwdc2016-218", "wwdc2016-227", "wwdc2016-235", "wwdc2016-610", "wwdc2016-704", "wwdc2016-801", "wwdc2016-803", "wwdc2016-805"] + } + }, { + "id": "wwdc2016-228", + "staticContentId": 168, + "eventContentId": 228, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/228", + "description": "3D Touch adds a completely new dimension to the iOS user interface and introduces an entirely new way to interact with your iPhone. Explore the existing API and get introduced to additions in iOS 10 that allow you to push the boundaries of 3D Touch. Learn about best practices for incorporating 3D Touch into your apps, how to add support for Quick Actions, Peek, and Pop.", + "title": "A Peek at 3D Touch", + "platforms": ["iOS"], + "keywords": ["3d", "force", "interaction", "peek", "pop", "pressure", "preview", "touch", "uikit"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/228a1kbxogojm4fviqc/228/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/228a1kbxogojm4fviqc/228/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/228a1kbxogojm4fviqc/228/228_a_peek_at_3d_touch.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/228a1kbxogojm4fviqc/228/subtitles/eng/228_sd_a_peek_at_3d_touch.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/228a1kbxogojm4fviqc/228/228_hd_a_peek_at_3d_touch.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/228a1kbxogojm4fviqc/228/228_sd_a_peek_at_3d_touch.mp4", + "duration": 2517 + }, + "related": { + "activities": ["wwdc2016-205", "wwdc2016-216", "wwdc2016-220"] + } + }, { + "id": "wwdc2016-215", + "staticContentId": 107, + "eventContentId": 215, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/215", + "description": "The focus interaction model is a critical component of an engaging and intuitive experience on tvOS. Learn more about how it works, some additions and changes to the API, as well as tips and tricks for making your tvOS app even better.", + "title": "Focus Interaction on tvOS", + "platforms": ["tvOS"], + "keywords": ["api", "focus", "focus engine", "interaction", "siri remote", "uikit"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/215e597a1en6wrh89hm/215/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/215e597a1en6wrh89hm/215/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/215e597a1en6wrh89hm/215/215_focus_interaction_on_tvos.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/215e597a1en6wrh89hm/215/subtitles/eng/215_sd_focus_interaction_on_tvos.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/215e597a1en6wrh89hm/215/215_hd_focus_interaction_on_tvos.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/215e597a1en6wrh89hm/215/215_sd_focus_interaction_on_tvos.mp4", + "duration": 2213 + }, + "related": { + "activities": ["wwdc2016-206", "wwdc2016-210", "wwdc2016-212", "wwdc2016-229", "wwdc2016-610", "wwdc2016-802"] + } + }, { + "id": "wwdc2016-715", + "staticContentId": 54, + "eventContentId": 715, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/715", + "description": "The Accelerate framework gives you fast, energy efficient signal and image processing and linear algebra libraries. Learn about new libraries dedicated to high performance neural networks and numerical integration.", + "title": "Neural Networks and Accelerate", + "platforms": ["iOS", "macOS"], + "keywords": ["accelerate", "compression", "numerics", "vector"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/715v2nxofqo5an4q79a/715/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/715v2nxofqo5an4q79a/715/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/715v2nxofqo5an4q79a/715/715_neural_networks_and_accelerate.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/715v2nxofqo5an4q79a/715/subtitles/eng/715_sd_neural_networks_and_accelerate.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/715v2nxofqo5an4q79a/715/715_hd_neural_networks_and_accelerate.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/715v2nxofqo5an4q79a/715/715_sd_neural_networks_and_accelerate.mp4", + "duration": 1919 + }, + "related": { + "activities": ["wwdc2016-240", "wwdc2016-605", "wwdc2016-606"] + } + }, { + "id": "wwdc2016-213", + "staticContentId": 81, + "eventContentId": 213, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/213", + "description": "The best way to avoid technical debt is to incrementally build-up technical credit. This session builds on last year's Modernizing Existing Apps with Swift presentation to show you how you can continue modernizing your codebase while adopting best practices and adding new feature work.", + "title": "Improving Existing Apps with Modern Best Practices", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["🍻", "🐳", "asset catalog", "catalogue", "colour"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/213r47rtymgcyythv7w/213/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/213r47rtymgcyythv7w/213/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/213r47rtymgcyythv7w/213/213_improving_existing_apps_with_modern_best_practices.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/213r47rtymgcyythv7w/213/subtitles/eng/213_sd_improving_existing_apps_with_modern_best_practices.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/213r47rtymgcyythv7w/213/213_hd_improving_existing_apps_with_modern_best_practices.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/213r47rtymgcyythv7w/213/213_sd_improving_existing_apps_with_modern_best_practices.mp4", + "duration": 2259 + }, + "related": { + "activities": ["wwdc2016-205", "wwdc2016-206", "wwdc2016-208", "wwdc2016-239", "wwdc2016-240", "wwdc2016-304", "wwdc2016-402"] + } + }, { + "id": "wwdc2016-221", + "staticContentId": 117, + "eventContentId": 221, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/221", + "description": "Using On-Demand Resources allows you to create smaller app bundles, enable faster downloads, and add more content than ever before on iOS and tvOS. Learn the recommended approach for delivering apps packaged with On-Demand Resources. Explore strategies for pre-fetching content and understand how to optimize the first-launch experience.", + "title": "Optimizing On-Demand Resources", + "platforms": ["iOS", "tvOS"], + "keywords": ["200", "asset packs", "bundleresourcerequest", "dlc", "download", "initial install", "nsbundleresourcerequest", "prefetch"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/221l723gdmjyvv5pmw7/221/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/221l723gdmjyvv5pmw7/221/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/221l723gdmjyvv5pmw7/221/221_optimizing_ondemand_resources.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/221l723gdmjyvv5pmw7/221/subtitles/eng/221_sd_optimizing_ondemand_resources.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/221l723gdmjyvv5pmw7/221/221_hd_optimizing_ondemand_resources.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/221l723gdmjyvv5pmw7/221/221_sd_optimizing_ondemand_resources.mp4", + "duration": 1653 + }, + "related": { + "activities": ["wwdc2016-206", "wwdc2016-304", "wwdc2016-607", "wwdc2016-702", "wwdc2016-802"] + } + }, { + "id": "wwdc2016-403", + "staticContentId": 76, + "eventContentId": 403, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/403", + "description": "Swift 3 introduces new API Design Guidelines specifically crafted to the unique character of Swift for clear, concise code. This talk will explore the philosophy behind the Swift API Design Guidelines and their application throughout the Swift Standard Library and the Cocoa and Cocoa Touch APIs. See how this API transformation will affect your Swift code and learn how to ensure a smooth transition to Swift 3. Learn how Swift 3 imports Objective-C APIs and how to expose rich Swift interfaces for existing Objective-C libraries.", + "title": "Swift API Design Guidelines", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/403hb0ie2m86hvs7yyn/403/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/403hb0ie2m86hvs7yyn/403/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/403hb0ie2m86hvs7yyn/403/403_swift_api_design_guidelines.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/403hb0ie2m86hvs7yyn/403/subtitles/eng/403_sd_swift_api_design_guidelines.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/403hb0ie2m86hvs7yyn/403/403_hd_swift_api_design_guidelines.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/403hb0ie2m86hvs7yyn/403/403_sd_swift_api_design_guidelines.mp4", + "duration": 2476 + }, + "related": { + "activities": ["wwdc2016-203", "wwdc2016-207", "wwdc2016-402", "wwdc2016-404", "wwdc2016-415", "wwdc2016-416", "wwdc2016-720"] + } + }, { + "id": "wwdc2016-241", + "staticContentId": 418, + "eventContentId": 241, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/241", + "description": "Launched last year with iOS 9 and macOS El Capitan, the new Transit feature in Apple Maps is customized for each city where it's available. Hear about how the Apple Maps team ensures a great customer experience through a combination of transit agency data, field survey, and close attention to the unique transit culture of each city. If you're a transit agency, learn about how you can help to ensure your customers have the most reliable information in Apple Maps.", + "title": "Public Transit in Apple Maps", + "platforms": ["iOS", "macOS"], + "trackId": 6, + "type": "Video", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/241fgk9sdmxcb6c6wz2/241/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/241fgk9sdmxcb6c6wz2/241/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/241fgk9sdmxcb6c6wz2/241/241_public_transit_in_apple_maps.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/241fgk9sdmxcb6c6wz2/241/subtitles/eng/241_sd_public_transit_in_apple_maps.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/241fgk9sdmxcb6c6wz2/241/241_hd_public_transit_in_apple_maps.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/241fgk9sdmxcb6c6wz2/241/241_sd_public_transit_in_apple_maps.mp4", + "duration": 679 + } + }, { + "id": "wwdc2016-713", + "staticContentId": 189, + "eventContentId": 713, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/713", + "description": "Core Motion enables your applications to access a wide array of sensors on iOS and watchOS devices. Discover how steps and activity detection can be used with user elevation changes to develop fitness apps. Explore ways to observe wrist rotation and effort and translate them to immersive health and fitness experiences.", + "title": "Health and Fitness with Core Motion", + "platforms": ["iOS", "watchOS"], + "keywords": ["accel", "accelerometer", "altimeter", "altitude", "bicycle", "climbing", "cmdevice", "cmmotion", "coremotion", "cycling", "driving", "elevation", "fitness", "flights", "floor", "floors", "gyro", "gyroscope", "health", "healthkit", "m7", "m8", "motion", "pedometer", "rotation", "run", "running", "sensor", "sensors", "slope", "stairs", "step", "steps", "walk", "walking", "watchkit"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/713uqrvfj3uo0xewc37/713/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/713uqrvfj3uo0xewc37/713/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/713uqrvfj3uo0xewc37/713/713_health_and_fitness_with_core_motion.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/713uqrvfj3uo0xewc37/713/subtitles/eng/713_sd_health_and_fitness_with_core_motion.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/713uqrvfj3uo0xewc37/713/713_hd_health_and_fitness_with_core_motion.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/713uqrvfj3uo0xewc37/713/713_sd_health_and_fitness_with_core_motion.mp4", + "duration": 2176 + }, + "related": { + "activities": ["wwdc2016-208", "wwdc2016-209", "wwdc2016-235", "wwdc2016-716"] + } + }, { + "id": "wwdc2016-612", + "staticContentId": 104, + "eventContentId": 612, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/612", + "description": "watchOS 3 adds a lineup of technologies for developing games that are responsive, lightweight, and fun. Gain insights into techniques for creating great games for Apple Watch. Discover how to take advantage of gesture recognizers and the Digital Crown for gameplay, SpriteKit and SceneKit for 2D and 3D graphics, and Game Center for turn-based multiplayer games.", + "title": "Game Technologies for Apple Watch", + "platforms": ["watchOS"], + "keywords": ["crown", "game center", "gesture", "scenekit", "spritekit"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/612qhqi7kh3399jwhy7/612/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/612qhqi7kh3399jwhy7/612/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/612qhqi7kh3399jwhy7/612/612_game_technologies_for_apple_watch.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/612qhqi7kh3399jwhy7/612/subtitles/eng/612_sd_game_technologies_for_apple_watch.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/612qhqi7kh3399jwhy7/612/612_hd_game_technologies_for_apple_watch.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/612qhqi7kh3399jwhy7/612/612_sd_game_technologies_for_apple_watch.mp4", + "duration": 2230 + }, + "related": { + "activities": ["wwdc2016-208", "wwdc2016-211", "wwdc2016-410", "wwdc2016-608", "wwdc2016-609", "wwdc2016-611"] + } + }, { + "id": "wwdc2016-704", + "staticContentId": 46, + "eventContentId": 704, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/704", + "description": "Get the latest news and updates from the Wallet and Apple Pay teams. Learn how to integrate Apple Pay into more places than ever before including watchOS, iOS Messages and Intents extensions. Learn about new tools to make testing and developing your Apple Pay-enabled apps even easier. We'll also cover new features in Wallet for retailers, banks, and card issuers.", + "title": "What's New with Wallet and Apple Pay", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["passkit", "wallet"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/704s1a6rjyi2dqhhyi7/704/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/704s1a6rjyi2dqhhyi7/704/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/704s1a6rjyi2dqhhyi7/704/704_whats_new_with_wallet_and_apple_pay.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/704s1a6rjyi2dqhhyi7/704/subtitles/eng/704_sd_whats_new_with_wallet_and_apple_pay.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/704s1a6rjyi2dqhhyi7/704/704_hd_whats_new_with_wallet_and_apple_pay.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/704s1a6rjyi2dqhhyi7/704/704_sd_whats_new_with_wallet_and_apple_pay.mp4", + "duration": 2028 + }, + "related": { + "activities": ["wwdc2016-208", "wwdc2016-217", "wwdc2016-703", "wwdc2016-804"] + } + }, { + "id": "wwdc2016-609", + "staticContentId": 95, + "eventContentId": 609, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/609", + "description": "SceneKit is a fully featured high-level graphics framework enabling your apps and games to create 3D animated scenes and effects. Witness the biggest leap forward in SceneKit yet with the introduction of its new Physically-Based Renderer (PBR). Dive into new APIs for accurate materials, physically-based lights, HDR effects, and enhancements in Model I/O. Walk through an example game using PBR and see how to integrate its workflow into your development.", + "title": "Advances in SceneKit Rendering", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["3d", "collada", "dae", "graph", "graphics", "inverse kinematics", "opengl", "opensubdiv", "pbr", "physically based renderer", "physics", "pixar", "renderer", "rendering", "scene", "scnlayer", "scnnode", "scnview", "usd"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/609pxdzx9vsps1l0qdh/609/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/609pxdzx9vsps1l0qdh/609/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/609pxdzx9vsps1l0qdh/609/609_advances_in_scenekit_rendering.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/609pxdzx9vsps1l0qdh/609/subtitles/eng/609_sd_advances_in_scenekit_rendering.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/609pxdzx9vsps1l0qdh/609/609_hd_advances_in_scenekit_rendering.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/609pxdzx9vsps1l0qdh/609/609_sd_advances_in_scenekit_rendering.mp4", + "duration": 3154 + }, + "related": { + "activities": ["wwdc2016-410", "wwdc2016-608", "wwdc2016-610", "wwdc2016-612", "wwdc2016-712"] + } + }, { + "id": "wwdc2016-204", + "staticContentId": 40, + "eventContentId": 204, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/204", + "description": "Messages allows your apps to create an expressive experience within a conversation. Get an overview of the iMessage App architecture. See how Xcode can easily create a simple sticker pack with your art. Learn how to make an iMessage app that has a custom sticker grid and can make any image you create into a sticker. Go beyond the basic sticker and create animated stickers. Learn how to perfect your iMessage app presentation and layout.", + "title": "iMessage Apps and Stickers, Part 1", + "platforms": ["iOS"], + "keywords": ["bubble", "chat", "interactive", "msmessage"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/204t23fvanrkj7a1oj7/204/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/204t23fvanrkj7a1oj7/204/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/204t23fvanrkj7a1oj7/204/204_imessage_apps_and_stickers_part_1.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/204t23fvanrkj7a1oj7/204/subtitles/eng/204_sd_imessage_apps_and_stickers_part_1.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/204t23fvanrkj7a1oj7/204/204_hd_imessage_apps_and_stickers_part_1.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/204t23fvanrkj7a1oj7/204/204_sd_imessage_apps_and_stickers_part_1.mp4", + "duration": 2165 + }, + "related": { + "activities": ["wwdc2016-205", "wwdc2016-224", "wwdc2016-305"] + } + }, { + "id": "wwdc2016-714", + "staticContentId": 49, + "eventContentId": 714, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/714", + "description": "The next wave of the Internet's evolution is happening now. You'll learn best practices for supporting IPv6, restricting cellular usage, and using Quality of Service to create a fast lane for your iOS apps. Discover how to support a multilingual Internet by using UTF-8, and how new internationalized domain names and email addresses affect you.", + "title": "Networking for the Modern Internet", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["internet", "ipv6", "nsurlsession", "qos"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/714urluxe140lardrb7/714/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/714urluxe140lardrb7/714/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/714urluxe140lardrb7/714/714_networking_for_the_modern_internet.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/714urluxe140lardrb7/714/subtitles/eng/714_sd_networking_for_the_modern_internet.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/714urluxe140lardrb7/714/714_hd_networking_for_the_modern_internet.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/714urluxe140lardrb7/714/714_sd_networking_for_the_modern_internet.mp4", + "duration": 2366 + }, + "related": { + "activities": ["wwdc2016-201", "wwdc2016-230", "wwdc2016-232", "wwdc2016-234", "wwdc2016-504", "wwdc2016-710", "wwdc2016-711"] + } + }, { + "id": "wwdc2016-305", + "staticContentId": 22, + "eventContentId": 305, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/305", + "description": "iTunes Connect has been updated to make your experience with delivering apps to the App Store even better. Learn about time-saving improvements to managing screenshots, new ways to stay up to date with the iTunes Connect for iOS app, and upcoming features to help you gain insights into your data in App Analytics.", + "title": "What's New in iTunes Connect", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["itc"], + "trackId": 3, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/305h9fsce1kcqkvmtvk/305/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/305h9fsce1kcqkvmtvk/305/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/305h9fsce1kcqkvmtvk/305/305_whats_new_in_itunes_connect.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/305h9fsce1kcqkvmtvk/305/subtitles/eng/305_sd_whats_new_in_itunes_connect.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/305h9fsce1kcqkvmtvk/305/305_hd_whats_new_in_itunes_connect.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/305h9fsce1kcqkvmtvk/305/305_sd_whats_new_in_itunes_connect.mp4", + "duration": 2503 + }, + "related": { + "activities": ["wwdc2016-204", "wwdc2016-224", "wwdc2016-301", "wwdc2016-702"] + } + }, { + "id": "wwdc2016-232", + "staticContentId": 153, + "eventContentId": 232, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/232", + "description": "Building a great international user interface goes beyond just translating your app. Explore new and improved APIs in iOS, macOS, and watchOS, and learn how Xcode 8 makes it easy to provide directional images to build first class apps for RTL languages. Hear from experts on how to fine-tune your international UI to create a seamless bidirectional experience and take your app in a new direction.", + "title": "What's New in International User Interfaces", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["i18n", "international", "localization", "right-to-left", "rtl"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/232biqdny8x84wjag07/232/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/232biqdny8x84wjag07/232/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/232biqdny8x84wjag07/232/232_whats_new_in_international_user_interfaces.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/232biqdny8x84wjag07/232/subtitles/eng/232_sd_whats_new_in_international_user_interfaces.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/232biqdny8x84wjag07/232/232_hd_whats_new_in_international_user_interfaces.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/232biqdny8x84wjag07/232/232_sd_whats_new_in_international_user_interfaces.mp4", + "duration": 2358 + }, + "related": { + "activities": ["wwdc2016-201", "wwdc2016-203", "wwdc2016-205", "wwdc2016-236", "wwdc2016-238", "wwdc2016-714", "wwdc2016-801", "wwdc2016-803", "wwdc2014-412"] + } + }, { + "id": "wwdc2016-720", + "staticContentId": 59, + "eventContentId": 720, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/720", + "description": "Swift 3 provides new interfaces that make it easier than ever to write applications with Grand Central Dispatch. Learn the basics of GCD and best practices on how to use it to architect your Swift application. You'll also hear about new APIs and other GCD improvements.", + "title": "Concurrent Programming With GCD in Swift 3", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["dispatch", "gcd", "qos", "queue", "runloop", "thread"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/720w6g8t9zhd23va0ai/720/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/720w6g8t9zhd23va0ai/720/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/720w6g8t9zhd23va0ai/720/720_concurrent_programming_with_gcd_in_swift_3.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/720w6g8t9zhd23va0ai/720/720_hd_concurrent_programming_with_gcd_in_swift_3.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/720w6g8t9zhd23va0ai/720/720_sd_concurrent_programming_with_gcd_in_swift_3.mp4", + "duration": 2141 + }, + "related": { + "activities": ["wwdc2016-205", "wwdc2016-219", "wwdc2016-227", "wwdc2016-402", "wwdc2016-403", "wwdc2016-411", "wwdc2016-412", "wwdc2016-415", "wwdc2016-416", "wwdc2016-418", "wwdc2016-719"] + } + }, { + "id": "wwdc2016-608", + "staticContentId": 102, + "eventContentId": 608, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/608", + "description": "GameplayKit provides developers a collection of essential tools and techniques used to implement modern gameplay algorithms. Learn what's new in GameplayKit and check out advances in pathfinding, autonomous agents, and game AI, as well as many enhancements supporting GameplayKit in Xcode. Tap into new capabilities for 2D and 3D spatial partitioning, and explore noise-based procedural data generation useful for height maps, natural textures, and more.", + "title": "What's New in GameplayKit", + "platforms": ["iOS", "macOS", "tvOS"], + "keywords": ["ai", "behavior", "component", "game", "gpagent", "gprandomdistribution", "gpstate", "gpstatemachine", "logic", "path", "pathfinding", "random", "rule", "state machine", "strategist", "strategy"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/608p3mqohp4bat0id7s/608/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/608p3mqohp4bat0id7s/608/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/608p3mqohp4bat0id7s/608/608_whats_new_in_gameplaykit.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/608p3mqohp4bat0id7s/608/subtitles/eng/608_sd_whats_new_in_gameplaykit.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/608p3mqohp4bat0id7s/608/608_hd_whats_new_in_gameplaykit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/608p3mqohp4bat0id7s/608/608_sd_whats_new_in_gameplaykit.mp4", + "duration": 2472 + }, + "related": { + "activities": ["wwdc2016-601", "wwdc2016-609", "wwdc2016-610", "wwdc2016-611", "wwdc2016-612"] + } + }, { + "id": "wwdc2016-224", + "staticContentId": 140, + "eventContentId": 224, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/224", + "description": "Messages apps allow people to collaborate by using your app. Learn how people can work together to accomplish a task within the conversation. Customize the appearance of the messages your app can send. Learn about how to manage your app state in one-to-one and group conversations to provide an engaging and collaborative experience.", + "title": "iMessage Apps and Stickers, Part 2", + "platforms": ["iOS"], + "keywords": ["bubble", "chat", "ckmessage"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/224g9mui5qb06o6ukpf/224/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/224g9mui5qb06o6ukpf/224/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/224g9mui5qb06o6ukpf/224/224_imessage_apps_and_stickers_part_2.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/224g9mui5qb06o6ukpf/224/subtitles/eng/224_sd_imessage_apps_and_stickers_part_2.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/224g9mui5qb06o6ukpf/224/224_hd_imessage_apps_and_stickers_part_2.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/224g9mui5qb06o6ukpf/224/224_sd_imessage_apps_and_stickers_part_2.mp4", + "duration": 2727 + }, + "related": { + "activities": ["wwdc2016-204", "wwdc2016-205", "wwdc2016-305"] + } + }, { + "id": "wwdc2016-604", + "staticContentId": 67, + "eventContentId": 604, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/604", + "description": "Metal is the powerful low-overhead graphics and compute technology designed to unlock the power of the GPU. Check out the latest additions to the Metal frameworks and get details about supporting tessellation in your apps and games. Discover how to take control over synchronization and learn how to use resource heaps for even more efficient memory usage. See what's new in Metal debugging and profiling tools and gain insight into analyzing and optimizing performance.", + "title": "What's New in Metal, Part 1", + "platforms": ["iOS", "macOS", "tvOS"], + "keywords": ["3d", "3d graphics", "compute", "gpgpu", "gpu", "metl", "mtl", "mtldevice", "opengl", "opengl es", "renderer", "shader", "simd"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/604oezpg3wmqrkxl0t7/604/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/604oezpg3wmqrkxl0t7/604/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/604oezpg3wmqrkxl0t7/604/604_whats_new_in_metal_part_1.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/604oezpg3wmqrkxl0t7/604/subtitles/eng/604_sd_whats_new_in_metal_part_1.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/604oezpg3wmqrkxl0t7/604/604_hd_whats_new_in_metal_part_1.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/604oezpg3wmqrkxl0t7/604/604_sd_whats_new_in_metal_part_1.mp4", + "duration": 3336 + }, + "related": { + "activities": ["wwdc2016-602", "wwdc2016-603", "wwdc2016-605", "wwdc2016-606"] + } + }, { + "id": "wwdc2016-411", + "staticContentId": 93, + "eventContentId": 411, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/411", + "description": "Join engineers from the Instruments team for another focused look at the System Trace Instruments profiling template and how to get the most out of it. Discover how threads, virtual memory, and locking interact to affect performance. Dive deep for a practical look at how you can improve your app's responsiveness and keep your users engaged.", + "title": "System Trace in Depth", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["debug", "instruments", "lock", "locking", "locks", "memory", "performance", "profile", "profiling", "system", "template", "thread", "threads", "trace", "virtual memory"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/411jge60tmuuh7dolja/411/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/411jge60tmuuh7dolja/411/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/411jge60tmuuh7dolja/411/411_system_trace_in_depth.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/411jge60tmuuh7dolja/411/subtitles/eng/411_sd_system_trace_in_depth.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/411jge60tmuuh7dolja/411/411_hd_system_trace_in_depth.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/411jge60tmuuh7dolja/411/411_sd_system_trace_in_depth.mp4", + "duration": 2238 + }, + "related": { + "activities": ["wwdc2016-406", "wwdc2016-410", "wwdc2016-418", "wwdc2016-719", "wwdc2016-720"] + } + }, { + "id": "wwdc2016-605", + "staticContentId": 137, + "eventContentId": 605, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/605", + "description": "Discover enhancements to the Metal shading language and how to use function specialization to improve performance while reducing the number of shader configurations in your app. Take advantage of resource read-writes to enable amazing new rendering techniques, understand how to support wide color, and accelerate your deep learning algorithms using the Metal Performance Shaders framework.", + "title": "What's New in Metal, Part 2", + "platforms": ["iOS", "macOS", "tvOS"], + "keywords": ["3d", "3d graphics", "cnn", "computational neural networks", "compute", "deep learning", "gpgpu", "gpu", "metl", "mtl", "mtldevice", "neural", "opengl", "opengl es", "renderer", "shader", "simd"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/605ooaey8tbzegv8fth/605/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/605ooaey8tbzegv8fth/605/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/605ooaey8tbzegv8fth/605/605_whats_new_in_metal_part_2.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/605ooaey8tbzegv8fth/605/subtitles/eng/605_sd_whats_new_in_metal_part_2.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/605ooaey8tbzegv8fth/605/605_hd_whats_new_in_metal_part_2.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/605ooaey8tbzegv8fth/605/605_sd_whats_new_in_metal_part_2.mp4", + "duration": 3701 + }, + "related": { + "activities": ["wwdc2016-602", "wwdc2016-603", "wwdc2016-604", "wwdc2016-606", "wwdc2016-712", "wwdc2016-715"] + } + }, { + "id": "wwdc2016-214", + "staticContentId": 18, + "eventContentId": 214, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/214", + "description": "Learn how to bring your Content Blocker App Extensions to macOS and how to expose your application's abilities through Safari with Safari App Extensions. Safari App Extensions let you take full advantage of web technologies, Cocoa, and other system frameworks that you already use in your app on macOS.", + "title": "Extending your App with Safari App Extensions", + "platforms": ["iOS", "macOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/214b51jlndqja1bpptt/214/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/214b51jlndqja1bpptt/214/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/214b51jlndqja1bpptt/214/214_extending_your_app_with_safari_app_extensions.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/214b51jlndqja1bpptt/214/subtitles/eng/214_sd_extending_your_app_with_safari_app_extensions.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/214b51jlndqja1bpptt/214/214_hd_extending_your_app_with_safari_app_extensions.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/214b51jlndqja1bpptt/214/214_sd_extending_your_app_with_safari_app_extensions.mp4", + "duration": 2148 + }, + "related": { + "activities": ["wwdc2016-420", "wwdc2015-224", "wwdc2014-205", "wwdc2014-217"] + } + }, { + "id": "wwdc2016-508", + "staticContentId": 4, + "eventContentId": 508, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/508", + "description": "Apple News beautifully introduces new readers to your stories. Learn about Apple News Format and how it can be used to author rich, responsive stories that intelligently adapt to all screen sizes. Discover the many features of Apple News including interactive galleries, video, audio, and animations which help to make your content more engaging than ever.", + "title": "Using Apple News Format to Create Rich and Responsive Stories", + "platforms": ["iOS"], + "keywords": ["news"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/508nbofuzf16hljuwqe/508/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/508nbofuzf16hljuwqe/508/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/508nbofuzf16hljuwqe/508/508_using_apple_news_format_to_create_rich_and_responsive_stories.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/508nbofuzf16hljuwqe/508/subtitles/eng/508_sd_using_apple_news_format_to_create_rich_and_responsive_stories.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/508nbofuzf16hljuwqe/508/508_hd_using_apple_news_format_to_create_rich_and_responsive_stories.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/508nbofuzf16hljuwqe/508/508_sd_using_apple_news_format_to_create_rich_and_responsive_stories.mp4", + "duration": 2229 + }, + "related": { + "activities": ["wwdc2016-502"] + } + }, { + "id": "wwdc2016-106", + "staticContentId": 266, + "eventContentId": 106, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/106", + "description": "When Ajit Narayanan began working on technologies for children with disabilities in India in 2008, it was the beginning of an incredible journey down a rabbit hole — one that took him and his team on a wild ride across the worlds of electrical engineering, autism, cross-cultural communication and the mathematics of language. His journey led him to build Avaz, a wheelchair-mounted tablet to help people with disabilities communicate, then even more ambitiously, to invent FreeSpeech, an entirely new visual language that could break down language barriers altogether. Ajit will talk about the series of events that led to the creation of the Avaz and FreeSpeech apps, their impact in India and around the world (earning him the National Award for Empowerment of People with Disabilities from the President of India) and his ideas on the transformative role that apps can play in education.", + "title": "Talking In Pictures: Reconstructing the Building Blocks of Language", + "trackId": 4, + "type": "Special Event", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/106r1nsdtsnrih7t6id/106/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/106r1nsdtsnrih7t6id/106/atv_vod_mvp.m3u8", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/106r1nsdtsnrih7t6id/106/106_hd_talking_in_pictures_reconstructing_the_building_blocks_of_language.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/106r1nsdtsnrih7t6id/106/106_sd_talking_in_pictures_reconstructing_the_building_blocks_of_language.mp4", + "duration": 3098 + } + }, { + "id": "wwdc2016-710", + "staticContentId": 58, + "eventContentId": 710, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/710", + "description": "Learn what's new with HomeKit in iOS 10 including support for new types of accessories such as cameras and doorbells, enhancements in remotely connecting with accessories, how set up of Wi-Fi HomeKit accessories has been greatly improved, and how to write HomeKit enabled tvOS Apps.", + "title": "What's New in HomeKit", + "platforms": ["iOS", "tvOS", "watchOS"], + "keywords": ["🏠", "🏡", "action set", "ble", "bluetooth", "btle", "camera", "hap", "hmaccessory", "hmcharacteristic", "hmhomemanager", "hmroom", "hmservice", "hmtrigger", "hmzone", "home", "home automation", "homekit", "mfi", "notification", "profile", "wac", "wifi", "wi-fi"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/710tkhyprou9hhbnc6g/710/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/710tkhyprou9hhbnc6g/710/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/710tkhyprou9hhbnc6g/710/710_whats_new_in_homekit.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/710tkhyprou9hhbnc6g/710/subtitles/eng/710_sd_whats_new_in_homekit.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/710tkhyprou9hhbnc6g/710/710_hd_whats_new_in_homekit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/710tkhyprou9hhbnc6g/710/710_sd_whats_new_in_homekit.mp4", + "duration": 2037 + }, + "related": { + "activities": ["wwdc2016-104", "wwdc2016-407", "wwdc2016-714", "wwdc2016-802"] + } + }, { + "id": "wwdc2016-212", + "staticContentId": 129, + "eventContentId": 212, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/212", + "description": "Join us for an introduction to TVMLKit, a template-based UI layout technology that is part of tvOS. Learn about new features coming in tvOS 10, as well as best practices in architecting your application, styling and customization of templates, and media playback.", + "title": "Developing tvOS Apps Using TVMLKit: Part 1", + "platforms": ["tvOS"], + "keywords": ["layout", "media", "streaming", "template", "tvjs", "tvml", "uikit"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/212s41rh77qgdg26s86/212/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/212s41rh77qgdg26s86/212/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/212s41rh77qgdg26s86/212/212_developing_tvos_apps_using_tvmlkit_part_1.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/212s41rh77qgdg26s86/212/subtitles/eng/212_sd_developing_tvos_apps_using_tvmlkit_part_1.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/212s41rh77qgdg26s86/212/212_hd_developing_tvos_apps_using_tvmlkit_part_1.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/212s41rh77qgdg26s86/212/212_sd_developing_tvos_apps_using_tvmlkit_part_1.mp4", + "duration": 3405 + }, + "related": { + "activities": ["wwdc2016-206", "wwdc2016-210", "wwdc2016-215", "wwdc2016-229", "wwdc2016-506", "wwdc2016-802"] + } + }, { + "id": "wwdc2016-223", + "staticContentId": 42, + "eventContentId": 223, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/223", + "description": "Search APIs make it easy for users to discover information in your app and the app itself. New features expand the search capabilities allowing users to search directly in your app and enable you to search your own app index. Learn about the latest API updates and the new privacy-friendly method for improving the ranking of your app content.", + "title": "Making the Most of Search APIs", + "platforms": ["iOS", "macOS"], + "keywords": ["corespotlight", "markup", "nsuseractivity", "schema", "spotlight", "web"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/223j90dqr7q1xyld1mv/223/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/223j90dqr7q1xyld1mv/223/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/223j90dqr7q1xyld1mv/223/223_making_the_most_of_search_apis.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/223j90dqr7q1xyld1mv/223/223_hd_making_the_most_of_search_apis.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/223j90dqr7q1xyld1mv/223/223_sd_making_the_most_of_search_apis.mp4", + "duration": 3271 + }, + "related": { + "activities": ["wwdc2016-217", "wwdc2016-240", "wwdc2016-709"] + } + }, { + "id": "wwdc2016-402", + "staticContentId": 74, + "eventContentId": 402, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/402", + "description": "Hear about the newest features in Swift 3, the third major release of the safe, fast, and expressive language, and the first major release built with the open source community. Gain insight into the latest changes in Xcode including enhanced migration support to help move your code to Swift 3. Learn how you can get involved in the open source community at Swift.org.", + "title": "What's New in Swift", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/402h429l9d0hy98c9m6/402/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/402h429l9d0hy98c9m6/402/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/402h429l9d0hy98c9m6/402/402_whats_new_in_swift.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/402h429l9d0hy98c9m6/402/subtitles/eng/402_sd_whats_new_in_swift.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/402h429l9d0hy98c9m6/402/402_hd_whats_new_in_swift.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/402h429l9d0hy98c9m6/402/402_sd_whats_new_in_swift.mp4", + "duration": 2474 + }, + "related": { + "activities": ["wwdc2016-207", "wwdc2016-213", "wwdc2016-242", "wwdc2016-403", "wwdc2016-404", "wwdc2016-405", "wwdc2016-408", "wwdc2016-415", "wwdc2016-416", "wwdc2016-720"] + } + }, { + "id": "wwdc2016-505", + "staticContentId": 224, + "eventContentId": 505, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/505", + "description": "iOS 10 and macOS 10.12 brings a powerful set of new APIs to work with many types of photos. Explore using Core Image to process RAW image files from many popular cameras and recent iOS devices. See how to edit and enhance Live Photos directly within your app.", + "title": "Live Photo Editing and RAW Processing with Core Image", + "platforms": ["iOS"], + "keywords": ["buffer", "coreimage", "core image", "filter", "image", "image processing", "jpg", "live photo", "photo", "pixel", "raw"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/505mia12r7dwmk3aumw/505/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/505mia12r7dwmk3aumw/505/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/505mia12r7dwmk3aumw/505/505_live_photo_editing_and_raw_processing_with_core_image.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/505mia12r7dwmk3aumw/505/subtitles/eng/505_sd_live_photo_editing_and_raw_processing_with_core_image.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/505mia12r7dwmk3aumw/505/505_hd_live_photo_editing_and_raw_processing_with_core_image.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/505mia12r7dwmk3aumw/505/505_sd_live_photo_editing_and_raw_processing_with_core_image.mp4", + "duration": 3511 + }, + "related": { + "activities": ["wwdc2016-501", "wwdc2016-712"] + } + }, { + "id": "wwdc2016-210", + "staticContentId": 106, + "eventContentId": 210, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/210", + "description": "Learn how to make your tvOS interface more dynamic, intuitive, and high-performing with tips and tricks learned in this session.", + "title": "Mastering UIKit on tvOS", + "platforms": ["tvOS"], + "keywords": ["appletv", "interaction", "performance", "polish", "siri remote", "uicollectionview", "uiimageview", "uikit"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/210e4481b1cnwor4n1q/210/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/210e4481b1cnwor4n1q/210/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/210e4481b1cnwor4n1q/210/210_mastering_uikit_on_tvos.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/210e4481b1cnwor4n1q/210/subtitles/eng/210_sd_mastering_uikit_on_tvos.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/210e4481b1cnwor4n1q/210/210_hd_mastering_uikit_on_tvos.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/210e4481b1cnwor4n1q/210/210_sd_mastering_uikit_on_tvos.mp4", + "duration": 2280 + }, + "related": { + "activities": ["wwdc2016-206", "wwdc2016-212", "wwdc2016-215", "wwdc2016-229", "wwdc2016-607", "wwdc2016-802"] + } + }, { + "id": "wwdc2016-234", + "staticContentId": 28, + "eventContentId": 234, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/234", + "description": "ResearchKit is an open source framework you can use to build compelling apps that gather and present meaningful data used in medical research. Learn about new capabilities, how to create and extend surveys, how to create active tasks that use touch or other built-in and third-party accessory features, and how to effectively participate in the community.", + "title": "What's New in ResearchKit", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/234dvn2mhmc3klk7vy4/234/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/234dvn2mhmc3klk7vy4/234/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/234dvn2mhmc3klk7vy4/234/234_whats_new_in_researchkit.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/234dvn2mhmc3klk7vy4/234/234_hd_whats_new_in_researchkit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/234dvn2mhmc3klk7vy4/234/234_sd_whats_new_in_researchkit.mp4", + "duration": 1919 + }, + "related": { + "activities": ["wwdc2016-209", "wwdc2016-237", "wwdc2016-714"] + } + }, { + "id": "wwdc2016-419", + "staticContentId": 80, + "eventContentId": 419, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/419", + "description": "Building on last year's Protocol-Oriented Programming and Building Better Apps with Value Types sessions, this year's session will highlight tips and tricks for building better Swift apps. See how you can incorporate these design approaches into a real MVC-based Cocoa Touch app, especially in the view and controller layers, where you might not have thought of using these techniques before.", + "title": "Protocol and Value Oriented Programming in UIKit Apps", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["🦄", "swift in practice"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/419lgbsyhjrmqtmq0qh/419/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/419lgbsyhjrmqtmq0qh/419/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/419lgbsyhjrmqtmq0qh/419/419_protocol_and_value_oriented_programming_in_uikit_apps.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/419lgbsyhjrmqtmq0qh/419/subtitles/eng/419_sd_protocol_and_value_oriented_programming_in_uikit_apps.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/419lgbsyhjrmqtmq0qh/419/419_hd_protocol_and_value_oriented_programming_in_uikit_apps.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/419lgbsyhjrmqtmq0qh/419/419_sd_protocol_and_value_oriented_programming_in_uikit_apps.mp4", + "duration": 2391 + }, + "related": { + "activities": ["wwdc2016-404", "wwdc2016-416", "wwdc2015-408", "wwdc2015-414"] + } + }, { + "id": "wwdc2016-709", + "staticContentId": 51, + "eventContentId": 709, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/709", + "description": "Learn about new developments in Privacy on iOS, macOS, watchOS, and tvOS that impact you and your apps. Explore techniques to respect your users' privacy while building great features into your apps.", + "title": "Engineering Privacy for Your Users", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["consent", "privacy", "security"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/709tvxadw201avg5v7n/709/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/709tvxadw201avg5v7n/709/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/709tvxadw201avg5v7n/709/709_engineering_privacy_for_your_users.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/709tvxadw201avg5v7n/709/subtitles/eng/709_sd_engineering_privacy_for_your_users.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/709tvxadw201avg5v7n/709/709_hd_engineering_privacy_for_your_users.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/709tvxadw201avg5v7n/709/709_sd_engineering_privacy_for_your_users.mp4", + "duration": 2331 + }, + "related": { + "activities": ["wwdc2016-217", "wwdc2016-223", "wwdc2016-705", "wwdc2016-706", "wwdc2016-711", "wwdc2016-716"] + } + }, { + "id": "wwdc2016-211", + "staticContentId": 62, + "eventContentId": 211, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/211", + "description": "Quick interactions are essential for creating a compelling Apple Watch app. Gain insights into new gesture, Digital Crown, navigation, and notification APIs, and see how to use these API alongside SceneKit and SpriteKit to create rich, glanceable interfaces. Explore how this expanded toolbox can help make your watch apps quick and responsive.", + "title": "Quick Interaction Techniques for watchOS", + "platforms": ["watchOS"], + "keywords": ["⌚️", "dock"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/211m4cro5y3rrsfzfdj/211/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/211m4cro5y3rrsfzfdj/211/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/211m4cro5y3rrsfzfdj/211/211_quick_interaction_techniques_for_watchos.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/211m4cro5y3rrsfzfdj/211/subtitles/eng/211_sd_quick_interaction_techniques_for_watchos.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/211m4cro5y3rrsfzfdj/211/211_hd_quick_interaction_techniques_for_watchos.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/211m4cro5y3rrsfzfdj/211/211_sd_quick_interaction_techniques_for_watchos.mp4", + "duration": 2062 + }, + "related": { + "activities": ["wwdc2016-208", "wwdc2016-218", "wwdc2016-227", "wwdc2016-612", "wwdc2016-707", "wwdc2016-804"] + } + }, { + "id": "wwdc2016-603", + "staticContentId": 65, + "eventContentId": 603, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/603", + "description": "Building on the fundamentals, dive into the specifics of constructing games and graphics apps with Metal. Learn about scene management and understand how to manage and update Metal resources. Understand the rendering loop, command encoding, and multi-thread synchronization.", + "title": "Adopting Metal, Part 2", + "platforms": ["iOS", "macOS", "tvOS"], + "keywords": ["3d", "3d graphics", "compute", "gpgpu", "gpu", "metl", "mtl", "mtldevice", "opengl", "opengl es", "renderer", "shader", "simd"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/603oba298b1v4z54011/603/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/603oba298b1v4z54011/603/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/603oba298b1v4z54011/603/603_adopting_metal_part_2.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/603oba298b1v4z54011/603/subtitles/eng/603_sd_adopting_metal_part_2.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/603oba298b1v4z54011/603/603_hd_adopting_metal_part_2.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/603oba298b1v4z54011/603/603_sd_adopting_metal_part_2.mp4", + "duration": 2219 + }, + "related": { + "activities": ["wwdc2016-602", "wwdc2016-604", "wwdc2016-605", "wwdc2016-606"] + } + }, { + "id": "wwdc2016-504", + "staticContentId": 14, + "eventContentId": 504, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/504", + "description": "HTTP Live Streaming offers a reliable media playback experiences over a wide variety of network conditions. Join us to learn how to deliver offline playback using the same media assets you already host for online playback. See new additions to the HLS protocol, such as support for fragmented MP4 and in-playlist metadata.", + "title": "What's New in HTTP Live Streaming", + "platforms": ["iOS", "macOS", "tvOS"], + "keywords": ["content protection", "encryption", "fairplay", "fmp4", "fps", "hls", "http live streaming", "live", "mp4", "offline", "playback", "protection", "video", "vod"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/504m956dgg4hlw2uez9/504/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/504m956dgg4hlw2uez9/504/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/504m956dgg4hlw2uez9/504/504_whats_new_in_http_live_streaming.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/504m956dgg4hlw2uez9/504/subtitles/eng/504_sd_whats_new_in_http_live_streaming.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/504m956dgg4hlw2uez9/504/504_hd_whats_new_in_http_live_streaming.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/504m956dgg4hlw2uez9/504/504_sd_whats_new_in_http_live_streaming.mp4", + "duration": 2043 + }, + "related": { + "activities": ["wwdc2016-503", "wwdc2016-506", "wwdc2016-510", "wwdc2016-714"] + } + }, { + "id": "wwdc2016-701", + "staticContentId": 47, + "eventContentId": 701, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/701", + "description": "The Apple File System (APFS) is the next-generation file system designed to scale from an Apple Watch to a Mac Pro. APFS is optimized for Flash/SSD storage, and engineered with encryption as a primary feature. Learn about APFS benefits versus HFS+ and how to make sure your file system code is compatible.", + "title": "Introducing Apple File System", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["apfs", "hfs", "nsfile"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/701q0pnn0ietcautcrv/701/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/701q0pnn0ietcautcrv/701/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/701q0pnn0ietcautcrv/701/701_introducing_apple_file_system.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/701q0pnn0ietcautcrv/701/subtitles/eng/701_sd_introducing_apple_file_system.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/701q0pnn0ietcautcrv/701/701_hd_introducing_apple_file_system.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/701q0pnn0ietcautcrv/701/701_sd_introducing_apple_file_system.mp4", + "duration": 2181 + }, + "related": { + "activities": ["wwdc2016-705"] + } + }, { + "id": "wwdc2016-209", + "staticContentId": 1, + "eventContentId": 209, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/209", + "description": "HealthKit offers more than ever to developers joining in Apple's vibrant health and fitness ecosystem. Discover new ways to integrate the popular activity-tracking features of Apple Watch with your own app. Learn how to contribute to an even more complete picture of users' health data by reading and writing Health Documents from your organization. Review core concepts for working with HealthKit and explore best practices for managing data to ensure your users enjoy a seamless experience.", + "title": "Getting the Most Out of HealthKit", + "platforms": ["iOS", "watchOS"], + "keywords": ["🏃", "🚴", "🏃🏻", "🏃🏼", "🏃🏽", "🏃🏾", "🏃🏿", "🚴🏻", "🚴🏼", "🚴🏽", "🚴🏾", "🚴🏿", "activity rings", "authorization", "cda", "health documents", "health records", "medical records", "wheelchair", "workouts"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/209e37d5ks3pfj21ij5/209/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/209e37d5ks3pfj21ij5/209/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/209e37d5ks3pfj21ij5/209/209_getting_the_most_out_of_healthkit.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/209e37d5ks3pfj21ij5/209/subtitles/eng/209_sd_getting_the_most_out_of_healthkit.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/209e37d5ks3pfj21ij5/209/209_hd_getting_the_most_out_of_healthkit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/209e37d5ks3pfj21ij5/209/209_sd_getting_the_most_out_of_healthkit.mp4", + "duration": 2297 + }, + "related": { + "activities": ["wwdc2016-234", "wwdc2016-235", "wwdc2016-237", "wwdc2016-713", "wwdc2015-203", "wwdc2014-203", "wwdc2014-701"] + } + }, { + "id": "wwdc2016-104", + "staticContentId": 264, + "eventContentId": 104, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/104", + "description": "White House Champion of Change, Forbes 30 under 30 leader, and BBC Women of Africa Hero, Haben Girma is an acclaimed accessibility and inclusion advocate. The first deaf blind person to graduate from Harvard Law School, Haben champions equal access to information for people with disabilities, earning her recognition from both President Obama and President Clinton. Through this presentation, Haben will share how designing with accessibility in mind benefits not just users with disabilities, but developers, too. Throughout history, disability has sparked innovation, leading to breakthroughs in wide-ranging inventions from keyboards to telephones. Hear Haben's remarkable story and learn how incorporating universal access principles into product development can increase access for people with disabilities while simultaneously improving the overall usability of your app.", + "title": "Disability and Innovation: The Universal Benefits of Accessible Design", + "trackId": 4, + "type": "Special Event", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/104b1061nbty638w2cd/104/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/104b1061nbty638w2cd/104/atv_vod_mvp.m3u8", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/104b1061nbty638w2cd/104/subtitles/eng/104_sd_disability_and_innovation_the_universal_benefits_of_accessible_design.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/104b1061nbty638w2cd/104/104_hd_disability_and_innovation_the_universal_benefits_of_accessible_design.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/104b1061nbty638w2cd/104/104_sd_disability_and_innovation_the_universal_benefits_of_accessible_design.mp4", + "duration": 1567 + }, + "related": { + "activities": ["wwdc2016-202", "wwdc2016-407", "wwdc2016-710", "wwdc2016-801"] + } + }, { + "id": "wwdc2016-302", + "staticContentId": 21, + "eventContentId": 302, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/302", + "description": "Search Ads provides a new way to increase awareness of your apps in App Store search results. Learn how sponsored ads in App Store search work, see a preview of the powerful targeting options, reporting and attribution features and how quick and easy it is to get started.", + "title": "Introducing Search Ads", + "platforms": ["iOS"], + "trackId": 3, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/302f5hkfjyg13j84oda/302/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/302f5hkfjyg13j84oda/302/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/302f5hkfjyg13j84oda/302/302_introducing_search_ads.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/302f5hkfjyg13j84oda/302/subtitles/eng/302_sd_introducing_search_ads.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/302f5hkfjyg13j84oda/302/302_hd_introducing_search_ads.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/302f5hkfjyg13j84oda/302/302_sd_introducing_search_ads.mp4", + "duration": 1536 + } + }, { + "id": "wwdc2016-406", + "staticContentId": 88, + "eventContentId": 406, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/406", + "description": "Launching an App is a complicated and subtle process and the ramifications on launch times of different App design patterns are often non-obvious. Come learn what happens in the time between when an App begins launching and when the main() function gets control and how that time relates to the code and structure of your App. Learn about the inner details of the dynamic loader, dyld, and best practices for structuring your code to perform at its best from the very start.", + "title": "Optimizing App Startup Time", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["binding", "dlopen", "dyld", "dylib", "initialization", "initializer", "initializers", "launch", "load", "loader", "loading", "macho", "mach-o", "optimization", "performance", "rebase", "rebasing", "segment", "segments", "start", "startup"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/406i3zbazbegkeh0udt/406/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/406i3zbazbegkeh0udt/406/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/406i3zbazbegkeh0udt/406/406_optimizing_app_startup_time.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/406i3zbazbegkeh0udt/406/subtitles/eng/406_sd_optimizing_app_startup_time.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/406i3zbazbegkeh0udt/406/406_hd_optimizing_app_startup_time.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/406i3zbazbegkeh0udt/406/406_sd_optimizing_app_startup_time.mp4", + "duration": 2362 + }, + "related": { + "activities": ["wwdc2016-405", "wwdc2016-411", "wwdc2016-414", "wwdc2016-418", "wwdc2016-719"] + } + }, { + "id": "wwdc2016-420", + "staticContentId": 19, + "eventContentId": 420, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/420", + "description": "The Web Inspector provides some sleek new tools to help you understand your app's web content performance and memory usage. Explore how you can use Web Inspector's new memory and JavaScript profiling tools to debug web content on iOS and macOS. Discover new features and learn best practices to maximize your effectiveness with the Web Inspector tools.", + "title": "Optimizing Web Content in Your App", + "platforms": ["iOS", "macOS"], + "keywords": ["safari", "uiwebview", "webkit", "wkwebview"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/420lbx5afix4io0xo9p/420/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/420lbx5afix4io0xo9p/420/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/420lbx5afix4io0xo9p/420/420_optimizing_web_content_in_your_app.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/420lbx5afix4io0xo9p/420/subtitles/eng/420_sd_optimizing_web_content_in_your_app.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/420lbx5afix4io0xo9p/420/420_hd_optimizing_web_content_in_your_app.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/420lbx5afix4io0xo9p/420/420_sd_optimizing_web_content_in_your_app.mp4", + "duration": 2485 + }, + "related": { + "activities": ["wwdc2016-214", "wwdc2016-229", "wwdc2016-703", "wwdc2015-504", "wwdc2015-505", "wwdc2014-206", "wwdc2014-512"] + } + }, { + "id": "wwdc2016-105", + "staticContentId": 265, + "eventContentId": 105, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/105", + "description": "Wildlife populations across the globe face innumerable threats that have resulted in dwindling numbers of many species. Ginette Hemley, SVP of Wildlife Conservation at World Wildlife Fund, will take us through many of the bold new approaches to conservation that organizations like WWF are taking to tackle these challenges. One of the most promising and potentially game-changing ideas for solving conservation problems around the world is by applying technology in creative new ways. From examining polar bear DNA to utilizing devices such as thermal imaging cameras and gunshot detectors to drawing upon the power of social networks and apps, learn about the surprising ways that WWF and its partners are harnessing the power of technology to keep up with the planet's most urgent wildlife conservation challenges.", + "title": "Tapping into Innovative Solutions to Save the World's Wildlife", + "trackId": 4, + "type": "Special Event", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/105o1y9n857rpjpmu27/105/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/105o1y9n857rpjpmu27/105/atv_vod_mvp.m3u8", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/105o1y9n857rpjpmu27/105/105_hd_tapping_into_innovative_solutions_to_save_the_worlds_wildlife.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/105o1y9n857rpjpmu27/105/105_sd_tapping_into_innovative_solutions_to_save_the_worlds_wildlife.mp4", + "duration": 2739 + } + }, { + "id": "wwdc2016-602", + "staticContentId": 64, + "eventContentId": 602, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/602", + "description": "Metal provides the best access to the GPU on iOS, tvOS, and macOS, enabling you to maximize the graphics and compute potential of your apps and games. Get introduced to the essential concepts behind Metal, its low-overhead architecture, streamlined API, and support for efficient multi-threading. Start learning how to code with Metal in a walkthrough of rendering a basic scene.", + "title": "Adopting Metal, Part 1", + "platforms": ["iOS", "macOS", "tvOS"], + "keywords": ["3d", "3d graphics", "accelerate", "compute", "frame debugger", "gpgpu", "gpu", "metl", "mtl", "mtlbuffer", "mtlcommandbuffer", "mtldevice", "opengl", "opengl es", "renderer", "shader", "simd", "xcode"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/602o05a86ysk0ngvlgj/602/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/602o05a86ysk0ngvlgj/602/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/602o05a86ysk0ngvlgj/602/602_adopting_metal_part_1.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/602o05a86ysk0ngvlgj/602/subtitles/eng/602_sd_adopting_metal_part_1.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/602o05a86ysk0ngvlgj/602/602_hd_adopting_metal_part_1.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/602o05a86ysk0ngvlgj/602/602_sd_adopting_metal_part_1.mp4", + "duration": 3489 + }, + "related": { + "activities": ["wwdc2016-603", "wwdc2016-604", "wwdc2016-605", "wwdc2016-606"] + } + }, { + "id": "wwdc2016-238", + "staticContentId": 128, + "eventContentId": 238, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/238", + "description": "The Foundation framework, which includes the root object class, classes representing basic data types such as strings and byte arrays, and collection classes for storing other objects, has added new support for specifying Units and Measurements. Understand how to model your measurements and convert within dimensions. Learn from the experts how to use and surface Units and Measurements in your interfaces.", + "title": "Measurements and Units", + "platforms": ["iOS", "macOS", "tvOS"], + "keywords": ["component", "foundation", "length", "measurement", "ui", "unit"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/238eemv232k9lp2px30/238/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/238eemv232k9lp2px30/238/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/238eemv232k9lp2px30/238/238_measurements_and_units.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/238eemv232k9lp2px30/238/238_hd_measurements_and_units.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/238eemv232k9lp2px30/238/238_sd_measurements_and_units.mp4", + "duration": 1917 + }, + "related": { + "activities": ["wwdc2016-201", "wwdc2016-203", "wwdc2016-207", "wwdc2016-232"] + } + }, { + "id": "wwdc2016-415", + "staticContentId": 83, + "eventContentId": 415, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/415", + "description": "While the Swift language makes it easy to write software that is incredibly fast and safe by design, Swift being open source means you can use it on an even broader range of platforms, from mobile devices to the desktop and in the cloud. Come for an overview of available projects at Swift.org and examples of the community in action.", + "title": "Going Server-side with Swift Open Source", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/415kvwo632dbu5csn3g/415/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/415kvwo632dbu5csn3g/415/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/415kvwo632dbu5csn3g/415/415_going_serverside_with_swift_open_source.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/415kvwo632dbu5csn3g/415/subtitles/eng/415_sd_going_serverside_with_swift_open_source.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/415kvwo632dbu5csn3g/415/415_hd_going_serverside_with_swift_open_source.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/415kvwo632dbu5csn3g/415/415_sd_going_serverside_with_swift_open_source.mp4", + "duration": 2274 + }, + "related": { + "activities": ["wwdc2016-207", "wwdc2016-402", "wwdc2016-403", "wwdc2016-404", "wwdc2016-416", "wwdc2016-720"] + } + }, { + "id": "wwdc2016-216", + "staticContentId": 111, + "eventContentId": 216, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/216", + "description": "Direct onscreen manipulation is the cornerstone of the user experience on iOS. iOS 10 includes new support for making onscreen interactions even more immersive and interactive. Dive straight into the philosophy and techniques of building completely interactive, interruptible animations in your apps.", + "title": "Advances in UIKit Animations and Transitions", + "platforms": ["iOS", "tvOS"], + "keywords": ["animations", "dynamics", "navigation", "uikit"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/216v55u6zpxizxkml6k/216/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/216v55u6zpxizxkml6k/216/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/216v55u6zpxizxkml6k/216/216_advances_in_uikit_animations_and_transitions.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/216v55u6zpxizxkml6k/216/subtitles/eng/216_sd_advances_in_uikit_animations_and_transitions.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/216v55u6zpxizxkml6k/216/216_hd_advances_in_uikit_animations_and_transitions.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/216v55u6zpxizxkml6k/216/216_sd_advances_in_uikit_animations_and_transitions.mp4", + "duration": 2776 + }, + "related": { + "activities": ["wwdc2016-205", "wwdc2016-219", "wwdc2016-228", "wwdc2015-229", "wwdc2014-236", "wwdc2013-218", "wwdc2013-221"] + } + }, { + "id": "wwdc2016-226", + "staticContentId": 37, + "eventContentId": 226, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/226", + "description": "CloudKit is the framework that powers iCloud services on all of Apple's platforms. Learn about the new features that have been added over the past year, and dive deep into the new sharing APIs that lets you share private data between iCloud users.", + "title": "What's New with CloudKit", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["☁️", "ckoperation", "key value store", "kvs", "nsoperation", "ubiquitous"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/226aey4ryxex6rvqvn1/226/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/226aey4ryxex6rvqvn1/226/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/226aey4ryxex6rvqvn1/226/226_whats_new_with_cloudkit.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/226aey4ryxex6rvqvn1/226/subtitles/eng/226_sd_whats_new_with_cloudkit.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/226aey4ryxex6rvqvn1/226/226_hd_whats_new_with_cloudkit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/226aey4ryxex6rvqvn1/226/226_sd_whats_new_with_cloudkit.mp4", + "duration": 2645 + }, + "related": { + "activities": ["wwdc2016-208", "wwdc2016-231", "wwdc2016-304"] + } + }, { + "id": "wwdc2016-708", + "staticContentId": 70, + "eventContentId": 708, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/708", + "description": "3D Touch on Notifications provides users with access to media attachments and live content. See how your app can take advantage of this new functionality to provide a rich interactive experience within the notification itself.", + "title": "Advanced Notifications", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["apns", "notifications"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/708tbh8wnspsg01hxwx/708/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/708tbh8wnspsg01hxwx/708/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/708tbh8wnspsg01hxwx/708/708_advanced_notifications.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/708tbh8wnspsg01hxwx/708/subtitles/eng/708_sd_advanced_notifications.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/708tbh8wnspsg01hxwx/708/708_hd_advanced_notifications.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/708tbh8wnspsg01hxwx/708/708_sd_advanced_notifications.mp4", + "duration": 1649 + }, + "related": { + "activities": ["wwdc2016-707", "wwdc2016-724"] + } + }, { + "id": "wwdc2016-240", + "staticContentId": 177, + "eventContentId": 240, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/240", + "description": "iOS and macOS can proactively promote your app and data, thereby increasing user engagement. See how adopting a few simple APIs to inform the OS about your app's capabilities can lead to your app being suggested in various places like the app switcher, on the lock screen, Contacts, and more.", + "title": "Increase Usage of Your App With Proactive Suggestions", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["handoff", "location", "nsuseractivity", "siri", "sirikit"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/240f49ca5uvbzg5pwk5/240/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/240f49ca5uvbzg5pwk5/240/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/240f49ca5uvbzg5pwk5/240/240_increase_usage_of_your_app_with_proactive_suggestions.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/240f49ca5uvbzg5pwk5/240/240_hd_increase_usage_of_your_app_with_proactive_suggestions.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/240f49ca5uvbzg5pwk5/240/240_sd_increase_usage_of_your_app_with_proactive_suggestions.mp4", + "duration": 3096 + }, + "related": { + "activities": ["wwdc2016-213", "wwdc2016-217", "wwdc2016-223", "wwdc2016-225", "wwdc2016-715", "wwdc2015-709", "wwdc2014-219"] + } + }, { + "id": "wwdc2016-102", + "staticContentId": 155, + "eventContentId": 102, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/102", + "description": "WWDC 2016 Platforms State of the Union", + "title": "Platforms State of the Union", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 4, + "type": "Special Event", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/102w0bsn0ge83qfv7za/102/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/102w0bsn0ge83qfv7za/102/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/102w0bsn0ge83qfv7za/102/102_platforms_state_of_the_union.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/102w0bsn0ge83qfv7za/102/subtitles/eng/102_sd_platforms_state_of_the_union.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/102w0bsn0ge83qfv7za/102/102_hd_platforms_state_of_the_union.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/102w0bsn0ge83qfv7za/102/102_sd_platforms_state_of_the_union.mp4", + "duration": 6346 + }, + "related": { + "activities": ["wwdc2016-101", "wwdc2016-203", "wwdc2016-205", "wwdc2016-206", "wwdc2016-208"] + } + }, { + "id": "wwdc2016-722", + "staticContentId": 179, + "eventContentId": 722, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/722", + "description": "CarPlay is a smarter, safer way to use your iPhone in the car. Learn how CarPlay works and how to design your car's infotainment system to work seamlessly with iPhone. Understand best practices for a great user experience that integrates CarPlay with the car's native system.", + "title": "Developing CarPlay Systems, Part 1", + "platforms": ["iOS"], + "trackId": 7, + "type": "Video", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/722x2eefo3u2rp8k8qs/722/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/722x2eefo3u2rp8k8qs/722/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/722x2eefo3u2rp8k8qs/722/722_developing_carplay_systems_part_1.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/722x2eefo3u2rp8k8qs/722/subtitles/eng/722_sd_developing_carplay_systems_part_1.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/722x2eefo3u2rp8k8qs/722/722_hd_developing_carplay_systems_part_1.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/722x2eefo3u2rp8k8qs/722/722_sd_developing_carplay_systems_part_1.mp4", + "duration": 1802 + }, + "related": { + "activities": ["wwdc2016-723"] + } + }, { + "id": "wwdc2016-506", + "staticContentId": 11, + "eventContentId": 506, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/506", + "description": "AVKit on tvOS offers an intuitive user interface for interaction with your media on this powerful new platform. AVKit is built on AVFoundation, which gives you access to the full potential of platform services for operating on time-based audiovisual media. Learn how to leverage the new content proposal APIs, and how to create a seamless interstitial playback experience. Management of media metadata and chapter navigation will also be covered.", + "title": "AVKit on tvOS", + "platforms": ["tvOS"], + "keywords": ["avplayer", "avplayerviewcontroller", "fmp4", "hls", "http live streaming", "media", "mp4", "playback", "scrubbing", "video"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/506ms2tv71tcduwp3dm/506/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/506ms2tv71tcduwp3dm/506/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/506ms2tv71tcduwp3dm/506/506_avkit_on_tvos.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/506ms2tv71tcduwp3dm/506/subtitles/eng/506_sd_avkit_on_tvos.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/506ms2tv71tcduwp3dm/506/506_hd_avkit_on_tvos.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/506ms2tv71tcduwp3dm/506/506_sd_avkit_on_tvos.mp4", + "duration": 2346 + }, + "related": { + "activities": ["wwdc2016-206", "wwdc2016-212", "wwdc2016-229", "wwdc2016-503", "wwdc2016-504", "wwdc2016-802"] + } + }, { + "id": "wwdc2016-220", + "staticContentId": 167, + "eventContentId": 220, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/220", + "description": "Learn essential best practices for using event input from Apple Pencil in your drawing apps. Gain a practical understanding of the concepts behind efficient and accurate touch event processing. Get details about the touch input pipeline on iOS and how to take advantage of it in all your apps.", + "title": "Leveraging Touch Input on iOS", + "platforms": ["iOS"], + "keywords": ["coalesce", "draw", "event", "pencil", "predict", "touch"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/220c6lnr7wkcjewnj1g/220/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/220c6lnr7wkcjewnj1g/220/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/220c6lnr7wkcjewnj1g/220/220_leveraging_touch_input_on_ios.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/220c6lnr7wkcjewnj1g/220/subtitles/eng/220_sd_leveraging_touch_input_on_ios.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/220c6lnr7wkcjewnj1g/220/220_hd_leveraging_touch_input_on_ios.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/220c6lnr7wkcjewnj1g/220/220_sd_leveraging_touch_input_on_ios.mp4", + "duration": 2097 + }, + "related": { + "activities": ["wwdc2016-228", "wwdc2016-607", "wwdc2015-233"] + } + }, { + "id": "wwdc2016-401", + "staticContentId": 96, + "eventContentId": 401, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/401", + "description": "Xcode provides powerful options for managing projects for small and large development teams. Learn how new features in Xcode simplify the process of certificate management, app signing and configuration of your project's build settings.", + "title": "What's New in Xcode App Signing", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/401hmew12wifry4svvi/401/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/401hmew12wifry4svvi/401/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/401hmew12wifry4svvi/401/401_whats_new_in_xcode_app_signing.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/401hmew12wifry4svvi/401/subtitles/eng/401_sd_whats_new_in_xcode_app_signing.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/401hmew12wifry4svvi/401/401_hd_whats_new_in_xcode_app_signing.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/401hmew12wifry4svvi/401/401_sd_whats_new_in_xcode_app_signing.mp4", + "duration": 1936 + }, + "related": { + "activities": ["wwdc2016-413", "wwdc2016-705", "wwdc2016-706"] + } + }, { + "id": "wwdc2016-417", + "staticContentId": 91, + "eventContentId": 417, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/417", + "description": "Spend an hour with the team responsible for the technology behind Xcode's debugger: LLDB. Find out what's new, what's been there all along that you didn't know about, and how best to take advantage of it all. This session will cover a range of topics with tips for both newcomers and experienced developers.", + "title": "Debugging Tips and Tricks", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["breakpoint", "c++", "customize", "debug", "develop", "lldb", "objective-c", "python", "swift"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/417kbvnnlivhyfnn98p/417/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/417kbvnnlivhyfnn98p/417/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/417kbvnnlivhyfnn98p/417/417_debugging_tips_and_tricks.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/417kbvnnlivhyfnn98p/417/subtitles/eng/417_sd_debugging_tips_and_tricks.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/417kbvnnlivhyfnn98p/417/417_hd_debugging_tips_and_tricks.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/417kbvnnlivhyfnn98p/417/417_sd_debugging_tips_and_tricks.mp4", + "duration": 3592 + }, + "related": { + "activities": ["wwdc2016-405", "wwdc2016-410", "wwdc2016-412", "wwdc2016-413"] + } + }, { + "id": "wwdc2016-416", + "staticContentId": 78, + "eventContentId": 416, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/416", + "description": "In this advanced session, find out how structs, classes, protocols, and generics are implemented in Swift. Learn about their relative costs in different dimensions of performance. See how to apply this information to speed up your code.", + "title": "Understanding Swift Performance", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/416k7f0xkmz28rvlvwb/416/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/416k7f0xkmz28rvlvwb/416/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/416k7f0xkmz28rvlvwb/416/416_understanding_swift_performance.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/416k7f0xkmz28rvlvwb/416/subtitles/eng/416_sd_understanding_swift_performance.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/416k7f0xkmz28rvlvwb/416/416_hd_understanding_swift_performance.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/416k7f0xkmz28rvlvwb/416/416_sd_understanding_swift_performance.mp4", + "duration": 3502 + }, + "related": { + "activities": ["wwdc2016-207", "wwdc2016-402", "wwdc2016-403", "wwdc2016-415", "wwdc2016-419", "wwdc2016-720"] + } + }, { + "id": "wwdc2016-412", + "staticContentId": 90, + "eventContentId": 412, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/412", + "description": "Xcode 8 makes it easier to find several new categories of bugs with improvements in Runtime Sanitization and the Clang Static Analyzer. The Thread Sanitizer will help you find data races and other concurrency bugs. The static analyzer has been extended to search for localizability issues, check nullability, and find memory leaks in MRR code.", + "title": "Thread Sanitizer and Static Analysis", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["address sanitizer", "analysis", "analyze", "analyzer", "asan", "atomics", "clang", "concurrency", "data race", "dealloc", "gcd", "leak", "leaks", "localizability", "localize", "mrr", "nullability", "race", "races", "runtime", "static", "static analysis", "static analyzer", "thread", "threading", "threads", "tsan"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/412jzguxz4h8hykgjlm/412/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/412jzguxz4h8hykgjlm/412/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/412jzguxz4h8hykgjlm/412/412_thread_sanitizer_and_static_analysis.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/412jzguxz4h8hykgjlm/412/subtitles/eng/412_sd_thread_sanitizer_and_static_analysis.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/412jzguxz4h8hykgjlm/412/412_hd_thread_sanitizer_and_static_analysis.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/412jzguxz4h8hykgjlm/412/412_sd_thread_sanitizer_and_static_analysis.mp4", + "duration": 2000 + }, + "related": { + "activities": ["wwdc2016-201", "wwdc2016-405", "wwdc2016-410", "wwdc2016-413", "wwdc2016-417", "wwdc2016-418", "wwdc2016-720"] + } + }, { + "id": "wwdc2016-208", + "staticContentId": 6, + "eventContentId": 208, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/208", + "description": "watchOS 3 brings together notifications, complications, and the new Dock to keep your apps glanceable and responsive. Find out about the new additions to watchOS to create stunning visuals and learn about new snapshotting APIs to ensure your app is up to date when people glance at their wrist. Take a tour of watchOS 3 enhancements with us and find out which sessions you won't want to miss throughout the week.", + "title": "What's New in watchOS 3", + "platforms": ["watchOS"], + "keywords": ["🏃", "🚴", "⌚️", "🏃🏻", "🏃🏼", "🏃🏽", "🏃🏾", "🏃🏿", "🚴🏻", "🚴🏼", "🚴🏽", "🚴🏾", "🚴🏿", "clockkit", "complications", "fitness", "health"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/208j30f4v1a1i9i5fg9/208/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/208j30f4v1a1i9i5fg9/208/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/208j30f4v1a1i9i5fg9/208/208_whats_new_in_watchos_3.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/208j30f4v1a1i9i5fg9/208/subtitles/eng/208_sd_whats_new_in_watchos_3.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/208j30f4v1a1i9i5fg9/208/208_hd_whats_new_in_watchos_3.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/208j30f4v1a1i9i5fg9/208/208_sd_whats_new_in_watchos_3.mp4", + "duration": 2696 + }, + "related": { + "activities": ["wwdc2016-102", "wwdc2016-211", "wwdc2016-213", "wwdc2016-218", "wwdc2016-226", "wwdc2016-227", "wwdc2016-235", "wwdc2016-612", "wwdc2016-704", "wwdc2016-713", "wwdc2016-716", "wwdc2016-804"] + } + }, { + "id": "wwdc2016-511", + "staticContentId": 419, + "eventContentId": 511, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/511", + "description": "Continue your learning from Session 501: Advances in iOS Photography, with some additional details on scene monitoring and resource management in AVFoundation's powerful new AVCapturePhotoOutput API.", + "title": "AVCapturePhotoOutput - Beyond the Basics", + "platforms": ["iOS"], + "keywords": ["camera", "capture", "editing", "image", "jpg", "live photo", "photo", "raw"], + "trackId": 1, + "type": "Video", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/511nqyciexman7sf932/511/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/511nqyciexman7sf932/511/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/511nqyciexman7sf932/511/511_avcapturephotooutput__beyond_the_basics.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/511nqyciexman7sf932/511/subtitles/eng/511_sd_avcapturephotooutput__beyond_the_basics.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/511nqyciexman7sf932/511/511_hd_avcapturephotooutput__beyond_the_basics.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/511nqyciexman7sf932/511/511_sd_avcapturephotooutput__beyond_the_basics.mp4", + "duration": 1244 + }, + "related": { + "activities": ["wwdc2016-501"] + } + }, { + "id": "wwdc2016-703", + "staticContentId": 45, + "eventContentId": 703, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/703", + "description": "This year, Apple Pay is coming to the web with Safari on both macOS and iOS. Now you can experience the convenience and security of Apple Pay in your store, in your app, and on your website. Discover how easy it is to set up Apple Pay on the web, and learn how designing for Apple Pay can increase conversions, user engagement, and customer satisfaction.", + "title": "Apple Pay on the Web", + "platforms": ["iOS", "macOS", "watchOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/703rx8zlfedjfom6l93/703/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/703rx8zlfedjfom6l93/703/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/703rx8zlfedjfom6l93/703/703_apple_pay_on_the_web.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/703rx8zlfedjfom6l93/703/subtitles/eng/703_sd_apple_pay_on_the_web.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/703rx8zlfedjfom6l93/703/703_hd_apple_pay_on_the_web.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/703rx8zlfedjfom6l93/703/703_sd_apple_pay_on_the_web.mp4", + "duration": 3149 + }, + "related": { + "activities": ["wwdc2016-420", "wwdc2016-704"] + } + }, { + "id": "wwdc2016-229", + "staticContentId": 130, + "eventContentId": 229, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/229", + "description": "Learn about advanced techniques in TVML based apps, such as bridging between native and javascript code, creating your own custom views for use inside of templates, creating your own custom templates, how to introduce UIKit view controllers alongside TVMLKit based templates, and additional best practices you can apply to your apps.", + "title": "Developing tvOS Apps Using TVMLKit: Part 2", + "platforms": ["tvOS"], + "keywords": ["layout", "media", "streaming", "template", "tvjs", "tvml", "uikit"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/229b09xkrv3t6tdzwsu/229/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/229b09xkrv3t6tdzwsu/229/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/229b09xkrv3t6tdzwsu/229/229_developing_tvos_apps_using_tvmlkit_part_2.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/229b09xkrv3t6tdzwsu/229/subtitles/eng/229_sd_developing_tvos_apps_using_tvmlkit_part_2.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/229b09xkrv3t6tdzwsu/229/229_hd_developing_tvos_apps_using_tvmlkit_part_2.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/229b09xkrv3t6tdzwsu/229/229_sd_developing_tvos_apps_using_tvmlkit_part_2.mp4", + "duration": 2506 + }, + "related": { + "activities": ["wwdc2016-206", "wwdc2016-210", "wwdc2016-212", "wwdc2016-215", "wwdc2016-420", "wwdc2016-506", "wwdc2016-802"] + } + }, { + "id": "wwdc2016-601", + "staticContentId": 103, + "eventContentId": 601, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/601", + "description": "ReplayKit is an easy-to-use framework that enables players to share gameplay recordings or broadcast live games to players and viewers online. Watch how live broadcasting can help build community and create new fans for your apps and games. Understand the APIs to include player commentary via the microphone and front-facing camera on iPhone and iPad, and check out new support for ReplayKit on Apple TV.", + "title": "Go Live with ReplayKit", + "platforms": ["iOS", "tvOS"], + "keywords": ["capture", "esports", "flare", "mobcrush", "multiplayer", "narrate", "olympus", "production", "record", "replay", "screen", "share", "share sheet", "sheet", "stream", "video"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/601nsio90cd7ylwimk9/601/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/601nsio90cd7ylwimk9/601/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/601nsio90cd7ylwimk9/601/601_go_live_with_replaykit.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/601nsio90cd7ylwimk9/601/subtitles/eng/601_sd_go_live_with_replaykit.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/601nsio90cd7ylwimk9/601/601_hd_go_live_with_replaykit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/601nsio90cd7ylwimk9/601/601_sd_go_live_with_replaykit.mp4", + "duration": 1572 + }, + "related": { + "activities": ["wwdc2016-206", "wwdc2016-608", "wwdc2016-610", "wwdc2016-611"] + } + }, { + "id": "wwdc2016-409", + "staticContentId": 94, + "eventContentId": 409, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/409", + "description": "Take an advanced class in Testing and Xcode Server. You'll gain an in-depth knowledge on the lifecycle of a test, how they're are hosted, and how using modern observation can help you make bulletproof tests for your app. Then, learn about changes in Xcode Server that make continuous integration easier than ever, including configuring your own user for testing, enhancements to issue tracking, email notifications and support for crash logs.", + "title": "Advanced Testing and Continuous Integration", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["bots", "test", "testing", "xcode"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/409jh83sf1h8dqrt00q/409/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/409jh83sf1h8dqrt00q/409/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/409jh83sf1h8dqrt00q/409/409_advanced_testing_and_continuous_integration.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/409jh83sf1h8dqrt00q/409/409_hd_advanced_testing_and_continuous_integration.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/409jh83sf1h8dqrt00q/409/409_sd_advanced_testing_and_continuous_integration.mp4", + "duration": 2210 + }, + "related": { + "activities": ["wwdc2017-414", "wwdc2016-413"] + } + }, { + "id": "wwdc2016-108", + "staticContentId": 267, + "eventContentId": 108, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/108", + "description": "The heroes and villains of Marvel have captivated a worldwide audience for over 75 years. Marvel Games Creative Director Bill Rosemann lifts up the masks of Spider-Man, Black Panther, the Guardians of the Galaxy and more to reveal the true power behind the world's most heroic brand.", + "title": "Marvel: Making a Difference in the Real World", + "trackId": 4, + "type": "Special Event", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/108h16qehvq9hdjuf96/108/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/108h16qehvq9hdjuf96/108/atv_vod_mvp.m3u8", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/108h16qehvq9hdjuf96/108/108_hd_marvel_making_a_difference_in_the_real_world.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/108h16qehvq9hdjuf96/108/108_sd_marvel_making_a_difference_in_the_real_world.mp4", + "duration": 2967 + } + }, { + "id": "wwdc2016-413", + "staticContentId": 99, + "eventContentId": 413, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/413", + "description": "Xcode enables you to create great apps for Apple platforms. This session will introduce you to the basics of creating a project with Xcode, and more. You'll learn how to comfortably navigate your project and gain insights into working with workspaces, targets, and schemes. We'll introduce you to version control workflows, and walk through using Xcode's source editors and design tools. Join us if you're new to Apple platforms or want to learn more about using Xcode.", + "title": "Introduction to Xcode", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["app", "begin", "build", "code", "debug", "debugging", "developer", "editor", "getting", "git", "help", "ide", "introduction", "project", "setting", "source", "started", "target", "test", "testing", "tools", "xcode"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/413jz6eb2wkfuzwx1me/413/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/413jz6eb2wkfuzwx1me/413/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/413jz6eb2wkfuzwx1me/413/413_introduction_to_xcode.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/413jz6eb2wkfuzwx1me/413/subtitles/eng/413_sd_introduction_to_xcode.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/413jz6eb2wkfuzwx1me/413/413_hd_introduction_to_xcode.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/413jz6eb2wkfuzwx1me/413/413_sd_introduction_to_xcode.mp4", + "duration": 3163 + }, + "related": { + "activities": ["wwdc2016-401", "wwdc2016-409", "wwdc2016-410", "wwdc2016-412", "wwdc2016-414", "wwdc2016-417", "wwdc2016-418"] + } + }, { + "id": "wwdc2016-803", + "staticContentId": 115, + "eventContentId": 803, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/803", + "description": "Typography is essential to an app's form and function. Learn principles of good typography and techniques to apply them to your work. Make the most of the advanced features in our system fonts, and learn best practices for using custom fonts.", + "title": "Typography and Fonts", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["custom fonts", "design", "design best practices", "font", "fonts", "san francisco", "system fonts", "type", "typography", "ui design", "user interface design"], + "trackId": 9, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/803z7m1ln9vmbpg35x9/803/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/803z7m1ln9vmbpg35x9/803/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/803z7m1ln9vmbpg35x9/803/803_typography_and_fonts.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/803z7m1ln9vmbpg35x9/803/803_hd_typography_and_fonts.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/803z7m1ln9vmbpg35x9/803/803_sd_typography_and_fonts.mp4", + "duration": 1648 + }, + "related": { + "activities": ["wwdc2016-201", "wwdc2016-222", "wwdc2016-232", "wwdc2016-233", "wwdc2016-236", "wwdc2016-407", "wwdc2016-801", "wwdc2016-802", "wwdc2016-804", "wwdc2016-805"] + } + }, { + "id": "wwdc2016-611", + "staticContentId": 100, + "eventContentId": 611, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/611", + "description": "Dive into the latest additions to Game Center, Apple's social gaming network. Check out new capabilities for persistent game sessions and how they provide added flexibility for single-player, real-time multiplayer, and turn-based games. Learn about changes that streamline Game Center and a new way to send game invites and join multiplayer matches.", + "title": "What's New in Game Center", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["challenge", "friend", "game", "gkachievement", "gkchallenge", "gkcloudsave", "gkleaderboard", "gklocalplayer", "gkmatch", "gkplayer", "gkscore", "gksession", "leaderboard", "multiplayer", "social"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/611qdyg26bqfivpaww1/611/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/611qdyg26bqfivpaww1/611/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/611qdyg26bqfivpaww1/611/611_whats_new_in_game_center.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/611qdyg26bqfivpaww1/611/611_hd_whats_new_in_game_center.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/611qdyg26bqfivpaww1/611/611_sd_whats_new_in_game_center.mp4", + "duration": 2148 + }, + "related": { + "activities": ["wwdc2016-601", "wwdc2016-607", "wwdc2016-608", "wwdc2016-610", "wwdc2016-612"] + } + }, { + "id": "wwdc2016-206", + "staticContentId": 105, + "eventContentId": 206, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/206", + "description": "Apps are quickly changing how we experience TV today, and tvOS is the foundation upon which new apps and ideas are being built. Take your app to the next level with great new features in tvOS 10. Learn all about the new interface appearance APIs, support for badging and notifications, and more.", + "title": "What's New in tvOS", + "platforms": ["tvOS"], + "keywords": ["appearance", "appletv", "apple tv", "badging", "cloudkit", "dark mode", "focus", "focus engine", "icloud", "light", "notifications", "photokit", "replaykit", "siri remote"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/206a38wgme6uponcuwd/206/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/206a38wgme6uponcuwd/206/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/206a38wgme6uponcuwd/206/206_whats_new_in_tvos.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/206a38wgme6uponcuwd/206/206_hd_whats_new_in_tvos.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/206a38wgme6uponcuwd/206/206_sd_whats_new_in_tvos.mp4", + "duration": 2318 + }, + "related": { + "activities": ["wwdc2016-102", "wwdc2016-210", "wwdc2016-212", "wwdc2016-213", "wwdc2016-215", "wwdc2016-221", "wwdc2016-229", "wwdc2016-506", "wwdc2016-601", "wwdc2016-607", "wwdc2016-802"] + } + }, { + "id": "wwdc2016-222", + "staticContentId": 86, + "eventContentId": 222, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/222", + "description": "In this first part of a two part series, explore the motivation and concepts necessary to take advantage of trait collections. Walk through building an interface in Xcode and learn from the experts how to take advantage of new features to more easily create your app for different device sizes and configurations.", + "title": "Making Apps Adaptive, Part 1", + "platforms": ["iOS", "tvOS", "watchOS"], + "keywords": ["adaptive", "builder", "interface", "ios", "over", "slide", "split", "xcode"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/222l873ttj77llkzbzs/222/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/222l873ttj77llkzbzs/222/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/222l873ttj77llkzbzs/222/222_making_apps_adaptive_part_1.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/222l873ttj77llkzbzs/222/subtitles/eng/222_sd_making_apps_adaptive_part_1.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/222l873ttj77llkzbzs/222/222_hd_making_apps_adaptive_part_1.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/222l873ttj77llkzbzs/222/222_sd_making_apps_adaptive_part_1.mp4", + "duration": 2266 + }, + "related": { + "activities": ["wwdc2016-233", "wwdc2016-236", "wwdc2016-803"] + } + }, { + "id": "wwdc2016-414", + "staticContentId": 85, + "eventContentId": 414, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/414", + "description": "Learn about all of the new, and a few existing, features of Xcode source editor. See how you can make the most of new code completion features, Swift image and color literals, and snippets. We'll also show how to add commands to the source editor with new Xcode Extensions that you can distribute on the Mac App Store.", + "title": "Using and Extending the Xcode Source Editor", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["editing", "editor", "editors", "extending", "extension", "extensions", "literal", "plugin", "plug-in", "source", "xcode"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/414k6h6qdzyihpowpaa/414/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/414k6h6qdzyihpowpaa/414/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/414k6h6qdzyihpowpaa/414/414_using_and_extending_the_xcode_source_editor.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/414k6h6qdzyihpowpaa/414/subtitles/eng/414_sd_using_and_extending_the_xcode_source_editor.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/414k6h6qdzyihpowpaa/414/414_hd_using_and_extending_the_xcode_source_editor.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/414k6h6qdzyihpowpaa/414/414_sd_using_and_extending_the_xcode_source_editor.mp4", + "duration": 2223 + }, + "related": { + "activities": ["wwdc2016-406", "wwdc2016-413"] + } + }, { + "id": "wwdc2016-230", + "staticContentId": 41, + "eventContentId": 230, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/230", + "description": "CallKit is a new framework that lets your VoIP app integrate tightly with the native Phone UI. Learn how you can have your incoming calls displayed fully on the lock screen. Get details on how people can choose to use your app when making calls from the native Phone app's contacts, favorites, and recents. See how adopting CallKit lets your app coexist seamlessly with other active calls, and allow your calls to interact with CarPlay and Bluetooth accessories.", + "title": "Enhancing VoIP Apps with CallKit", + "platforms": ["iOS"], + "keywords": ["apns", "ckcall", "ckprovider", "pushkit"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/230b83wfxc7m69dm90q/230/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/230b83wfxc7m69dm90q/230/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/230b83wfxc7m69dm90q/230/230_enhancing_voip_apps_with_callkit.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/230b83wfxc7m69dm90q/230/subtitles/eng/230_sd_enhancing_voip_apps_with_callkit.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/230b83wfxc7m69dm90q/230/230_hd_enhancing_voip_apps_with_callkit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/230b83wfxc7m69dm90q/230/230_sd_enhancing_voip_apps_with_callkit.mp4", + "duration": 2153 + }, + "related": { + "activities": ["wwdc2016-217", "wwdc2016-225", "wwdc2016-507", "wwdc2016-714"] + } + }, { + "id": "wwdc2016-225", + "staticContentId": 8, + "eventContentId": 225, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/225", + "description": "Learn by example how to integrate SiriKit into your app. See how easily you can create your first Intents extension to expose your app's core functionality in Siri. Find out how to bring your app's user interface into Siri, creating a unique and recognizable experience for your customers.", + "title": "Extending Your Apps with SiriKit", + "platforms": ["iOS"], + "keywords": ["🎙", "🦄", "intent", "intentkit", "intents", "intentsui", "siri", "sirikit", "speech", "vocab", "vocabulary", "voice"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/225e97ww3majsu3bvt8/225/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/225e97ww3majsu3bvt8/225/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/225e97ww3majsu3bvt8/225/225_extending_your_apps_with_sirikit.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/225e97ww3majsu3bvt8/225/subtitles/eng/225_sd_extending_your_apps_with_sirikit.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/225e97ww3majsu3bvt8/225/225_hd_extending_your_apps_with_sirikit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/225e97ww3majsu3bvt8/225/225_sd_extending_your_apps_with_sirikit.mp4", + "duration": 3226 + }, + "related": { + "activities": ["wwdc2016-217", "wwdc2016-230", "wwdc2016-240", "wwdc2016-509", "wwdc2015-224"] + } + }, { + "id": "wwdc2016-719", + "staticContentId": 113, + "eventContentId": 719, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/719", + "description": "Gain specific insights into tuning your application for better I/O performance. Learn best practices to reduce local storage operations and trim your memory usage. Get details on how to update your app to increase responsiveness and extend battery life.", + "title": "Optimizing I/O for Performance and Battery Life", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/719wve0t1j24kny0f9r/719/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/719wve0t1j24kny0f9r/719/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/719wve0t1j24kny0f9r/719/719_optimizing_io_for_performance_and_battery_life.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/719wve0t1j24kny0f9r/719/719_hd_optimizing_io_for_performance_and_battery_life.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/719wve0t1j24kny0f9r/719/719_sd_optimizing_io_for_performance_and_battery_life.mp4", + "duration": 2854 + }, + "related": { + "activities": ["wwdc2016-227", "wwdc2016-242", "wwdc2016-406", "wwdc2016-411", "wwdc2016-418", "wwdc2016-720"] + } + }, { + "id": "wwdc2016-237", + "staticContentId": 29, + "eventContentId": 237, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/237", + "description": "CareKit is a new open source framework designed to help you create personal care apps that can monitor, present and share personal health information. Learn how to create and extend Care Cards and an Insight Dashboard, and to package information for sharing with families or professional caregivers.", + "title": "Getting Started with CareKit", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/237e12rha4rg2t0p53u/237/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/237e12rha4rg2t0p53u/237/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/237e12rha4rg2t0p53u/237/237_getting_started_with_carekit.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/237e12rha4rg2t0p53u/237/subtitles/eng/237_sd_getting_started_with_carekit.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/237e12rha4rg2t0p53u/237/237_hd_getting_started_with_carekit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/237e12rha4rg2t0p53u/237/237_sd_getting_started_with_carekit.mp4", + "duration": 1875 + }, + "related": { + "activities": ["wwdc2016-209", "wwdc2016-234"] + } + }, { + "id": "wwdc2016-304", + "staticContentId": 146, + "eventContentId": 304, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/304", + "description": "Even consumer-focused apps are used by people in business and education. See how minor changes can fine tune your app to meet the needs of these large organizations. Learn best practices for synching user-specific content on Shared iPad and how to add deep-link support for Classroom app, authentication integration via Touch ID, AppConfig driven customization, and much more.", + "title": "Best Practices for Building Apps Used in Business and Education", + "platforms": ["iOS", "macOS"], + "keywords": ["education"], + "trackId": 3, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/304heg1mrvxxz5lhd4h/304/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/304heg1mrvxxz5lhd4h/304/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/304heg1mrvxxz5lhd4h/304/304_best_practices_for_building_apps_used_in_business_and_education.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/304heg1mrvxxz5lhd4h/304/subtitles/eng/304_sd_best_practices_for_building_apps_used_in_business_and_education.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/304heg1mrvxxz5lhd4h/304/304_hd_best_practices_for_building_apps_used_in_business_and_education.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/304heg1mrvxxz5lhd4h/304/304_sd_best_practices_for_building_apps_used_in_business_and_education.mp4", + "duration": 2809 + }, + "related": { + "activities": ["wwdc2016-213", "wwdc2016-221", "wwdc2016-226", "wwdc2016-231", "wwdc2016-303"] + } + }, { + "id": "wwdc2016-207", + "staticContentId": 123, + "eventContentId": 207, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/207", + "description": "Underlying nearly every iOS, macOS, watchOS, and tvOS application sits the Foundation framework. See how improvements to the fundamental set of API in Foundation will improve the experience of using Swift for the entire Cocoa and Cocoa Touch SDK. Learn how Foundation framework's new value types, adoption of standard library protocols, additional type safety, better generics, and custom operators will also make your own Swift code safer, faster, and more expressive.", + "title": "What's New in Foundation for Swift", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/207i37356qcyyh2yxos/207/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/207i37356qcyyh2yxos/207/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/207i37356qcyyh2yxos/207/207_whats_new_in_foundation_for_swift.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/207i37356qcyyh2yxos/207/subtitles/eng/207_sd_whats_new_in_foundation_for_swift.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/207i37356qcyyh2yxos/207/207_hd_whats_new_in_foundation_for_swift.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/207i37356qcyyh2yxos/207/207_sd_whats_new_in_foundation_for_swift.mp4", + "duration": 2207 + }, + "related": { + "activities": ["wwdc2016-203", "wwdc2016-238", "wwdc2016-402", "wwdc2016-403", "wwdc2016-404", "wwdc2016-415", "wwdc2016-416", "wwdc2016-711"] + } + }, { + "id": "wwdc2016-805", + "staticContentId": 141, + "eventContentId": 805, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/805", + "description": "You're familiar with Keynote for making presentations, but it's also a powerful tool for exploring, iterating and refining user interface layouts and workflows. Learn techniques and best practices for using Keynote to quickly and persuasively express your product ideas by building realistic and tangible design comps and user flows.", + "title": "Iterative UI Design", + "keywords": ["demo", "demo design", "design", "design best practices", "design comps", "design demo", "iterative", "keynote", "learn to design", "rapid", "ui", "ui design", "user flows", "user interface", "user interface design", "workflows"], + "trackId": 9, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/805zlxpfexwwzt7x0cr/805/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/805zlxpfexwwzt7x0cr/805/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/805zlxpfexwwzt7x0cr/805/805_iterative_ui_design.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/805zlxpfexwwzt7x0cr/805/805_hd_iterative_ui_design.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/805zlxpfexwwzt7x0cr/805/805_sd_iterative_ui_design.mp4", + "duration": 2495 + }, + "related": { + "activities": ["wwdc2016-801", "wwdc2016-802", "wwdc2016-803", "wwdc2016-804"] + } + }, { + "id": "wwdc2016-503", + "staticContentId": 12, + "eventContentId": 503, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/503", + "description": "AVFoundation is a powerful framework for media operations, providing capture, editing, playback, and export. Learn about new APIs and methods for media playback. Create seamless loops, simplify your playback logic with \"autowait\", and see how to deliver an even faster playback startup experience.", + "title": "Advances in AVFoundation Playback", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["avfoundation", "hls", "http live streaming", "looping", "media", "mp4", "playback", "streaming", "video"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/503lkp4vimgv7tqecn7/503/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/503lkp4vimgv7tqecn7/503/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/503lkp4vimgv7tqecn7/503/503_advances_in_avfoundation_playback.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/503lkp4vimgv7tqecn7/503/subtitles/eng/503_sd_advances_in_avfoundation_playback.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/503lkp4vimgv7tqecn7/503/503_hd_advances_in_avfoundation_playback.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/503lkp4vimgv7tqecn7/503/503_sd_advances_in_avfoundation_playback.mp4", + "duration": 2193 + }, + "related": { + "activities": ["wwdc2016-501", "wwdc2016-504", "wwdc2016-506", "wwdc2016-507", "wwdc2016-510", "wwdc2016-712"] + } + }, { + "id": "wwdc2016-205", + "staticContentId": 110, + "eventContentId": 205, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/205", + "description": "The UIKit framework provides the crucial infrastructure needed to construct and manage iOS apps, and UIKit continues to advance the state of the art for app design with many new features. Dive straight into new features across the iOS frameworks that allow your apps to take advantage of many new system services, as well as to offer services to other apps. This is your first stop to discover the many sessions to see about harnessing the power of iOS 10.", + "title": "What's New in Cocoa Touch", + "platforms": ["iOS", "tvOS", "watchOS"], + "keywords": ["frameworks", "ipad", "iphone", "new", "tv", "uikit"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/205n2okotvilcayc8rc/205/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/205n2okotvilcayc8rc/205/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/205n2okotvilcayc8rc/205/205_whats_new_in_cocoa_touch.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/205n2okotvilcayc8rc/205/205_hd_whats_new_in_cocoa_touch.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/205n2okotvilcayc8rc/205/205_sd_whats_new_in_cocoa_touch.mp4", + "duration": 3399 + }, + "related": { + "activities": ["wwdc2016-102", "wwdc2016-204", "wwdc2016-213", "wwdc2016-216", "wwdc2016-219", "wwdc2016-224", "wwdc2016-228", "wwdc2016-232", "wwdc2016-509", "wwdc2016-712", "wwdc2016-720"] + } + }, { + "id": "wwdc2016-712", + "staticContentId": 114, + "eventContentId": 712, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/712", + "description": "Discover the fascinating details behind the display of color on Apple platforms. Go beyond the basics and learn how your apps can take advantage of a wider and deeper representation of color on iOS and macOS. Gain specific insights from the experts on optimizing your artwork asset pipeline and explore new API to develop more vivd, true to life experiences.", + "title": "Working with Wide Color", + "platforms": ["iOS", "macOS", "tvOS"], + "keywords": ["color", "deep", "history", "profile", "wide"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/712ugi7vg8jznn3pc3u/712/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/712ugi7vg8jznn3pc3u/712/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/712ugi7vg8jznn3pc3u/712/712_working_with_wide_color.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/712ugi7vg8jznn3pc3u/712/subtitles/eng/712_sd_working_with_wide_color.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/712ugi7vg8jznn3pc3u/712/712_hd_working_with_wide_color.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/712ugi7vg8jznn3pc3u/712/712_sd_working_with_wide_color.mp4", + "duration": 3177 + }, + "related": { + "activities": ["wwdc2016-203", "wwdc2016-205", "wwdc2016-239", "wwdc2016-501", "wwdc2016-503", "wwdc2016-505", "wwdc2016-605", "wwdc2016-609"] + } + }, { + "id": "wwdc2016-201", + "staticContentId": 154, + "eventContentId": 201, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/201", + "description": "Following some simple practices when writing your app can help make it world-ready. Learn about what's new, how to take greater advantage of existing frameworks, and review some common pitfalls and how to avoid them. Hear some ideas for going one step further and optimizing your app for different countries.", + "title": "Internationalization Best Practices", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["i18n", "international", "localization"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/201h1g4asm31ti2l9n1/201/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/201h1g4asm31ti2l9n1/201/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/201h1g4asm31ti2l9n1/201/201_internationalization_best_practices.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/201h1g4asm31ti2l9n1/201/subtitles/eng/201_sd_internationalization_best_practices.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/201h1g4asm31ti2l9n1/201/201_hd_internationalization_best_practices.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/201h1g4asm31ti2l9n1/201/201_sd_internationalization_best_practices.mp4", + "duration": 1934 + }, + "related": { + "activities": ["wwdc2017-410", "wwdc2016-203", "wwdc2016-232", "wwdc2016-236", "wwdc2016-238", "wwdc2016-412", "wwdc2016-714", "wwdc2016-801", "wwdc2016-803"] + } + }, { + "id": "wwdc2016-407", + "staticContentId": 144, + "eventContentId": 407, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/407", + "description": "Making your app accessible helps you reach all of your potential users. Get introduced to the new Accessibility Inspector and learn how it streamlines finding and fixing accessibility issues across all Apple platforms. Go beyond the basics with our experts as they guide you through the process of optimizing accessibility for your app", + "title": "Auditing Your Apps for Accessibility", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["accessibility", "inspector"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/407itxn2ujs52fwcgw5/407/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/407itxn2ujs52fwcgw5/407/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/407itxn2ujs52fwcgw5/407/407_auditing_your_apps_for_accessibility.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/407itxn2ujs52fwcgw5/407/subtitles/eng/407_sd_auditing_your_apps_for_accessibility.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/407itxn2ujs52fwcgw5/407/407_hd_auditing_your_apps_for_accessibility.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/407itxn2ujs52fwcgw5/407/407_sd_auditing_your_apps_for_accessibility.mp4", + "duration": 2041 + }, + "related": { + "activities": ["wwdc2016-104", "wwdc2016-202", "wwdc2016-710", "wwdc2016-801", "wwdc2016-803"] + } + }, { + "id": "wwdc2016-418", + "staticContentId": 97, + "eventContentId": 418, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/418", + "description": "Learn how to make your apps faster and more efficient in this introduction to Time Profiler in Instruments. Walk through how to use Time Profiler to measure your app's performance. Learn how Time Profiler works and can be used to identify problems and verify your fixes. Discover how easy it is to improve your app's power usage and performance by using Instruments throughout your development process.", + "title": "Using Time Profiler in Instruments", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["instruments", "introductory", "measure", "performance", "profile", "profiling", "speed", "time"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/418kmcxcwg4psxzsjuy/418/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/418kmcxcwg4psxzsjuy/418/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/418kmcxcwg4psxzsjuy/418/418_using_time_profiler_in_instruments.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/418kmcxcwg4psxzsjuy/418/subtitles/eng/418_sd_using_time_profiler_in_instruments.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/418kmcxcwg4psxzsjuy/418/418_hd_using_time_profiler_in_instruments.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/418kmcxcwg4psxzsjuy/418/418_sd_using_time_profiler_in_instruments.mp4", + "duration": 1973 + }, + "related": { + "activities": ["wwdc2016-406", "wwdc2016-410", "wwdc2016-411", "wwdc2016-412", "wwdc2016-413", "wwdc2016-719", "wwdc2016-720", "wwdc2016-721"] + } + }, { + "id": "wwdc2016-606", + "staticContentId": 68, + "eventContentId": 606, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/606", + "description": "The Metal shading language is an easy-to-use programming language for writing graphics and compute functions which execute on the GPU. Dive deeper into understanding the design patterns, memory access models, and detailed shader coding best practices which reduce bottlenecks and hide latency. Intended for experienced shader authors with a solid understanding of GPU architecture and hoping to extract every possible cycle.", + "title": "Advanced Metal Shader Optimization", + "platforms": ["iOS", "tvOS"], + "keywords": ["3d", "3d graphics", "compiler", "compute", "gpgpu", "gpu", "metl", "mtl", "mtldevice", "opengl", "opengl es", "renderer", "shader", "simd"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/606oluchfgwakjbymy8/606/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/606oluchfgwakjbymy8/606/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/606oluchfgwakjbymy8/606/606_advanced_metal_shader_optimization.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/606oluchfgwakjbymy8/606/606_hd_advanced_metal_shader_optimization.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/606oluchfgwakjbymy8/606/606_sd_advanced_metal_shader_optimization.mp4", + "duration": 2475 + }, + "related": { + "activities": ["wwdc2016-602", "wwdc2016-603", "wwdc2016-604", "wwdc2016-605", "wwdc2016-715"] + } + }, { + "id": "wwdc2016-405", + "staticContentId": 87, + "eventContentId": 405, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/405", + "description": "The Apple LLVM compiler in Xcode 8 adds new language features, improved diagnostics, and more powerful optimizations. Get an overview of some new Objective-C and C++ features and learn how to use advanced optimizations to speed up your apps.", + "title": "What's New in LLVM", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["bitcode", "c++", "cache", "compile", "compiler", "incremental", "libc", "libc++", "libstdc", "libstdc++", "link", "linker", "linking", "llvm", "lto", "objc", "objectivec", "objective c", "optimization", "optimize", "swift", "vectorization", "vectorizer"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/405i2ilotov3bazyei1/405/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/405i2ilotov3bazyei1/405/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/405i2ilotov3bazyei1/405/405_whats_new_in_llvm.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/405i2ilotov3bazyei1/405/subtitles/eng/405_sd_whats_new_in_llvm.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/405i2ilotov3bazyei1/405/405_hd_whats_new_in_llvm.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/405i2ilotov3bazyei1/405/405_sd_whats_new_in_llvm.mp4", + "duration": 2418 + }, + "related": { + "activities": ["wwdc2016-402", "wwdc2016-406", "wwdc2016-412", "wwdc2016-417", "wwdc2016-4150"] + } + }, { + "id": "wwdc2016-707", + "staticContentId": 53, + "eventContentId": 707, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/707", + "description": "Push and locally scheduled notifications can provide people with timely information and provide them with the ability to take appropriate actions in response. Hear about the new APIs to schedule, respond to, and manage delivery of notifications. Learn how to write an extension to decrypt and augment push notifications before they are displayed.", + "title": "Introduction to Notifications", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["apns", "notifications"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/707s77u9e6pv0dy9ggm/707/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/707s77u9e6pv0dy9ggm/707/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/707s77u9e6pv0dy9ggm/707/707_introduction_to_notifications.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/707s77u9e6pv0dy9ggm/707/subtitles/eng/707_sd_introduction_to_notifications.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/707s77u9e6pv0dy9ggm/707/707_hd_introduction_to_notifications.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/707s77u9e6pv0dy9ggm/707/707_sd_introduction_to_notifications.mp4", + "duration": 2280 + }, + "related": { + "activities": ["wwdc2016-211", "wwdc2016-708", "wwdc2016-716", "wwdc2016-724"] + } + }, { + "id": "wwdc2016-607", + "staticContentId": 101, + "eventContentId": 607, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/607", + "description": "Apple TV presents an incredible opportunity for developers to create new games made for the living room. See how the Game Controller framework can tap into the Siri Remote to harness touch and the built-in accelerometer and gyroscope to deliver engaging gameplay. Learn how to fully integrate MFi controllers, and understand best practices for developing titles that require a game controller.", + "title": "Controlling Game Input for Apple TV", + "platforms": ["iOS", "tvOS"], + "keywords": ["button", "controller", "dpad", "game", "gccontroller", "input", "joystick", "mfi", "physical", "remote", "shoulder", "siri"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/607odzb3n443nv9ei5p/607/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/607odzb3n443nv9ei5p/607/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/607odzb3n443nv9ei5p/607/607_controlling_game_input_for_apple_tv.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/607odzb3n443nv9ei5p/607/subtitles/eng/607_sd_controlling_game_input_for_apple_tv.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/607odzb3n443nv9ei5p/607/607_hd_controlling_game_input_for_apple_tv.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/607odzb3n443nv9ei5p/607/607_sd_controlling_game_input_for_apple_tv.mp4", + "duration": 2252 + }, + "related": { + "activities": ["wwdc2016-206", "wwdc2016-210", "wwdc2016-220", "wwdc2016-221", "wwdc2016-610", "wwdc2016-611", "wwdc2016-802"] + } + }, { + "id": "wwdc2016-501", + "staticContentId": 142, + "eventContentId": 501, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/501", + "description": "People love to take pictures with iPhone. In fact, it's the most popular camera in the world, and photography apps empower this experience. Explore new AVFoundation Capture APIs which allow for the capture of Live Photos, RAW image data from the camera, and wide color photos.", + "title": "Advances in iOS Photography", + "platforms": ["iOS"], + "keywords": ["camera", "capture", "editing", "image", "jpg", "live photo", "photo", "raw"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/501l32ujtbnw2ad06wy/501/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/501l32ujtbnw2ad06wy/501/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/501l32ujtbnw2ad06wy/501/501_advances_in_ios_photography.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/501l32ujtbnw2ad06wy/501/subtitles/eng/501_sd_advances_in_ios_photography.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/501l32ujtbnw2ad06wy/501/501_hd_advances_in_ios_photography.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/501l32ujtbnw2ad06wy/501/501_sd_advances_in_ios_photography.mp4", + "duration": 3582 + }, + "related": { + "activities": ["wwdc2016-503", "wwdc2016-505", "wwdc2016-511", "wwdc2016-712"] + } + }, { + "id": "wwdc2016-242", + "staticContentId": 126, + "eventContentId": 242, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/242", + "description": "Core Data is a framework that you can use to manage the model layer objects in your application, providing generalized and automated solutions to common tasks associated with object life cycle, object graph management, and persistence. Learn about the latest advancements in and explore best practices for taking full advantage of this powerful framework.", + "title": "What's New in Core Data", + "platforms": ["iOS", "macOS", "tvOS"], + "keywords": ["coordinator", "core data", "sql", "sqlite"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/242vdhuk4hmwrxnb465/242/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/242vdhuk4hmwrxnb465/242/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/242vdhuk4hmwrxnb465/242/242_whats_new_in_core_data.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/242vdhuk4hmwrxnb465/242/subtitles/eng/242_sd_whats_new_in_core_data.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/242vdhuk4hmwrxnb465/242/242_hd_whats_new_in_core_data.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/242vdhuk4hmwrxnb465/242/242_sd_whats_new_in_core_data.mp4", + "duration": 2294 + }, + "related": { + "activities": ["wwdc2016-203", "wwdc2016-402", "wwdc2016-719"] + } + }, { + "id": "wwdc2016-711", + "staticContentId": 48, + "eventContentId": 711, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/711", + "description": "NSURLSession provides a rich set of methods to support uploading and downloading content via HTTP and newer HTTP-based protocols, authentication with web servers, local caching of resources, and transfers that occur in the background while your app isn't running — simplifying the complexities of modern day networking. Learn about new enhancements in HTTP/2, introspection capabilities with networking metrics, and security and privacy enhancements for you and your customers.", + "title": "NSURLSession: New Features and Best Practices", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["ats", "http", "nsurlconnection", "nsurlsession"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/711tlraheg74mofg3uq/711/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/711tlraheg74mofg3uq/711/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/711tlraheg74mofg3uq/711/711_nsurlsession_new_features_and_best_practices.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/711tlraheg74mofg3uq/711/subtitles/eng/711_sd_nsurlsession_new_features_and_best_practices.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/711tlraheg74mofg3uq/711/711_hd_nsurlsession_new_features_and_best_practices.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/711tlraheg74mofg3uq/711/711_sd_nsurlsession_new_features_and_best_practices.mp4", + "duration": 2523 + }, + "related": { + "activities": ["wwdc2016-207", "wwdc2016-706", "wwdc2016-709", "wwdc2016-714"] + } + }, { + "id": "wwdc2016-706", + "staticContentId": 149, + "eventContentId": 706, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/706", + "description": "Designing security into your app requires that you follow secure coding practices and use the security features that are built into the operating system. Learn about new developments in Security on iOS, macOS, watchOS and tvOS that impact your apps. Hear about best practices for developing and distributing secure apps and protecting people's data.", + "title": "What's New in Security", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["ats", "crypto", "keychain"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/706sgjvzkvg6rrg9icw/706/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/706sgjvzkvg6rrg9icw/706/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/706sgjvzkvg6rrg9icw/706/706_whats_new_in_security.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/706sgjvzkvg6rrg9icw/706/subtitles/eng/706_sd_whats_new_in_security.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/706sgjvzkvg6rrg9icw/706/706_hd_whats_new_in_security.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/706sgjvzkvg6rrg9icw/706/706_sd_whats_new_in_security.mp4", + "duration": 1990 + }, + "related": { + "activities": ["wwdc2016-401", "wwdc2016-705", "wwdc2016-709", "wwdc2016-711"] + } + }, { + "id": "wwdc2016-239", + "staticContentId": 124, + "eventContentId": 239, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/239", + "description": "Examine the technologies that make a modern macOS app. Come learn from the experts how to harness the power of Cocoa to build powerful, immersive apps. Whether you're a seasoned Cocoa developer or new to the platform, this session is for you.", + "title": "Crafting Modern Cocoa Apps", + "platforms": ["macOS"], + "keywords": ["appkit", "control", "os x", "table", "tableview", "window"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/239ebj00keggvd2m2fx/239/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/239ebj00keggvd2m2fx/239/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/239ebj00keggvd2m2fx/239/239_crafting_modern_cocoa_apps.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/239ebj00keggvd2m2fx/239/subtitles/eng/239_sd_crafting_modern_cocoa_apps.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/239ebj00keggvd2m2fx/239/239_hd_crafting_modern_cocoa_apps.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/239ebj00keggvd2m2fx/239/239_sd_crafting_modern_cocoa_apps.mp4", + "duration": 2651 + }, + "related": { + "activities": ["wwdc2017-218", "wwdc2016-203", "wwdc2016-213", "wwdc2016-236", "wwdc2016-712", "wwdc2014-227"] + } + }, { + "id": "wwdc2016-227", + "staticContentId": 63, + "eventContentId": 227, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/227", + "description": "A well performing Watch app begins with great app architecture. Join us to discover strategies you can apply to keep your app responsive, lower your app's resume time, and stay memory efficient. Learn how we used these same principles in the Stocks app to enhance the user experience for watchOS 3.", + "title": "Architecting for Performance on watchOS 3", + "platforms": ["watchOS"], + "keywords": ["⌚️", "background", "dock"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/227a480gfx4hwinv5x9/227/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/227a480gfx4hwinv5x9/227/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/227a480gfx4hwinv5x9/227/227_architecting_for_performance_on_watchos_3.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/227a480gfx4hwinv5x9/227/subtitles/eng/227_sd_architecting_for_performance_on_watchos_3.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/227a480gfx4hwinv5x9/227/227_hd_architecting_for_performance_on_watchos_3.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/227a480gfx4hwinv5x9/227/227_sd_architecting_for_performance_on_watchos_3.mp4", + "duration": 2462 + }, + "related": { + "activities": ["wwdc2016-208", "wwdc2016-211", "wwdc2016-218", "wwdc2016-719", "wwdc2016-720", "wwdc2016-804", "wwdc2015-226"] + } + }, { + "id": "wwdc2016-233", + "staticContentId": 112, + "eventContentId": 233, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/233", + "description": "In this second part of a two part series, go beyond the basics in understanding how to make your apps adaptive. Learn through practical examples how to extend your application interfaces using UIKit. Get introduced to best practices for structuring your app for flexible interface designs. Learn from the experts what to keep in mind as you build apps for the future, today.", + "title": "Making Apps Adaptive, Part 2", + "platforms": ["iOS", "tvOS"], + "keywords": ["adaptive", "ipad", "slide", "split", "splitview"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/233c3uhytv8cxwoanja/233/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/233c3uhytv8cxwoanja/233/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/233c3uhytv8cxwoanja/233/233_making_apps_adaptive_part_2.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/233c3uhytv8cxwoanja/233/subtitles/eng/233_sd_making_apps_adaptive_part_2.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/233c3uhytv8cxwoanja/233/233_hd_making_apps_adaptive_part_2.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/233c3uhytv8cxwoanja/233/233_sd_making_apps_adaptive_part_2.mp4", + "duration": 2260 + }, + "related": { + "activities": ["wwdc2016-219", "wwdc2016-222", "wwdc2016-236", "wwdc2016-801", "wwdc2016-803", "wwdc2014-216"] + } + }, { + "id": "wwdc2016-303", + "staticContentId": 25, + "eventContentId": 303, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/303", + "description": "Learn about the latest developments in managing Apple devices in large organizations including Classroom and Shared iPad for Education. Learn the latest techniques to wirelessly configure settings, monitor compliance with policies, install apps and bulk configure devices with ease.", + "title": "What's New in Apple Device Management", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "trackId": 3, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/303g7ecrjttz4lpqd7y/303/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/303g7ecrjttz4lpqd7y/303/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/303g7ecrjttz4lpqd7y/303/303_whats_new_in_apple_device_management.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/303g7ecrjttz4lpqd7y/303/subtitles/eng/303_sd_whats_new_in_apple_device_management.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/303g7ecrjttz4lpqd7y/303/303_hd_whats_new_in_apple_device_management.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/303g7ecrjttz4lpqd7y/303/303_sd_whats_new_in_apple_device_management.mp4", + "duration": 3117 + }, + "related": { + "activities": ["wwdc2016-304", "wwdc2016-725"] + } + }, { + "id": "wwdc2016-802", + "staticContentId": 148, + "eventContentId": 802, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/802", + "description": "Change the way the world experiences television through apps that are designed to be immersive, intuitive and easy to use. Learn best practices and techniques to take advantage of the big screen and the Siri Remote.", + "title": "Designing for tvOS", + "platforms": ["tvOS"], + "keywords": ["app design", "apple tv", "apps on tv", "atv", "controllers", "design", "design best practices", "entertainment", "game", "game controllers", "game controls", "game design", "games", "games on tv", "gaming", "interaction design", "siri remote", "television", "television design", "tv", "tv best practices", "tvos", "ui design", "user interface design"], + "trackId": 9, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/802z6j79sd7g5drr7k7/802/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/802z6j79sd7g5drr7k7/802/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/802z6j79sd7g5drr7k7/802/802_designing_for_tvos.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/802z6j79sd7g5drr7k7/802/subtitles/eng/802_sd_designing_for_tvos.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/802z6j79sd7g5drr7k7/802/802_hd_designing_for_tvos.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/802z6j79sd7g5drr7k7/802/802_sd_designing_for_tvos.mp4", + "duration": 1925 + }, + "related": { + "activities": ["wwdc2016-206", "wwdc2016-210", "wwdc2016-212", "wwdc2016-215", "wwdc2016-221", "wwdc2016-229", "wwdc2016-506", "wwdc2016-607", "wwdc2016-710", "wwdc2016-803", "wwdc2016-805"] + } + }, { + "id": "wwdc2016-721", + "staticContentId": 60, + "eventContentId": 721, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/721", + "description": "The new Unified Logging and Tracing System for iOS and macOS uses Activity Tracing for performance, consolidates kernel and user-space logging, and has many other improvements. Learn how Logging and Tracing can help you debug and troubleshoot issues with your apps.", + "title": "Unified Logging and Activity Tracing", + "platforms": ["iOS", "macOS"], + "keywords": ["debug", "logging", "tracing"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/721wh2etddp4ghxhpcg/721/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/721wh2etddp4ghxhpcg/721/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/721wh2etddp4ghxhpcg/721/721_unified_logging_and_activity_tracing.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/721wh2etddp4ghxhpcg/721/subtitles/eng/721_sd_unified_logging_and_activity_tracing.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/721wh2etddp4ghxhpcg/721/721_hd_unified_logging_and_activity_tracing.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/721wh2etddp4ghxhpcg/721/721_sd_unified_logging_and_activity_tracing.mp4", + "duration": 2622 + }, + "related": { + "activities": ["wwdc2016-236", "wwdc2016-418", "wwdc2014-714"] + } + }, { + "id": "wwdc2016-725", + "staticContentId": 208, + "eventContentId": 725, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/725", + "description": "AirPrint works everywhere, including Enterprise environments. Learn how to deploy AirPrint in the Enterprise, how to set up an AirPrint Bluetooth Beacon which is new in iOS 10, and how to make sure your users take full advantage of AirPrint features.", + "title": "Deploying AirPrint in Enterprise", + "platforms": ["iOS", "macOS"], + "trackId": 7, + "type": "Video", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/725xk1hwmcfqkiv0jfh/725/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/725xk1hwmcfqkiv0jfh/725/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/725xk1hwmcfqkiv0jfh/725/725_deploying_airprint_in_enterprise.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/725xk1hwmcfqkiv0jfh/725/subtitles/eng/725_sd_deploying_airprint_in_enterprise.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/725xk1hwmcfqkiv0jfh/725/725_hd_deploying_airprint_in_enterprise.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/725xk1hwmcfqkiv0jfh/725/725_sd_deploying_airprint_in_enterprise.mp4", + "duration": 962 + }, + "related": { + "activities": ["wwdc2016-303"] + } + }, { + "id": "wwdc2016-801", + "staticContentId": 79, + "eventContentId": 801, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/801", + "description": "Inclusive design means making your app intuitive, appropriate, and delightful for a global audience and people who have accessibility challenges. Learn easy-to-follow techniques for making your app culturally-relevant and accessible through use of type, layout, color and iconography.", + "title": "Inclusive App Design", + "platforms": ["iOS", "macOS"], + "keywords": ["accessibility", "accessible", "color", "cultural", "design", "design best practices", "fonts", "global", "iconography", "interaction", "international", "layout", "scripts", "type", "typography", "worldly"], + "trackId": 9, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/801y753jw8vxmjblocq/801/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/801y753jw8vxmjblocq/801/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/801y753jw8vxmjblocq/801/801_inclusive_app_design.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/801y753jw8vxmjblocq/801/subtitles/eng/801_sd_inclusive_app_design.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/801y753jw8vxmjblocq/801/801_hd_inclusive_app_design.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/801y753jw8vxmjblocq/801/801_sd_inclusive_app_design.mp4", + "duration": 2125 + }, + "related": { + "activities": ["wwdc2016-104", "wwdc2016-201", "wwdc2016-202", "wwdc2016-232", "wwdc2016-233", "wwdc2016-407", "wwdc2016-803", "wwdc2016-804", "wwdc2016-805"] + } + }, { + "id": "wwdc2016-203", + "staticContentId": 122, + "eventContentId": 203, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/203", + "description": "macOS brings many new enhancements such as automatic window tabbing, enhanced color reproduction, and improved presentation of right-to-left languages. Get introduced to new APIs for these features and more, such as NSGridView and NSMeasurement. Learn about new conventions for APIs in Swift and Objective-C. This is your first stop to discover exciting new features in Cocoa sessions throughout the week.", + "title": "What's New in Cocoa", + "platforms": ["macOS"], + "keywords": ["appkit", "cocoa", "collection", "color", "copy", "document", "drag", "foundation", "grid", "gridview", "grid view", "measurement", "outline", "outlineview", "paste", "promise", "rtl", "swift", "table", "tableview", "tabs", "unit", "window"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/203x2w42att1kdzg1ce/203/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/203x2w42att1kdzg1ce/203/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/203x2w42att1kdzg1ce/203/203_whats_new_in_cocoa.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/203x2w42att1kdzg1ce/203/203_hd_whats_new_in_cocoa.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/203x2w42att1kdzg1ce/203/203_sd_whats_new_in_cocoa.mp4", + "duration": 3461 + }, + "related": { + "activities": ["wwdc2016-102", "wwdc2016-201", "wwdc2016-207", "wwdc2016-232", "wwdc2016-236", "wwdc2016-238", "wwdc2016-239", "wwdc2016-242", "wwdc2016-403", "wwdc2016-712"] + } + }, { + "id": "wwdc2016-219", + "staticContentId": 36, + "eventContentId": 219, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/219", + "description": "UICollectionView is a powerful class allowing your app to manage and customize the layout of views. iOS 10 brings enhancements for better performance, easier layout and brings features you've been looking for. Learn how to make your apps richer and faster by using new features in UICollectionView and its sibling, UITableView.", + "title": "What's New in UICollectionView in iOS 10", + "platforms": ["iOS", "tvOS"], + "keywords": ["collection", "ios", "performance", "scrolling", "table", "uicollectionview", "uikit", "uitableview"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/219g66mxt0n74iogsgp/219/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/219g66mxt0n74iogsgp/219/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/219g66mxt0n74iogsgp/219/219_whats_new_in_uicollectionview_in_ios_10.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/219g66mxt0n74iogsgp/219/subtitles/eng/219_sd_whats_new_in_uicollectionview_in_ios_10.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/219g66mxt0n74iogsgp/219/219_hd_whats_new_in_uicollectionview_in_ios_10.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/219g66mxt0n74iogsgp/219/219_sd_whats_new_in_uicollectionview_in_ios_10.mp4", + "duration": 2142 + }, + "related": { + "activities": ["wwdc2016-205", "wwdc2016-216", "wwdc2016-233", "wwdc2016-720"] + } + }, { + "id": "wwdc2016-507", + "staticContentId": 15, + "eventContentId": 507, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/507", + "description": "iOS, macOS, watchOS and tvOS offer a rich set of tools and APIs for recording, processing, and playing back audio in your apps. Learn how to choose the right API for your app, and the details on implementing each of them in order to deliver an outstanding audio experience.", + "title": "Delivering an Exceptional Audio Experience", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["au", "audio", "audio unit", "augraph", "auv3", "avaudioengine", "hardware", "playback", "processing", "recording", "signal processing"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/507n0zrhzxdzmg20zcl/507/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/507n0zrhzxdzmg20zcl/507/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/507n0zrhzxdzmg20zcl/507/507_delivering_an_exceptional_audio_experience.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/507n0zrhzxdzmg20zcl/507/subtitles/eng/507_sd_delivering_an_exceptional_audio_experience.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/507n0zrhzxdzmg20zcl/507/507_hd_delivering_an_exceptional_audio_experience.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/507n0zrhzxdzmg20zcl/507/507_sd_delivering_an_exceptional_audio_experience.mp4", + "duration": 3258 + }, + "related": { + "activities": ["wwdc2016-230", "wwdc2016-503", "wwdc2015-507", "wwdc2015-508", "wwdc2014-501", "wwdc2014-502"] + } + }, { + "id": "wwdc2016-716", + "staticContentId": 121, + "eventContentId": 716, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/716", + "description": "Discover how to give users a great location-aware experience while conserving power across all Apple platforms. Learn best practices for using Core Location, how an App can use and manage Circular and Beacon Regions, defer or pause location updates, and how to use Visit Monitoring to determine the interesting places the user has been. Get an overview of how a user authorizes an App's use of location services.", + "title": "Core Location Best Practices", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["always", "approval", "authorization", "beacon", "clvisit", "corelocation", "core location", "fence", "fencing", "fitness", "floor", "geocode", "geocoding", "geofence", "geo-fence", "geofencing", "geo-fencing", "gps", "heading", "ibeacon", "ibeacons", "indoor", "indoor positioning", "journal", "journaling", "location", "navigate", "navigation", "position", "positioning", "potloc", "potluck", "proximity", "ranging", "region", "region monitoring", "regions", "significant location change", "slc", "triangulation", "trilateration", "visit", "visit api", "visit monitor", "visit monitoring", "wheninuse", "whileinuse"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/716vyncka4gcaxxwuvq/716/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/716vyncka4gcaxxwuvq/716/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/716vyncka4gcaxxwuvq/716/716_core_location_best_practices.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/716vyncka4gcaxxwuvq/716/subtitles/eng/716_sd_core_location_best_practices.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/716vyncka4gcaxxwuvq/716/716_hd_core_location_best_practices.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/716vyncka4gcaxxwuvq/716/716_sd_core_location_best_practices.mp4", + "duration": 2021 + }, + "related": { + "activities": ["wwdc2016-208", "wwdc2016-235", "wwdc2016-707", "wwdc2016-709", "wwdc2016-713"] + } + }, { + "id": "wwdc2016-724", + "staticContentId": 207, + "eventContentId": 724, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/724", + "description": "Starting with a review of the HTTP/2 based provider API, you will learn about an important new feature: Token Based Authentication. Learn to connect to APNs using authentication tokens for sending pushes via the HTTP/2 API, relieving you of the overhead associated with maintaining valid certificates.", + "title": "What's New in the Apple Push Notification Service", + "platforms": ["iOS", "macOS", "tvOS"], + "trackId": 7, + "type": "Video", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/724x4wbpmrtkjpgfdlj/724/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/724x4wbpmrtkjpgfdlj/724/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/724x4wbpmrtkjpgfdlj/724/724_whats_new_in_the_apple_push_notification_service.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/724x4wbpmrtkjpgfdlj/724/subtitles/eng/724_sd_whats_new_in_the_apple_push_notification_service.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/724x4wbpmrtkjpgfdlj/724/724_hd_whats_new_in_the_apple_push_notification_service.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/724x4wbpmrtkjpgfdlj/724/724_sd_whats_new_in_the_apple_push_notification_service.mp4", + "duration": 885 + }, + "related": { + "activities": ["wwdc2016-707", "wwdc2016-708"] + } + }, { + "id": "wwdc2016-705", + "staticContentId": 50, + "eventContentId": 705, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/705", + "description": "Have you saved our 63-page iOS security white paper to your Reading List but find yourself too busy making great apps to get through it? You can keep your good intentions to devour every last detail, but meanwhile come join us for an illuminating talk on why we care so deeply about security as a design philosophy central to all our iOS products.", + "title": "How iOS Security Really Works", + "platforms": ["iOS"], + "keywords": ["ats", "crypto", "keychain", "security"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/705s57mrvm8so193i8c/705/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/705s57mrvm8so193i8c/705/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/705s57mrvm8so193i8c/705/705_how_ios_security_really_works.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/705s57mrvm8so193i8c/705/subtitles/eng/705_sd_how_ios_security_really_works.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/705s57mrvm8so193i8c/705/705_hd_how_ios_security_really_works.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/705s57mrvm8so193i8c/705/705_sd_how_ios_security_really_works.mp4", + "duration": 1465 + }, + "related": { + "activities": ["wwdc2016-401", "wwdc2016-701", "wwdc2016-706", "wwdc2016-709"] + } + }, { + "id": "wwdc2016-510", + "staticContentId": 301, + "eventContentId": 510, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/510", + "description": "HTTP Live Streaming enables the reliable delivery of media content over a wide variety of network conditions. Learn best practices in HLS authoring, see how to verify your streams using the HTTP Live Streaming tools, and apply the results to improve the performance of your streams.", + "title": "Validating HTTP Live Streams", + "platforms": ["iOS", "macOS", "tvOS"], + "keywords": ["hls", "hlsreport", "http live streaming", "mediastreamvalidator", "validation"], + "trackId": 1, + "type": "Video", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/510ndmh9wkcvzneegv2/510/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/510ndmh9wkcvzneegv2/510/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/510ndmh9wkcvzneegv2/510/510_validating_http_live_streams.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/510ndmh9wkcvzneegv2/510/510_hd_validating_http_live_streams.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/510ndmh9wkcvzneegv2/510/510_sd_validating_http_live_streams.mp4", + "duration": 1341 + }, + "related": { + "activities": ["wwdc2016-503", "wwdc2016-504"] + } + }, { + "id": "wwdc2016-235", + "staticContentId": 3, + "eventContentId": 235, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/235", + "description": "HealthKit provides robust tools for building great workout apps for Apple Watch. Learn how your workout app can collect data from Watch sensors, run and analyze data in real-time in the background, and contribute to Activity rings. Gain insights into creating a great standalone Watch experience and see how to display your workouts within the Health app and the Activity app on iOS.", + "title": "Building Great Workout Apps", + "platforms": ["watchOS"], + "keywords": ["🏃", "🚴", "⌚️", "🏃🏻", "🏃🏼", "🏃🏽", "🏃🏾", "🏃🏿", "🚴🏻", "🚴🏼", "🚴🏽", "🚴🏾", "🚴🏿", "accelerometer", "gyroscope", "healthkit"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/235dk9q4a4mflq2dbms/235/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/235dk9q4a4mflq2dbms/235/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/235dk9q4a4mflq2dbms/235/235_building_great_workout_apps.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/235dk9q4a4mflq2dbms/235/subtitles/eng/235_sd_building_great_workout_apps.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/235dk9q4a4mflq2dbms/235/235_hd_building_great_workout_apps.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/235dk9q4a4mflq2dbms/235/235_sd_building_great_workout_apps.mp4", + "duration": 3176 + }, + "related": { + "activities": ["wwdc2016-208", "wwdc2016-209", "wwdc2016-713", "wwdc2016-716", "wwdc2016-804", "wwdc2015-203", "wwdc2014-203", "wwdc2014-701"] + } + }, { + "id": "wwdc2016-202", + "staticContentId": 145, + "eventContentId": 202, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/202", + "description": "Explore the new accessibility features for iOS, tvOS, and macOS. Gain specific knowledge of how best to adapt your app to make it accessible to everyone, regardless of their physical or learning abilities. Learn from the experts about advanced accessibility topics and how best to structure your app interface for accessibility.", + "title": "What's New in Accessibility", + "platforms": ["iOS", "macOS", "tvOS"], + "keywords": ["accessibility"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/202w2zhc4l8yomptqnt/202/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/202w2zhc4l8yomptqnt/202/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/202w2zhc4l8yomptqnt/202/202_whats_new_in_accessibility.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/202w2zhc4l8yomptqnt/202/202_hd_whats_new_in_accessibility.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/202w2zhc4l8yomptqnt/202/202_sd_whats_new_in_accessibility.mp4", + "duration": 2100 + }, + "related": { + "activities": ["wwdc2016-104", "wwdc2016-407", "wwdc2016-801"] + } + }, { + "id": "wwdc2016-218", + "staticContentId": 9, + "eventContentId": 218, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/218", + "description": "Keeping your Apple Watch app up to date is key to creating a great experience on watchOS 3. Learn how to use the new background tasks to keep your complications and the new watchOS 3 Dock snapshots consistent with your app's underlying model. Discover how to get the most from NSURLSessions and Watch Connectivity to keep data fresh and glanceable.", + "title": "Keeping Your Watch App Up to Date", + "platforms": ["watchOS"], + "keywords": ["⌚️", "clockkit", "complication", "refresh", "schedule"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/218e59uvbkp1smncrss/218/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/218e59uvbkp1smncrss/218/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/218e59uvbkp1smncrss/218/218_keeping_your_watch_app_up_to_date.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/218e59uvbkp1smncrss/218/subtitles/eng/218_sd_keeping_your_watch_app_up_to_date.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/218e59uvbkp1smncrss/218/218_hd_keeping_your_watch_app_up_to_date.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/218e59uvbkp1smncrss/218/218_sd_keeping_your_watch_app_up_to_date.mp4", + "duration": 2347 + }, + "related": { + "activities": ["wwdc2016-208", "wwdc2016-211", "wwdc2016-227", "wwdc2016-804"] + } + }, { + "id": "wwdc2016-236", + "staticContentId": 116, + "eventContentId": 236, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/236", + "description": "Get details about new features of Auto Layout in Xcode, Cocoa and Cocoa Touch. Explore the new NSGridView, allowing your Cocoa app to easily build grid interfaces. Dive deeper into new tools that enable you to quickly diagnose layout issues in your interface. Learn about the new features in Xcode to quickly build adaptive interfaces.", + "title": "What's New in Auto Layout", + "platforms": ["iOS", "macOS", "tvOS"], + "keywords": ["builder", "cycle", "debug", "debugging", "grid", "gridview", "interface", "layout", "xcode"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/236dnxhy85jkit108dh/236/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/236dnxhy85jkit108dh/236/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/236dnxhy85jkit108dh/236/236_whats_new_in_auto_layout.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/236dnxhy85jkit108dh/236/subtitles/eng/236_sd_whats_new_in_auto_layout.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/236dnxhy85jkit108dh/236/236_hd_whats_new_in_auto_layout.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/236dnxhy85jkit108dh/236/236_sd_whats_new_in_auto_layout.mp4", + "duration": 2419 + }, + "related": { + "activities": ["wwdc2017-218", "wwdc2016-201", "wwdc2016-203", "wwdc2016-222", "wwdc2016-232", "wwdc2016-233", "wwdc2016-239", "wwdc2016-721", "wwdc2016-803", "wwdc2015-218", "wwdc2015-219"] + } + }, { + "id": "wwdc2016-410", + "staticContentId": 89, + "eventContentId": 410, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/410", + "description": "Discover Xcode's enhancements for debugging autolayout issues at runtime. Learn how issues inside complex GKStateMachine objects can be easily debugged at runtime. Gain insight into finding performance bottlenecks inside SpriteKit and SceneKit apps more easily with the enhanced FPS gauge. Understand how to fix leaked and abandoned memory in your app by inspecting the heap from within your typical Xcode debugging workflow.", + "title": "Visual Debugging with Xcode", + "platforms": ["iOS", "macOS", "tvOS", "watchOS"], + "keywords": ["autolayout", "auto layout", "bottlenecks", "constraints", "debug", "debugger", "debugging", "fps", "fps gauge", "framerate", "frame rate", "gkstatemachine", "gpu", "graph", "heap", "leak", "leaks", "memory", "performance", "quicklook", "quick look", "runtime", "run time", "scenekit", "spritekit", "state", "state machine", "xcode"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/410jaf5ko3ob8asajlf/410/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/410jaf5ko3ob8asajlf/410/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/410jaf5ko3ob8asajlf/410/410_visual_debugging_with_xcode.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/410jaf5ko3ob8asajlf/410/subtitles/eng/410_sd_visual_debugging_with_xcode.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/410jaf5ko3ob8asajlf/410/410_hd_visual_debugging_with_xcode.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/410jaf5ko3ob8asajlf/410/410_sd_visual_debugging_with_xcode.mp4", + "duration": 2301 + }, + "related": { + "activities": ["wwdc2016-411", "wwdc2016-412", "wwdc2016-413", "wwdc2016-417", "wwdc2016-418", "wwdc2016-609", "wwdc2016-610", "wwdc2016-612"] + } + }, { + "id": "wwdc2016-408", + "staticContentId": 84, + "eventContentId": 408, + "eventId": "wwdc2016", + "webPermalink": "https://developer.apple.com/wwdc16/408", + "description": "Learn more about Swift Playgrounds, the new iPad app that teaches coding using the powerful Swift programming language. Explore the featured content, complete with puzzles that help you master each coding concept. Learn more about the coding features of Swift Playgrounds and see how the editing experience was re-imagined for touch. Learn to use the included templates to build playgrounds and look at the available features in the new playground book format.", + "title": "Introducing Swift Playgrounds", + "platforms": ["iOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/408j7syjtdlxnl2rq4j/408/hls_vod_mvp.m3u8", + "tvOShls": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/408j7syjtdlxnl2rq4j/408/atv_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/408j7syjtdlxnl2rq4j/408/408_introducing_swift_playgrounds.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/408j7syjtdlxnl2rq4j/408/subtitles/eng/408_sd_introducing_swift_playgrounds.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/408j7syjtdlxnl2rq4j/408/408_hd_introducing_swift_playgrounds.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2016/408j7syjtdlxnl2rq4j/408/408_sd_introducing_swift_playgrounds.mp4", + "duration": 2984 + }, + "related": { + "activities": ["wwdc2016-402", "wwdc2016-404"] + } + }, { + "id": "wwdc2015-502", + "staticContentId": 596, + "eventContentId": 502, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/502", + "description": "FairPlay streaming provides industrial-grade protection for audio and video content. Learn how to implement and deploy FairPlay streaming to protect content when using HTTP Live Streaming.", + "title": "Content Protection for HTTP Live Streaming", + "platforms": ["iOS", "macOS"], + "keywords": ["fps", "hls"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/502sufwcpog/502/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/502sufwcpog/502/502_content_protection_for_http_live_streaming.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/502sufwcpog/502/subtitles/eng/502_sd_content_protection_for_http_live_streaming.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/502sufwcpog/502/502_hd_content_protection_for_http_live_streaming.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/502sufwcpog/502/502_sd_content_protection_for_http_live_streaming.mp4", + "duration": 1701 + } + }, { + "id": "wwdc2015-234", + "staticContentId": 609, + "eventContentId": 234, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/234", + "description": "UIDocument is a robust way to model user-generated content in your app. See how to easily integrate your app's documents with iCloud, file extensions, and document browsers. Learn how to build a document-based app from the ground up.", + "title": "Building Document Based Apps", + "platforms": ["iOS"], + "keywords": ["📃", "📄", "📈", "📉", "📊", "📑", "📝", "document browser", "file provider", "nsfilecoordination", "nsfilewrapper"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/234reaz1byqc/234/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/234reaz1byqc/234/234_building_document_based_apps.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/234reaz1byqc/234/subtitles/eng/234_sd_building_document_based_apps.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/234reaz1byqc/234/234_hd_building_document_based_apps.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/234reaz1byqc/234/234_sd_building_document_based_apps.mp4", + "duration": 2357 + } + }, { + "id": "wwdc2015-231", + "staticContentId": 610, + "eventContentId": 231, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/231", + "description": "Small improvements can make a big impact on your iOS app's performance and launch time. Learn best practices to optimize your UIKit-based applications. See how to future-proof your app for what may be next, and walk through numerous real world examples for more responsive and dynamic collection and table views.", + "title": "Cocoa Touch Best Practices", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2313dt427pmq/231/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2313dt427pmq/231/231_cocoa_touch_best_practices.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2313dt427pmq/231/subtitles/eng/231_sd_cocoa_touch_best_practices.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2313dt427pmq/231/231_hd_cocoa_touch_best_practices.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2313dt427pmq/231/231_sd_cocoa_touch_best_practices.mp4", + "duration": 2198 + } + }, { + "id": "wwdc2015-107", + "staticContentId": 611, + "eventContentId": 107, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/107", + "description": "iOS 9 expands on adaptivity with Multitasking. Learn about additions to UIKit to support truly universal layout sizes and types. Get introduced to all-new frameworks and APIs for Cocoa Touch such as a new Contacts framework, text-editing gestures, enhancements to dynamics and visual effects, and much more. Come find out which sessions you won't want to miss throughout the week.", + "title": "What's New in Cocoa Touch", + "platforms": ["iOS"], + "keywords": ["auto layout", "size classes"], + "trackId": 4, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/1075hpxmc54818sn59su/107/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/1075hpxmc54818sn59su/107/107_whats_new_in_cocoa_touch.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/1075hpxmc54818sn59su/107/subtitles/eng/107_sd_whats_new_in_cocoa_touch.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/1075hpxmc54818sn59su/107/107_hd_whats_new_in_cocoa_touch.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/1075hpxmc54818sn59su/107/107_sd_whats_new_in_cocoa_touch.mp4", + "duration": 1907 + } + }, { + "id": "wwdc2015-206", + "staticContentId": 593, + "eventContentId": 206, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/206", + "description": "See what's new in MapKit. Learn about improvements to existing APIs and new ways of incorporating transit ETAs and Flyover map views in your app.", + "title": "What's New in MapKit", + "platforms": ["iOS", "macOS"], + "keywords": ["annotation", "current location", "direction", "flyover", "geo", "hybrid", "imagery", "location", "map", "mapkit", "mapview", "mk", "mk", "overlay", "pin", "route", "satellite", "search", "standard", "tile", "transit"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/206v5ce46maax7s/206/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/206v5ce46maax7s/206/206_whats_new_in_mapkit.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/206v5ce46maax7s/206/subtitles/eng/206_sd_whats_new_in_mapkit.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/206v5ce46maax7s/206/206_hd_whats_new_in_mapkit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/206v5ce46maax7s/206/206_sd_whats_new_in_mapkit.mp4", + "duration": 2072 + } + }, { + "id": "wwdc2015-216", + "staticContentId": 621, + "eventContentId": 216, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/216", + "description": "Advanced layouts and animations are essential to your app's interface. Gain insights into group layout mechanics and the new element animation APIs introduced in WatchKit for watchOS 2. Understand how to create layouts that work well with animations and learn other techniques to add liveliness to your apps.", + "title": "Layout and Animation Techniques for WatchKit", + "platforms": ["watchOS"], + "keywords": ["⌚️", "extension", "layout", "wkinterface"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/216isrjt4ku9w4/216/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/216isrjt4ku9w4/216/216_layout_and_animation_techniques_for_watchkit.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/216isrjt4ku9w4/216/subtitles/eng/216_sd_layout_and_animation_techniques_for_watchkit.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/216isrjt4ku9w4/216/216_hd_layout_and_animation_techniques_for_watchkit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/216isrjt4ku9w4/216/216_sd_layout_and_animation_techniques_for_watchkit.mp4", + "duration": 2189 + } + }, { + "id": "wwdc2015-609", + "staticContentId": 479, + "eventContentId": 609, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/609", + "description": "Dive into the tools and technologies used to construct the DemoBots developer sample. Gain a practical understanding of how DemoBots implements its gameplay logic with GameplayKit and visuals using SpriteKit. See how the sample integrates On Demand Resources and other system services.", + "title": "Deeper into GameplayKit with DemoBots", + "platforms": ["iOS"], + "keywords": ["gameplaykit", "spritekit"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/609pzlyunriyjupp/609/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/609pzlyunriyjupp/609/609_deeper_into_gameplaykit_with_demobots.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/609pzlyunriyjupp/609/subtitles/eng/609_sd_deeper_into_gameplaykit_with_demobots.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/609pzlyunriyjupp/609/609_hd_deeper_into_gameplaykit_with_demobots.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/609pzlyunriyjupp/609/609_sd_deeper_into_gameplaykit_with_demobots.mp4", + "duration": 2402 + } + }, { + "id": "wwdc2015-804", + "staticContentId": 595, + "eventContentId": 804, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/804", + "description": "Fonts lay at the intersection of design and engineering. Get introduced to typographic principles and how they apply to the San Francisco fonts. Hear what makes this family of fonts unique and how to effectively take advantage of their advanced features. Learn best practices when designing and implementing interfaces with text.", + "title": "Introducing the New System Fonts", + "platforms": ["iOS", "macOS"], + "trackId": 9, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/804eub264zh3x4j9yb/804/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/804eub264zh3x4j9yb/804/804_introducing_the_new_system_fonts.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/804eub264zh3x4j9yb/804/subtitles/eng/804_sd_introducing_the_new_system_fonts.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/804eub264zh3x4j9yb/804/804_hd_introducing_the_new_system_fonts.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/804eub264zh3x4j9yb/804/804_sd_introducing_the_new_system_fonts.mp4", + "duration": 1946 + } + }, { + "id": "wwdc2015-212", + "staticContentId": 613, + "eventContentId": 212, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/212", + "description": "Multitasking in iOS 9 allows two side-by-side apps and the Picture-in-Picture window to simultaneously run onscreen at the same time. Discover essential techniques for designing efficient, responsive apps to give your users a fluid, immersive experience with Slide Over, Split View, and Picture-in-Picture.", + "title": "Optimizing Your App for Multitasking on iPad in iOS 9", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/212mm5ra3oau66/212/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/212mm5ra3oau66/212/212_optimizing_your_app_for_multitasking_on_ipad_in_ios_9.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/212mm5ra3oau66/212/subtitles/eng/212_sd_optimizing_your_app_for_multitasking_on_ipad_in_ios_9.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/212mm5ra3oau66/212/212_hd_optimizing_your_app_for_multitasking_on_ipad_in_ios_9.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/212mm5ra3oau66/212/212_sd_optimizing_your_app_for_multitasking_on_ipad_in_ios_9.mp4", + "duration": 2358 + } + }, { + "id": "wwdc2015-711", + "staticContentId": 678, + "eventContentId": 711, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/711", + "description": "Learn about App Transport Security, HTTP/2 protocol support, new NSURLSession API, and best practices for networking in apps, extensions, and WatchKit apps.", + "title": "Networking with NSURLSession", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["ats", "http", "networking", "nsurlconnection", "nsurlsession"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/711y6zlz0ll/711/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/711y6zlz0ll/711/711_networking_with_nsurlsession.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/711y6zlz0ll/711/subtitles/eng/711_sd_networking_with_nsurlsession.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/711y6zlz0ll/711/711_hd_networking_with_nsurlsession.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/711y6zlz0ll/711/711_sd_networking_with_nsurlsession.mp4", + "duration": 2447 + } + }, { + "id": "wwdc2015-219", + "staticContentId": 693, + "eventContentId": 219, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/219", + "description": "Continue your pursuit of Auto Layout mastery. Gain high level insight into how Auto Layout works, and strategies for debugging layout issues. Learn how to use new APIs for constraint creation and layout guides to build more complex layouts.", + "title": "Mysteries of Auto Layout, Part 2", + "platforms": ["iOS", "macOS"], + "keywords": ["adaptive", "adaptivity", "alignment", "ambiguity", "ambiguous", "autolayout", "constraint", "debug", "debugging", "guide", "logs", "nssplitview", "nsview", "sidebar", "storyboard", "uiview", "unsatisfiable constraints", "visual format", "xcode"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/219u3bqgvsz2g/219/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/219u3bqgvsz2g/219/219_mysteries_of_auto_layout_part_2.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/219u3bqgvsz2g/219/subtitles/eng/219_sd_mysteries_of_auto_layout_part_2.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/219u3bqgvsz2g/219/219_hd_mysteries_of_auto_layout_part_2.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/219u3bqgvsz2g/219/219_sd_mysteries_of_auto_layout_part_2.mp4", + "duration": 2234 + }, + "related": { + "activities": ["wwdc2016-236"] + } + }, { + "id": "wwdc2015-220", + "staticContentId": 656, + "eventContentId": 220, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/220", + "description": "Learn about the latest enhancements to the Core Data framework. Hear how to efficiently delete objects, ensure uniqueness, and easily migrate your persistent stores to new locations.", + "title": "What's New in Core Data", + "platforms": ["iOS", "macOS"], + "keywords": ["batch", "database", "delete", "model", "nsfetchrequest", "nsmanagedobjectcontext", "query", "sqlite", "update"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/220lgx5lvphj2/220/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/220lgx5lvphj2/220/220_whats_new_in_core_data.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/220lgx5lvphj2/220/subtitles/eng/220_sd_whats_new_in_core_data.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/220lgx5lvphj2/220/220_hd_whats_new_in_core_data.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/220lgx5lvphj2/220/220_sd_whats_new_in_core_data.mp4", + "duration": 1785 + } + }, { + "id": "wwdc2015-610", + "staticContentId": 651, + "eventContentId": 610, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/610", + "description": "Learn best practices to maximize the efficiency of your Metal based apps and attain high frame rates. Gain insight into powerful tools for analyzing and optimizing performance for both the CPU and GPU. Discover how to identify bottlenecks, tune performance hot-spots, and overcome any hurdles that could keep your app from reaching its potential.", + "title": "Metal Performance Optimization Techniques", + "platforms": ["iOS", "macOS"], + "keywords": ["3d", "3d graphics", "accelerate", "capture", "compute", "drawable", "encoder", "frame", "frame debugger", "gpgpu", "gpu", "metl", "mtl", "opengl", "opengl es", "optimize", "render", "renderer", "shader", "simd", "xcode"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/610kn68riy9ms89m/610/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/610kn68riy9ms89m/610/610_metal_performance_optimization_techniques.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/610kn68riy9ms89m/610/subtitles/eng/610_sd_metal_performance_optimization_techniques.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/610kn68riy9ms89m/610/610_hd_metal_performance_optimization_techniques.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/610kn68riy9ms89m/610/610_sd_metal_performance_optimization_techniques.mp4", + "duration": 3473 + } + }, { + "id": "wwdc2015-201", + "staticContentId": 636, + "eventContentId": 201, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/201", + "description": "iOS has transformed the lives of many users with a range of physical and learning disabilities. Learn how to create apps that leverage the power and simplicity of Apple's assistive technologies to make them accessible to the broadest audience possible. Hear about the latest advancements in iOS accessibility and how you can take advantage of them today.", + "title": "iOS Accessibility", + "platforms": ["iOS"], + "keywords": ["blind", "braille", "caption", "color blindness", "deaf", "disabled", "dynamic type", "guided access", "hearing aid", "motion", "speech", "subtitle", "uifont", "vision", "voiceover", "zoom"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/201pps6n6g0nsnz/201/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/201pps6n6g0nsnz/201/201_ios_accessibility.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/201pps6n6g0nsnz/201/subtitles/eng/201_sd_ios_accessibility.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/201pps6n6g0nsnz/201/201_hd_ios_accessibility.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/201pps6n6g0nsnz/201/201_sd_ios_accessibility.mp4", + "duration": 1942 + } + }, { + "id": "wwdc2015-701", + "staticContentId": 598, + "eventContentId": 701, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/701", + "description": "Passbook is now Wallet. Wallet stores your coupons, boarding passes, event tickets, and even the credit and debit cards you use with Apple Pay. In iOS 9, Wallet makes the Apple Pay experience even better and integrates more with Apple Watch. Learn about the Wallet app, new kinds of passes, and how your app can integrate and interact with Wallet.", + "title": "Wallet - The home for Apple Pay and more", + "platforms": ["iOS", "watchOS"], + "keywords": ["pass", "passbook", "pay", "wallet"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/701i2qis0reg/701/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/701i2qis0reg/701/701_wallet__the_home_for_apple_pay_and_more.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/701i2qis0reg/701/subtitles/eng/701_sd_wallet__the_home_for_apple_pay_and_more.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/701i2qis0reg/701/701_hd_wallet__the_home_for_apple_pay_and_more.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/701i2qis0reg/701/701_sd_wallet__the_home_for_apple_pay_and_more.mp4", + "duration": 1863 + } + }, { + "id": "wwdc2015-717", + "staticContentId": 580, + "eventContentId": 717, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/717", + "description": "The Network Extension framework allows apps to customize and extend the core networking features of iOS and OS X. Learn how to use new VPN features and NetworkExtension API to create network security solutions for education and enterprise.", + "title": "What's New in Network Extension and VPN", + "keywords": ["airport", "business", "education", "enterprise", "network", "security", "vpn", "wifi"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/717yq4y85w/717/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/717yq4y85w/717/717_whats_new_in_network_extension_and_vpn.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/717yq4y85w/717/subtitles/eng/717_sd_whats_new_in_network_extension_and_vpn.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/717yq4y85w/717/717_hd_whats_new_in_network_extension_and_vpn.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/717yq4y85w/717/717_sd_whats_new_in_network_extension_and_vpn.mp4", + "duration": 2422 + } + }, { + "id": "wwdc2015-204", + "staticContentId": 627, + "eventContentId": 204, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/204", + "description": "Building on the strong accessibility support in iOS, Apple Watch offers assistive features like VoiceOver and Zoom. Gain insights into how these accessibility features work on Apple Watch, and how to make sure your app can be accessible to all users.", + "title": "Apple Watch Accessibility", + "platforms": ["watchOS"], + "keywords": ["blind", "braille", "caption", "color blindness", "deaf", "disabled", "dynamic type", "guided access", "hearing aid", "motion", "speech", "subtitle", "uifont", "vision", "voiceover", "zoom"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2048w4vdjhe1i1m/204/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2048w4vdjhe1i1m/204/204_apple_watch_accessibility.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2048w4vdjhe1i1m/204/subtitles/eng/204_sd_apple_watch_accessibility.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2048w4vdjhe1i1m/204/204_hd_apple_watch_accessibility.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2048w4vdjhe1i1m/204/204_sd_apple_watch_accessibility.mp4", + "duration": 1841 + } + }, { + "id": "wwdc2015-511", + "staticContentId": 683, + "eventContentId": 511, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/511", + "description": "Safari in iOS 9 and OS X El Capitan delivers new ways for your app to extend Safari's behavior. Learn how to create Shared Links and Content Blocking extensions for iOS and OS X, and about changes to the Safari Extension development process.", + "title": "Safari Extensibility: Content Blocking and Shared Links", + "platforms": ["macOS"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/511kmynuza/511/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/511kmynuza/511/511_safari_extensibility_content_blocking_and_shared_links.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/511kmynuza/511/subtitles/eng/511_sd_safari_extensibility_content_blocking_and_shared_links.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/511kmynuza/511/511_hd_safari_extensibility_content_blocking_and_shared_links.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/511kmynuza/511/511_sd_safari_extensibility_content_blocking_and_shared_links.mp4", + "duration": 2260 + } + }, { + "id": "wwdc2015-222", + "staticContentId": 631, + "eventContentId": 222, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/222", + "description": "iOS 9 brings complete right-to-left support for Arabic, Hebrew, and other languages. Going beyond basic text, your app's entire interface can now flip to provide a native right-to-left experience. Learn what behavior you get for free from UIKit, and hear details about adding right-to-left support in custom interfaces. Hear from experts about how to evaluate the readiness of your app for these languages. Understand best practices to avoid common pitfalls and to create a seamless bi-directional app.", + "title": "New UIKit Support for International User Interfaces", + "platforms": ["iOS"], + "keywords": ["dynamic type", "farsi", "formatter", "international", "internationalization", "locale", "localization", "nscalendar", "nsdateformatter", "nsformatter", "nslocale", "nsstring", "nstextview", "text system", "uifont", "uilabel", "uitextview", "urdu"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/222ngkqh58b52/222/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/222ngkqh58b52/222/222_new_uikit_support_for_international_user_interfaces.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/222ngkqh58b52/222/subtitles/eng/222_sd_new_uikit_support_for_international_user_interfaces.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/222ngkqh58b52/222/222_hd_new_uikit_support_for_international_user_interfaces.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/222ngkqh58b52/222/222_sd_new_uikit_support_for_international_user_interfaces.mp4", + "duration": 2350 + } + }, { + "id": "wwdc2015-103", + "staticContentId": 571, + "eventContentId": 103, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/103", + "description": "Join us for an unforgettable award ceremony celebrating developers and their outstanding work. The 2015 Apple Design Awards recognize state of the art iOS, OS X, and Apple Watch apps that reflect excellence in design and innovation.", + "title": "Apple Design Awards", + "platforms": ["iOS", "macOS", "watchOS"], + "trackId": 4, + "type": "Special Event", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/103ot7lzkdri2fvn1iyh/103/hls_vod_mvp.m3u8", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/103ot7lzkdri2fvn1iyh/103/subtitles/eng/103_sd_apple_design_awards.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/103ot7lzkdri2fvn1iyh/103/103_hd_apple_design_awards.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/103ot7lzkdri2fvn1iyh/103/103_sd_apple_design_awards.mp4", + "duration": 3437 + } + }, { + "id": "wwdc2015-713", + "staticContentId": 619, + "eventContentId": 713, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/713", + "description": "Getting information to your Watch app is crucial. Learn how to leverage NSURLSession to get your data from the Internet. Tap into the new WatchConnectivity framework for device to device communication and transferring of data. See real-world examples and learn best practices to understand when to use your WatchKit extension and when to leverage your iPhone app.", + "title": "Introducing Watch Connectivity", + "platforms": ["watchOS"], + "keywords": ["⌚️", "clockkit", "complication", "connectivity", "extension", "networking", "wkinterface"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/713gc2tqvvb/713/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/713gc2tqvvb/713/713_introducing_watch_connectivity.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/713gc2tqvvb/713/subtitles/eng/713_sd_introducing_watch_connectivity.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/713gc2tqvvb/713/713_hd_introducing_watch_connectivity.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/713gc2tqvvb/713/713_sd_introducing_watch_connectivity.mp4", + "duration": 3444 + } + }, { + "id": "wwdc2015-801", + "staticContentId": 639, + "eventContentId": 801, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/801", + "description": "Design for tomorrow's products today. See examples of how Apple and partners designed software for Apple Watch and other products before they even existed. Learn techniques for designing and prototyping so you can create great apps for hardware accessories and new products before they are available.", + "title": "Designing for Future Hardware", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["animation", "design", "interaction", "layout", "prototype", "prototyping", "ui", "user interface", "watch"], + "trackId": 9, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/801auxyvb1pgtkufjk/801/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/801auxyvb1pgtkufjk/801/801_designing_for_future_hardware.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/801auxyvb1pgtkufjk/801/subtitles/eng/801_sd_designing_for_future_hardware.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/801auxyvb1pgtkufjk/801/801_hd_designing_for_future_hardware.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/801auxyvb1pgtkufjk/801/801_sd_designing_for_future_hardware.mp4", + "duration": 2335 + } + }, { + "id": "wwdc2015-605", + "staticContentId": 644, + "eventContentId": 605, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/605", + "description": "ReplayKit provides an easy-to-use framework that lets players record their gameplay — amazing plays, great victories, or solutions to tough challenges — and share video with other players and viewers online. Get introduced to the ReplayKit framework and see how to enable its capability for sharing game video and audio in your games and other apps. Then get the latest news about Game Center, Apple's social gaming network. Learn about the new model for pre-release testing with Game Center and enhancements for multiplayer games.", + "title": "Going Social with ReplayKit and Game Center", + "platforms": ["iOS", "macOS"], + "keywords": ["capture", "game center", "guest", "multiplayer", "narrate", "production", "record", "replay", "sandbox", "screen", "share", "share sheet", "sheet", "video"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/6053hq2fz0ebo0lm/605/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/6053hq2fz0ebo0lm/605/605_going_social_with_replaykit_and_game_center.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/6053hq2fz0ebo0lm/605/subtitles/eng/605_sd_going_social_with_replaykit_and_game_center.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/6053hq2fz0ebo0lm/605/605_hd_going_social_with_replaykit_and_game_center.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/6053hq2fz0ebo0lm/605/605_sd_going_social_with_replaykit_and_game_center.mp4", + "duration": 2096 + } + }, { + "id": "wwdc2015-232", + "staticContentId": 629, + "eventContentId": 232, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/232", + "description": "NSProgress lets you easily and accurately report the progress of work in your app. Understand the concepts behind progress reporting and how to design code that accurately and efficiently reports its progress. Gain specific insights on how to receive progress updates from framework APIs, fold that into your own progress reporting, and show that progress in your app. Hear from the experts about best practices and how to master the NSProgress APIs.", + "title": "Best Practices for Progress Reporting", + "platforms": ["iOS", "macOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/232f1zopzycv/232/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/232f1zopzycv/232/232_best_practices_for_progress_reporting.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/232f1zopzycv/232/subtitles/eng/232_sd_best_practices_for_progress_reporting.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/232f1zopzycv/232/232_hd_best_practices_for_progress_reporting.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/232f1zopzycv/232/232_sd_best_practices_for_progress_reporting.mp4", + "duration": 2257 + } + }, { + "id": "wwdc2015-602", + "staticContentId": 646, + "eventContentId": 602, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/602", + "description": "Model I/O provides a seamless infrastructure for accessing and managing 3D models. Its high-performance architecture supports reading and writing popular mesh and model formats, textures, and materials. Get introduced to the Model I/O framework and learn key details about its integration with SceneKit, MetalKit, and GLKit.", + "title": "Managing 3D Assets with Model I/O", + "platforms": ["iOS", "macOS"], + "keywords": ["abc", "ambient", "camera", "dome", "light", "mesh", "mkasset", "modelio", "modelkit", "obj", "occlusion", "opensubdiv", "sky", "skybox", "stl", "subdivide", "texture"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/602868pb0ow6idb3w/602/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/602868pb0ow6idb3w/602/602_managing_3d_assets_with_model_io.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/602868pb0ow6idb3w/602/subtitles/eng/602_sd_managing_3d_assets_with_model_io.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/602868pb0ow6idb3w/602/602_hd_managing_3d_assets_with_model_io.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/602868pb0ow6idb3w/602/602_sd_managing_3d_assets_with_model_io.mp4", + "duration": 2566 + } + }, { + "id": "wwdc2015-408", + "staticContentId": 699, + "eventContentId": 408, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/408", + "description": "At the heart of Swift's design are two incredibly powerful ideas: protocol-oriented programming and first class value semantics. Each of these concepts benefit predictability, performance, and productivity, but together they can change the way we think about programming. Find out how you can apply these ideas to improve the code you write.", + "title": "Protocol-Oriented Programming in Swift", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["architecture", "collection", "copy on write", "protocol extensions", "protocols", "reference type", "sequence", "value semantics", "value type"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/408509vyudbqvts/408/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/408509vyudbqvts/408/408_protocoloriented_programming_in_swift.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/408509vyudbqvts/408/subtitles/eng/408_sd_protocoloriented_programming_in_swift.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/408509vyudbqvts/408/408_hd_protocoloriented_programming_in_swift.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/408509vyudbqvts/408/408_sd_protocoloriented_programming_in_swift.mp4", + "duration": 2752 + }, + "related": { + "activities": ["wwdc2016-419"] + } + }, { + "id": "wwdc2015-805", + "staticContentId": 484, + "eventContentId": 805, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/805", + "description": "Get essential design guidance for creating Apple Watch apps that support quick and efficient interaction, make accessing features and information more convenient, and compliment their companion iOS apps. Learn key tips about information architecture, layout, typography, color and app icon design that will make your app easy to use, beautiful and delightful.", + "title": "Apple Watch Design Tips and Tricks", + "platforms": ["watchOS"], + "keywords": ["⌚️", "design", "digital crown", "experience", "icon", "interface", "layout", "typography", "ui", "watchkit", "wkinterface"], + "trackId": 9, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/805yjy11epjkgmnn11/805/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/805yjy11epjkgmnn11/805/805_apple_watch_design_tips_and_tricks.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/805yjy11epjkgmnn11/805/subtitles/eng/805_sd_apple_watch_design_tips_and_tricks.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/805yjy11epjkgmnn11/805/805_hd_apple_watch_design_tips_and_tricks.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/805yjy11epjkgmnn11/805/805_sd_apple_watch_design_tips_and_tricks.mp4", + "duration": 3114 + } + }, { + "id": "wwdc2015-802", + "staticContentId": 620, + "eventContentId": 802, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/802", + "description": "Apple Watch represents a new chapter in the way people relate to technology. It's the most personal device Apple has ever designed, and it enables new ways to receive information and to interact with apps. Learn about the foundations on which Apple Watch was designed and how they lead to Apple Watch apps that complement the iPhone, support lightweight interaction and deliver timely and relevant information to the wrist. Discover how to create usable and beautiful apps, notifications and glances through effective use of typography, information design, layout, animation, and color.", + "title": "Designing for Apple Watch", + "platforms": ["watchOS"], + "keywords": ["⌚️", "clockkit", "complication", "digital crown", "experience", "extension", "foreground", "haptic", "interface", "layout", "persistent", "picker", "taptic", "ui", "watchkit", "wkinterface"], + "trackId": 9, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/802mpzd3nzovlygpbg/802/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/802mpzd3nzovlygpbg/802/802_designing_for_apple_watch.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/802mpzd3nzovlygpbg/802/subtitles/eng/802_sd_designing_for_apple_watch.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/802mpzd3nzovlygpbg/802/802_hd_designing_for_apple_watch.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/802mpzd3nzovlygpbg/802/802_sd_designing_for_apple_watch.mp4", + "duration": 3288 + } + }, { + "id": "wwdc2015-712", + "staticContentId": 601, + "eventContentId": 712, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/712", + "description": "The Accelerate framework gives you fast, energy efficient signal and image processing and linear algebra libraries. Learn about a new library, dedicated to high performance compression. simd.h, introduced in iOS 8 and OS X 10.10, is the unified 2d and 3d math library for graphics and games. Find out how you can use simd.h and what's new in iOS 9 and OS X 10.11.", + "title": "Low Energy, High Performance: Compression and Accelerate", + "platforms": ["iOS", "macOS"], + "keywords": ["accelerate", "compression", "numerics", "vector"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/7125ovmdf36/712/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/7125ovmdf36/712/712_low_energy_high_performance_compression_and_accelerate.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/7125ovmdf36/712/subtitles/eng/712_sd_low_energy_high_performance_compression_and_accelerate.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/7125ovmdf36/712/712_hd_low_energy_high_performance_compression_and_accelerate.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/7125ovmdf36/712/712_sd_low_energy_high_performance_compression_and_accelerate.mp4", + "duration": 2133 + } + }, { + "id": "wwdc2015-104", + "staticContentId": 695, + "eventContentId": 104, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/104", + "description": "Xcode is the development environment for creating great apps for Apple's platforms. Start the week by watching the Xcode team demonstrate the latest features and improved workflows in Xcode 7. This session also provides a complete overview of the in-depth developer tools topics covered at WWDC 2015.", + "title": "What's New in Xcode", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["address sanitizer", "asset catalogs", "assets", "automation", "buffer overflow", "ci", "code coverage", "continuous integration", "crash", "crash logs", "debugging", "distribution", "ib", "interface builder", "memory", "odr", "on demand resources", "recording", "resources", "slimming", "storyboards", "testing", "thinning", "ui automation", "ui testing", "watch", "watch kit", "xcode server", "xctest"], + "trackId": 4, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/104usewvb5m0qbwafx8p/104/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/104usewvb5m0qbwafx8p/104/104_whats_new_in_xcode.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/104usewvb5m0qbwafx8p/104/subtitles/eng/104_sd_whats_new_in_xcode.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/104usewvb5m0qbwafx8p/104/104_hd_whats_new_in_xcode.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/104usewvb5m0qbwafx8p/104/104_sd_whats_new_in_xcode.mp4", + "duration": 2244 + } + }, { + "id": "wwdc2015-714", + "staticContentId": 591, + "eventContentId": 714, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/714", + "description": "Learn what's new in Core Location. Discover how to use Core Location with Apple Watch, and how to make the best use of location services to develop powerful and compelling apps.", + "title": "What's New in Core Location", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["approval", "authorization", "beacon", "clvisit", "corelocation", "core location", "fence", "fencing", "floor", "geo-fence", "geo-fencing", "gps", "heading", "ibeacon", "ibeacons", "indoor", "indoor positioning", "journal", "journaling", "location", "navigation", "position", "proximity", "ranging", "region", "region monitoring", "regions", "significant location change", "slc", "triangulation", "trilateration", "visit", "visit api", "visit monitor", "visit monitoring", "wheninuse", "whileinuse"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/714tqy593v/714/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/714tqy593v/714/714_whats_new_in_core_location.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/714tqy593v/714/subtitles/eng/714_sd_whats_new_in_core_location.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/714tqy593v/714/714_hd_whats_new_in_core_location.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/714tqy593v/714/714_sd_whats_new_in_core_location.mp4", + "duration": 2390 + } + }, { + "id": "wwdc2015-223", + "staticContentId": 632, + "eventContentId": 223, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/223", + "description": "Whether it's getting contact information, managing a social graph, or adding a new friend, Contacts are a critical piece of many apps. OS X El Capitan and iOS 9 now share a new Contacts API. Understand the design, goals, and benefits of this new framework. Gain critical insights into how to make a smooth transition for your app to this new framework.", + "title": "Introducing the Contacts Framework for iOS and OS X", + "platforms": ["iOS", "macOS"], + "keywords": ["addressbook", "address book", "addressbookui", "contactsui", "people picker"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/223rmo6dv9hxh/223/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/223rmo6dv9hxh/223/223_introducing_the_contacts_framework_for_ios_and_os_x.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/223rmo6dv9hxh/223/subtitles/eng/223_sd_introducing_the_contacts_framework_for_ios_and_os_x.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/223rmo6dv9hxh/223/223_hd_introducing_the_contacts_framework_for_ios_and_os_x.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/223rmo6dv9hxh/223/223_sd_introducing_the_contacts_framework_for_ios_and_os_x.mp4", + "duration": 2261 + } + }, { + "id": "wwdc2015-510", + "staticContentId": 641, + "eventContentId": 510, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/510", + "description": "The newly-unified architecture of Core Image gives iOS and OS X apps access to even more image processing power. Learn about new CIFilters and enhancements to the CIKernel language. See how to use Core Image with AV Foundation and Metal to expand the capabilities of your app.", + "title": "What's New in Core Image", + "platforms": ["iOS", "macOS"], + "keywords": ["cikernel", "detector", "detectors", "filter", "filters"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/510jiccqsz/510/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/510jiccqsz/510/510_whats_new_in_core_image.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/510jiccqsz/510/subtitles/eng/510_sd_whats_new_in_core_image.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/510jiccqsz/510/510_hd_whats_new_in_core_image.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/510jiccqsz/510/510_sd_whats_new_in_core_image.mp4", + "duration": 2339 + } + }, { + "id": "wwdc2015-105", + "staticContentId": 626, + "eventContentId": 105, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/105", + "description": "WatchKit for watchOS 2 introduces many new capabilities for creating responsive Watch experiences. Beyond a faster architecture, learn about all new support for the Digital Crown, fluid animations, and media playback and recording. Find out how to make use of accelerometer and heart rate data, as well as providing physical feedback via the Taptic Engine.", + "title": "Introducing WatchKit for watchOS 2", + "platforms": ["watchOS"], + "keywords": ["⌚️", "alert", "audio", "clockkit", "complication", "connectivity", "corelocation", "coremotion", "extension", "foreground", "haptic", "healthkit", "heart rate", "layout", "mapkit", "microphone", "passbook", "passkit", "persistent", "picker", "security", "sensor", "vibration", "video", "wkinterface"], + "trackId": 4, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/105ncyldc6ofunvsgtan/105/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/105ncyldc6ofunvsgtan/105/105_introducing_watchkit_for_watchos_2.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/105ncyldc6ofunvsgtan/105/subtitles/eng/105_sd_introducing_watchkit_for_watchos_2.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/105ncyldc6ofunvsgtan/105/105_hd_introducing_watchkit_for_watchos_2.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/105ncyldc6ofunvsgtan/105/105_sd_introducing_watchkit_for_watchos_2.mp4", + "duration": 1913 + } + }, { + "id": "wwdc2015-407", + "staticContentId": 694, + "eventContentId": 407, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/407", + "description": "Apps that stand out must be attractive, intuitive, and easy to use. Interface Builder experts will give you the skills to turn your idea into a world class app. Learn to use the new stacks feature, create adaptable interfaces, employ asset catalogs, and design custom UI to build an outstanding app for Mac, iPhone, iPad and Apple Watch.", + "title": "Implementing UI Designs in Interface Builder", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["size classes", "storyboard", "xib"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/4072909wwb9o9j3/407/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/4072909wwb9o9j3/407/407_implementing_ui_designs_in_interface_builder.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/4072909wwb9o9j3/407/subtitles/eng/407_sd_implementing_ui_designs_in_interface_builder.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/4072909wwb9o9j3/407/407_hd_implementing_ui_designs_in_interface_builder.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/4072909wwb9o9j3/407/407_sd_implementing_ui_designs_in_interface_builder.mp4", + "duration": 2263 + } + }, { + "id": "wwdc2015-503", + "staticContentId": 702, + "eventContentId": 503, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/503", + "description": "iAd is Apple's advertising platform, designed to enable developers to monetize and promote their apps in over 100 countries. See how iAd technologies built into iOS make it easy to enable advertising to generate revenue, identify user segments for re-engagement and understand the impact of your marketing campaigns. Learn how to promote your app to new users and create targeted campaigns designed to re-engage those you already have.", + "title": "Monetize and Promote Your App with iAd", + "platforms": ["iOS"], + "keywords": ["adbannerview", "ads", "attribution", "banner", "fullscreen", "interstitial", "segmentation", "workbench"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/503oad8l55m/503/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/503oad8l55m/503/503_monetize_and_promote_your_app_with_iad.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/503oad8l55m/503/subtitles/eng/503_sd_monetize_and_promote_your_app_with_iad.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/503oad8l55m/503/503_hd_monetize_and_promote_your_app_with_iad.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/503oad8l55m/503/503_sd_monetize_and_promote_your_app_with_iad.mp4", + "duration": 2005 + } + }, { + "id": "wwdc2015-214", + "staticContentId": 628, + "eventContentId": 214, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/214", + "description": "iOS 9 introduces On Demand Resources, enabling the efficient delivery of rich games and full featured applications using dynamically loaded content. Significantly reduce the time between purchasing and running an app from the App Store, while also decreasing the required storage space by downloading and retaining only content that is necessary. Dive into the latest enhancements in app packaging and learn the APIs to allow your app to acquire only its essential resources.", + "title": "Introducing On Demand Resources", + "platforms": ["iOS", "macOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/214dh5q5d0kswh/214/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/214dh5q5d0kswh/214/214_introducing_on_demand_resources.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/214dh5q5d0kswh/214/subtitles/eng/214_sd_introducing_on_demand_resources.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/214dh5q5d0kswh/214/214_hd_introducing_on_demand_resources.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/214dh5q5d0kswh/214/214_sd_introducing_on_demand_resources.mp4", + "duration": 2650 + } + }, { + "id": "wwdc2015-218", + "staticContentId": 635, + "eventContentId": 218, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/218", + "description": "Auto Layout is a powerful constraint-based layout engine that can drive complex and dynamic interfaces on both iOS and OS X. Learn about the new UIStackView, now your first stop for interfaces built with Auto Layout. See how to build self-sizing views using Auto Layout, and gain critical insights into the inner workings of Auto Layout.", + "title": "Mysteries of Auto Layout, Part 1", + "platforms": ["iOS", "macOS"], + "keywords": ["adaptive", "adaptivity", "autolayout", "cells", "constraint", "estimated height", "guide", "guides", "intrinsiccontentsize", "nssplitview", "nsview", "priorities", "priority", "self-sizing", "sidebar", "size", "storyboard", "uiview", "visual format", "xcode"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2187le7kpyhdff/218/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2187le7kpyhdff/218/218_mysteries_of_auto_layout_part_1.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2187le7kpyhdff/218/subtitles/eng/218_sd_mysteries_of_auto_layout_part_1.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2187le7kpyhdff/218/218_hd_mysteries_of_auto_layout_part_1.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2187le7kpyhdff/218/218_sd_mysteries_of_auto_layout_part_1.mp4", + "duration": 2404 + }, + "related": { + "activities": ["wwdc2016-236"] + } + }, { + "id": "wwdc2015-112", + "staticContentId": 570, + "eventContentId": 112, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/112", + "description": "When Debbie Sterling heard from Steve Jobs at her Stanford graduation that she should \"never settle\" until she found her true passion, she took this to heart. After graduating from Stanford with a degree in Mechanical Engineering and Product Design, she had firsthand knowledge of how significantly men outnumber women in science, technology, engineering and math. Debbie then became obsessed with the notion of \"disrupting the pink aisle\" with a toy that would introduce girls to the joy of engineering at a young age. Industry leaders told her the idea would fail, but less than three years after launching GoldieBlox on Kickstarter, she has made significant strides in her quest to bridge the gender gap in STEM: she has launched massively successful viral videos, a Superbowl ad that brought mainstream awareness to her mission, an award-winning iOS app and GoldieBlox presence in more than 6,000 retail stores worldwide. Debbie has also recently been selected to join the Presidential Ambassadors for Global Entrepreneurship, a select group 'committed to helping develop the next generation of entrepreneurs around the world.' Hear Debbie's story of challenging the status quo, achieving audacious goals, and igniting a national conversation about breaking gender stereotypes.", + "title": "Think Audacious", + "trackId": 4, + "type": "Special Event", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/112lwa56zromr4h6uf0/112/hls_vod_mvp.m3u8", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/112lwa56zromr4h6uf0/112/subtitles/eng/112_sd_think_audacious.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/112lwa56zromr4h6uf0/112/112_hd_think_audacious.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/112lwa56zromr4h6uf0/112/112_sd_think_audacious.mp4", + "duration": 3005 + } + }, { + "id": "wwdc2015-411", + "staticContentId": 697, + "eventContentId": 411, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/411", + "description": "Learn how Swift can help you define away some common pitfalls in app development, allowing your apps to benefit from safer runtime behavior while enjoying strong guarantees provided by Swift at compile-time. Hear about how API availability checking in Swift allows you to easily take advantage of new APIs while guaranteeing safe deployment to earlier OS releases. See how enumerations and protocols can help not only maintain compile-time invariants between your app's code and assets but also reduce boilerplate.", + "title": "Swift in Practice", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["api", "architecture", "availability", "compiler", "compile time", "design patterns", "enum", "invariants", "protocol extension", "protocols", "runtime", "strongly typed", "type safety"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/4119flfsnsgmlfy/411/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/4119flfsnsgmlfy/411/411_swift_in_practice.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/4119flfsnsgmlfy/411/subtitles/eng/411_sd_swift_in_practice.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/4119flfsnsgmlfy/411/411_hd_swift_in_practice.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/4119flfsnsgmlfy/411/411_sd_swift_in_practice.mp4", + "duration": 2297 + } + }, { + "id": "wwdc2015-213", + "staticContentId": 654, + "eventContentId": 213, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/213", + "description": "ResearchKit is an open source framework introduced by Apple that allows researchers and developers to create powerful apps for medical research. Learn how to easily create visual consent flows, real-time dynamic active tasks, and surveys using a variety of customizable modules that you can build upon and share with the community.", + "title": "Building Apps with ResearchKit", + "platforms": ["iOS"], + "keywords": ["💉", "💊", "🔬", "github", "open source", "step", "task"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/213w6grumlfm0q/213/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/213w6grumlfm0q/213/213_building_apps_with_researchkit.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/213w6grumlfm0q/213/subtitles/eng/213_sd_building_apps_with_researchkit.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/213w6grumlfm0q/213/213_hd_building_apps_with_researchkit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/213w6grumlfm0q/213/213_sd_building_apps_with_researchkit.mp4", + "duration": 3499 + } + }, { + "id": "wwdc2015-705", + "staticContentId": 640, + "eventContentId": 705, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/705", + "description": "See what's new in Core Motion. Learn how your application can take advantage of the motion sensors on iOS devices. Walk through new features of the pedometer and learn how to use the altimeter to take your app to the next level. Get personal with motion APIs and sensor data on the Apple Watch. Run through a demo that uses motion-context awareness to make an application feel smarter!", + "title": "What's New in Core Motion", + "platforms": ["iOS", "watchOS"], + "keywords": ["accelerometer", "altimeter", "cmmotion", "coremotion", "cycling", "driving", "fitness", "floors", "gyroscope", "m7", "m8", "motion", "pedometer", "pedometer", "step", "steps", "walking", "watchkit"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/705qrxhfxo0/705/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/705qrxhfxo0/705/705_whats_new_in_core_motion.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/705qrxhfxo0/705/subtitles/eng/705_sd_whats_new_in_core_motion.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/705qrxhfxo0/705/705_hd_whats_new_in_core_motion.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/705qrxhfxo0/705/705_sd_whats_new_in_core_motion.mp4", + "duration": 2388 + } + }, { + "id": "wwdc2015-306", + "staticContentId": 560, + "eventContentId": 306, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/306", + "description": "Automation is the life blood of any organization, providing speed, accuracy, and the ability to efficiently scale in-house processes. See how the automation technologies in OS X can easily and quickly configure shared-use iOS devices, generate, update, and distribute company documents and provide reliable desktop solutions for the back-office. With tools like Automator, AppleScript, and the new JavaScript for Automation (JXA), creating problem-solving solutions has become even easier and even more interesting.", + "title": "Supporting the Enterprise with OS X Automation", + "platforms": ["iOS", "macOS"], + "keywords": ["applescript", "javascript", "javascriptcore", "jxa", "scriptable"], + "trackId": 3, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/306vjwcqnm/306/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/306vjwcqnm/306/306_supporting_the_enterprise_with_os_x_automation.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/306vjwcqnm/306/subtitles/eng/306_sd_supporting_the_enterprise_with_os_x_automation.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/306vjwcqnm/306/306_hd_supporting_the_enterprise_with_os_x_automation.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/306vjwcqnm/306/306_sd_supporting_the_enterprise_with_os_x_automation.mp4", + "duration": 2937 + } + }, { + "id": "wwdc2015-401", + "staticContentId": 701, + "eventContentId": 401, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/401", + "description": "Discover new features that make it easier than ever to craft Objective-C APIs that work beautifully in Swift, as well as new Swift language features that provide even better interoperability. Apple engineers will also discuss enhancements to Apple's SDKs that improve the Swift experience.", + "title": "Swift and Objective-C Interoperability", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["enums", "frameworks", "function pointers", "generics", "kindof", "lightweight generics", "macros", "modernizations", "nullability", "objc", "obj-c", "objective-c", "sdk", "typed collections"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/401gee20yy5v2men/401/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/401gee20yy5v2men/401/401_swift_and_objectivec_interoperability.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/401gee20yy5v2men/401/subtitles/eng/401_sd_swift_and_objectivec_interoperability.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/401gee20yy5v2men/401/401_hd_swift_and_objectivec_interoperability.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/401gee20yy5v2men/401/401_sd_swift_and_objectivec_interoperability.mp4", + "duration": 2140 + } + }, { + "id": "wwdc2015-606", + "staticContentId": 642, + "eventContentId": 606, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/606", + "description": "SceneKit is a high-level graphics framework that helps you create 3D animated scenes and effects in your apps. See how to take advantage of the new capabilities and performance gains enabled by SceneKit's new Metal-based renderer. Check out the innovative Scene Editor, enabling you to build game levels and other scenes directly within Xcode. Learn about new features for realistic shading, enhancements for physics, and dynamic spatial audio.", + "title": "Enhancements to SceneKit", + "platforms": ["iOS", "macOS"], + "keywords": ["3d", "bananas", "collada", "dae", "graph", "graphics", "inverse kinematics", "opengl", "opengl", "opensubdiv", "physics", "rendering", "scene", "scnlayer", "scnnode", "scnview"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/606ui2ppsvalj4nn/606/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/606ui2ppsvalj4nn/606/606_enhancements_to_scenekit.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/606ui2ppsvalj4nn/606/subtitles/eng/606_sd_enhancements_to_scenekit.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/606ui2ppsvalj4nn/606/606_hd_enhancements_to_scenekit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/606ui2ppsvalj4nn/606/606_sd_enhancements_to_scenekit.mp4", + "duration": 2000 + } + }, { + "id": "wwdc2015-706", + "staticContentId": 602, + "eventContentId": 706, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/706", + "description": "Your reputation depends on protecting your users' data. Do this by taking advantage of the Security frameworks built into iOS, OS X and watchOS. Find out about new developments in Security and learn the best practices to develop secure apps and protect your users' data.", + "title": "Security and Your Apps", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["ats", "gatekeeper", "kext", "keychain", "rootless", "sandbox", "security", "signing", "system"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/706nu20qkag/706/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/706nu20qkag/706/706_security_and_your_apps.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/706nu20qkag/706/subtitles/eng/706_sd_security_and_your_apps.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/706nu20qkag/706/706_hd_security_and_your_apps.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/706nu20qkag/706/706_sd_security_and_your_apps.mp4", + "duration": 3082 + } + }, { + "id": "wwdc2015-504", + "staticContentId": 686, + "eventContentId": 504, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/504", + "description": "The new SFSafariViewController class enables you to deliver interactive web content in your app just like Safari, including the key Safari UI elements already familiar to your users. See how to easily bring Safari features like Reader and AutoFill into your app, and provide a great web viewing experience with fewer lines of code.", + "title": "Introducing Safari View Controller", + "platforms": ["iOS", "macOS"], + "keywords": ["autofill", "css", "javascript", "passwords", "reader", "safari", "web"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/5048tyhotl6/504/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/5048tyhotl6/504/504_introducing_safari_view_controller.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/5048tyhotl6/504/subtitles/eng/504_sd_introducing_safari_view_controller.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/5048tyhotl6/504/504_hd_introducing_safari_view_controller.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/5048tyhotl6/504/504_sd_introducing_safari_view_controller.mp4", + "duration": 1884 + }, + "related": { + "activities": ["wwdc2016-420"] + } + }, { + "id": "wwdc2015-404", + "staticContentId": 589, + "eventContentId": 404, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/404", + "description": "The app distribution pipeline is becoming more powerful and flexible. Learn to create full featured apps that are delivered to users devices with new App Thinning features such as slicing and ODR. See how to integrate these new features into your continuous integration and testing processes, and discover workflows for creating on-demand, tailored content.", + "title": "App Thinning in Xcode", + "platforms": ["iOS", "macOS"], + "keywords": ["app store", "distribution", "odr", "on-demand resources", "slicing", "slimming", "xcode", "xcode-build", "xcode server"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/404l17yio30l549x/404/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/404l17yio30l549x/404/404_app_thinning_in_xcode.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/404l17yio30l549x/404/subtitles/eng/404_sd_app_thinning_in_xcode.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/404l17yio30l549x/404/404_hd_app_thinning_in_xcode.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/404l17yio30l549x/404/404_sd_app_thinning_in_xcode.mp4", + "duration": 2427 + } + }, { + "id": "wwdc2015-230", + "staticContentId": 587, + "eventContentId": 230, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/230", + "description": "Great performance is a prerequisite for delivering a compelling and immersive app experience that keeps users engaged. Learn best practices and strategies for characterizing and improving the performance of your code for iPhone, iPad, and Apple Watch.", + "title": "Performance on iOS and watchOS", + "platforms": ["iOS", "watchOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/230wt8hs0wt8/230/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/230wt8hs0wt8/230/230_performance_on_ios_and_watchos.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/230wt8hs0wt8/230/subtitles/eng/230_sd_performance_on_ios_and_watchos.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/230wt8hs0wt8/230/230_hd_performance_on_ios_and_watchos.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/230wt8hs0wt8/230/230_sd_performance_on_ios_and_watchos.mp4", + "duration": 2225 + } + }, { + "id": "wwdc2015-225", + "staticContentId": 599, + "eventContentId": 225, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/225", + "description": "NSCollectionView has been displaying grids of views for many years. OS X 10.11 brings a major update to the capabilities of NSCollectionView. Much of the design of UICollectionView in iOS is now available for OS X apps. Understand the details of the enhancements and how you can harness them in your apps.", + "title": "What's New in NSCollectionView", + "platforms": ["macOS"], + "keywords": ["appkit", "autolayout", "auto layout", "custom control", "dynamic", "layout", "nsview"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/225629tzulwe0/225/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/225629tzulwe0/225/225_whats_new_in_nscollectionview.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/225629tzulwe0/225/subtitles/eng/225_sd_whats_new_in_nscollectionview.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/225629tzulwe0/225/225_hd_whats_new_in_nscollectionview.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/225629tzulwe0/225/225_sd_whats_new_in_nscollectionview.mp4", + "duration": 3589 + }, + "related": { + "activities": ["wwdc2017-218"] + } + }, { + "id": "wwdc2015-209", + "staticContentId": 623, + "eventContentId": 209, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/209", + "description": "Making your app's information available to users on Apple Watch is even easier in watchOS 2. Learn how to create custom complications for Watch faces using the new ClockKit framework and see how to provide data through numerous templates using text and images.", + "title": "Creating Complications with ClockKit", + "platforms": ["watchOS"], + "keywords": ["⌚️", "complication", "connectivity", "digital", "extension", "face", "modular", "utilitarian", "wkinterface"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/209c9277tttlt9/209/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/209c9277tttlt9/209/209_creating_complications_with_clockkit.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/209c9277tttlt9/209/subtitles/eng/209_sd_creating_complications_with_clockkit.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/209c9277tttlt9/209/209_hd_creating_complications_with_clockkit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/209c9277tttlt9/209/209_sd_creating_complications_with_clockkit.mp4", + "duration": 3362 + } + }, { + "id": "wwdc2015-719", + "staticContentId": 600, + "eventContentId": 719, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/719", + "description": "IPv6 is growing exponentially and carriers worldwide are moving to pure IPv6 APNs. Learn about new tools to test your apps for compatibility and get expert advice on making sure your apps work in all network environments. iOS 9 and OS X 10.11 now support the latest TCP standards. Hear from the experts on TCP Fast Open and Explicit Congestion Notification, and find out how it benefits your apps.", + "title": "Your App and Next Generation Networks", + "platforms": ["iOS", "macOS"], + "keywords": ["ipv6", "tcp"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/719ui2k57m/719/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/719ui2k57m/719/719_your_app_and_next_generation_networks.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/719ui2k57m/719/subtitles/eng/719_sd_your_app_and_next_generation_networks.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/719ui2k57m/719/719_hd_your_app_and_next_generation_networks.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/719ui2k57m/719/719_sd_your_app_and_next_generation_networks.mp4", + "duration": 3161 + } + }, { + "id": "wwdc2015-208", + "staticContentId": 624, + "eventContentId": 208, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/208", + "description": "Move beyond architecture changes for Watch apps and explore the different ways you can use the Digital Crown to enhance your apps. Find out how to create persistent app experiences to keep your Watch app at the ready for users and learn how to use the playback and recording APIs to add audio and video to your Watch apps.", + "title": "WatchKit In-Depth, Part 2", + "platforms": ["watchOS"], + "keywords": ["⌚️", "audio", "extension", "foreground", "healthkit", "heart rate", "microphone", "persistent", "picker", "security", "sensor", "video", "wkinterface"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/208wc2mdvock1md/208/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/208wc2mdvock1md/208/208_watchkit_indepth_part_2.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/208wc2mdvock1md/208/subtitles/eng/208_sd_watchkit_indepth_part_2.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/208wc2mdvock1md/208/208_hd_watchkit_indepth_part_2.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/208wc2mdvock1md/208/208_sd_watchkit_indepth_part_2.mp4", + "duration": 2244 + } + }, { + "id": "wwdc2015-205", + "staticContentId": 615, + "eventContentId": 205, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/205", + "description": "iOS 9 on iPad introduces the ability to view and interact with more than one app at a time. Discover how to update your code to take advantage of enhancements to multitasking and how to participate in Slide Over and Split View. Learn specifics about how to architect your app and understand best practices for adapting to a dynamically sized interface.", + "title": "Getting Started with Multitasking on iPad in iOS 9", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2058z3fx76huw93/205/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2058z3fx76huw93/205/205_getting_started_with_multitasking_on_ipad_in_ios_9.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2058z3fx76huw93/205/subtitles/eng/205_sd_getting_started_with_multitasking_on_ipad_in_ios_9.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2058z3fx76huw93/205/205_hd_getting_started_with_multitasking_on_ipad_in_ios_9.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2058z3fx76huw93/205/205_sd_getting_started_with_multitasking_on_ipad_in_ios_9.mp4", + "duration": 3350 + } + }, { + "id": "wwdc2015-211", + "staticContentId": 614, + "eventContentId": 211, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/211", + "description": "iOS 9 on iPad introduces the ability to view and interact with more than one app at a time. Learn advanced techniques for efficiently sharing resources and presenting media while other apps are in the foreground. Tap into the potential of Picture in Picture to allow your video content to play above other apps, and explore multitasking best practices for creating great experiences in this environment.", + "title": "Multitasking Essentials for Media-Based Apps on iPad in iOS 9", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/211dseo3cn0bnw/211/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/211dseo3cn0bnw/211/211_multitasking_essentials_for_mediabased_apps_on_ipad_in_ios_9.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/211dseo3cn0bnw/211/subtitles/eng/211_sd_multitasking_essentials_for_mediabased_apps_on_ipad_in_ios_9.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/211dseo3cn0bnw/211/211_hd_multitasking_essentials_for_mediabased_apps_on_ipad_in_ios_9.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/211dseo3cn0bnw/211/211_sd_multitasking_essentials_for_mediabased_apps_on_ipad_in_ios_9.mp4", + "duration": 2118 + } + }, { + "id": "wwdc2015-207", + "staticContentId": 625, + "eventContentId": 207, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/207", + "description": "watchOS 2 provides a new architecture that runs your WatchKit extension directly on Apple Watch. Take an in-depth look at how this new architecture works. Learn how to migrate existing WatchKit apps to watchOS 2, how to support both versions of watchOS, and hear about updates to Glances and Notifications.", + "title": "WatchKit In-Depth, Part 1", + "platforms": ["watchOS"], + "keywords": ["⌚️", "alert", "extension", "wkinterface"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/207id8oiaxrt6lh/207/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/207id8oiaxrt6lh/207/207_watchkit_indepth_part_1.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/207id8oiaxrt6lh/207/subtitles/eng/207_sd_watchkit_indepth_part_1.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/207id8oiaxrt6lh/207/207_hd_watchkit_indepth_part_1.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/207id8oiaxrt6lh/207/207_sd_watchkit_indepth_part_1.mp4", + "duration": 1821 + } + }, { + "id": "wwdc2015-604", + "staticContentId": 643, + "eventContentId": 604, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/604", + "description": "SpriteKit provides everything you'll need to build 2D games with high-performance graphics and engaging gameplay. Check out new APIs for managing a virtual camera and delivering spatial audio. See the all-new timeline-based Actions editor built right into Xcode, and learn about deep integration with Metal, SceneKit, GameplayKit, and more.", + "title": "What's New in SpriteKit", + "platforms": ["iOS", "macOS"], + "keywords": ["2d", "action", "animation", "audio", "camera", "collision", "collisions", "constraint", "gpu", "graphics", "inverse kinematics", "lighting", "metal", "opengl", "physics", "physics", "platformer", "puzzle", "render", "shaders", "shading", "shading", "skaction", "skaudionode", "skcameranode", "sknode", "skreferencenode", "spatial", "sprite"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/604gq12qghmv39znb/604/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/604gq12qghmv39znb/604/604_whats_new_in_spritekit.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/604gq12qghmv39znb/604/subtitles/eng/604_sd_whats_new_in_spritekit.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/604gq12qghmv39znb/604/604_hd_whats_new_in_spritekit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/604gq12qghmv39znb/604/604_sd_whats_new_in_spritekit.mp4", + "duration": 2506 + } + }, { + "id": "wwdc2015-202", + "staticContentId": 637, + "eventContentId": 202, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/202", + "description": "Cocoa is a powerful set of frameworks on which OS X is built. Gain an overview of the advances in AppKit, Foundation, and related frameworks. Find out what technologies you need to focus on and what techniques you should adopt to develop state of the art apps for OS X. Start here for a high level view of what's changed, and get pointers to relevant sessions for more depth.", + "title": "What's New in Cocoa", + "platforms": ["macOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2023wpov1sxpnf9/202/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2023wpov1sxpnf9/202/202_whats_new_in_cocoa.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2023wpov1sxpnf9/202/subtitles/eng/202_sd_whats_new_in_cocoa.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2023wpov1sxpnf9/202/202_hd_whats_new_in_cocoa.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2023wpov1sxpnf9/202/202_sd_whats_new_in_cocoa.mp4", + "duration": 2381 + } + }, { + "id": "wwdc2015-508", + "staticContentId": 648, + "eventContentId": 508, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/508", + "description": "Learn about using Audio Unit Extensions to provide your App with sophisticated audio manipulation and processing capabilities. Explore the architecture and fundamentals of an App that uses Audio Unit Extensions, and how your app can benefit from their power.", + "title": "Audio Unit Extensions", + "platforms": ["iOS", "macOS"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/508691kyzp/508/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/508691kyzp/508/508_audio_unit_extensions.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/508691kyzp/508/subtitles/eng/508_sd_audio_unit_extensions.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/508691kyzp/508/508_hd_audio_unit_extensions.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/508691kyzp/508/508_sd_audio_unit_extensions.mp4", + "duration": 3530 + }, + "related": { + "activities": ["wwdc2016-507"] + } + }, { + "id": "wwdc2015-203", + "staticContentId": 655, + "eventContentId": 203, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/203", + "description": "HealthKit is Apple's framework to centralize the data storage of personal health information. Hear about the latest enhancements to the framework, supporting new types of data, efficiently deleting objects, and integrating HealthKit into your Apple Watch app.", + "title": "What's New in HealthKit", + "platforms": ["iOS"], + "keywords": ["🎣", "🎾", "🎿", "🏀", "🏂", "🏃", "🏄", "🏆", "🏇", "🏈", "🏉", "🏊", "💃", "🚣", "🚲", "🚴", "🚵", "🚶", "⚽️", "⚾️", "⛳️", "fertility", "fitness", "hkhealthstore", "hkquery", "hksample", "menstruation", "ovulation", "period", "reproductive", "sexual activity", "track", "woman", "womens", "workout"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/203bxvbtrom9t1t/203/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/203bxvbtrom9t1t/203/203_whats_new_in_healthkit.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/203bxvbtrom9t1t/203/subtitles/eng/203_sd_whats_new_in_healthkit.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/203bxvbtrom9t1t/203/203_hd_whats_new_in_healthkit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/203bxvbtrom9t1t/203/203_sd_whats_new_in_healthkit.mp4", + "duration": 2240 + }, + "related": { + "activities": ["wwdc2016-209", "wwdc2016-235"] + } + }, { + "id": "wwdc2015-607", + "staticContentId": 647, + "eventContentId": 607, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/607", + "description": "Your app can be ready to harness the power of Metal starting with just a few lines of code. Get introduced to the new MetalKit framework and learn its simple API for model and texture loading, animation control, and other common tasks. Plug into Metal Performance Shaders and access a powerful library of image-processing operations tuned for Apple hardware.", + "title": "What's New in Metal, Part 2", + "platforms": ["iOS", "macOS"], + "keywords": ["3d", "3d graphics", "accelerate", "capture", "compute", "convolution", "drawable", "encoder", "filter", "frame", "frame debugger", "gpgpu", "gpu", "median", "metl", "morphology", "mtk", "mtkmodel", "mtktextureloader", "mtkview", "mtl", "opengl", "opengl es", "optimize", "render", "renderer", "shader", "simd", "threshold", "xcode"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/607g5z16fpl7pzgi/607/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/607g5z16fpl7pzgi/607/607_whats_new_in_metal_part_2.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/607g5z16fpl7pzgi/607/subtitles/eng/607_sd_whats_new_in_metal_part_2.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/607g5z16fpl7pzgi/607/607_hd_whats_new_in_metal_part_2.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/607g5z16fpl7pzgi/607/607_sd_whats_new_in_metal_part_2.mp4", + "duration": 2639 + } + }, { + "id": "wwdc2015-710", + "staticContentId": 680, + "eventContentId": 710, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/710", + "description": "CloudKit.js is the new library that provides web access to your app data stored in iCloud. Explore the new web service APIs and learn how to extend your iOS or OS X apps to the web using CloudKit.", + "title": "CloudKit JS and Web Services", + "platforms": ["iOS", "macOS"], + "keywords": ["☁︎", "☁️", "ckcontainer", "ckdatabase", "ckquery", "cksubscription", "javascript", "rest"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/710jle9eakx/710/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/710jle9eakx/710/710_cloudkit_js_and_web_services.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/710jle9eakx/710/subtitles/eng/710_sd_cloudkit_js_and_web_services.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/710jle9eakx/710/710_hd_cloudkit_js_and_web_services.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/710jle9eakx/710/710_sd_cloudkit_js_and_web_services.mp4", + "duration": 1941 + } + }, { + "id": "wwdc2015-412", + "staticContentId": 688, + "eventContentId": 412, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/412", + "description": "Learn about time profiling down to the disassembly level to help you investigate the minute details of your application that affect its performance and responsiveness.", + "title": "Profiling in Depth", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["debug", "dtrace", "instruments", "performance", "time profiler"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/412rhea5amj6iaf/412/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/412rhea5amj6iaf/412/412_profiling_in_depth.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/412rhea5amj6iaf/412/subtitles/eng/412_sd_profiling_in_depth.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/412rhea5amj6iaf/412/412_hd_profiling_in_depth.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/412rhea5amj6iaf/412/412_sd_profiling_in_depth.mp4", + "duration": 2370 + } + }, { + "id": "wwdc2015-402", + "staticContentId": 687, + "eventContentId": 402, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/402", + "description": "Enhancements to LLDB simplify life for Swift and Objective-C developers alike. Experienced developers will find new powers within the debugging console, and learn more about the connection between the debugger and Swift REPL. Newcomers will get insight into the range of possibilities hidden behind the LLDB prompt.", + "title": "What's New in LLDB", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["breakpoints", "clang", "debugging", "expressions", "llvm", "runtime", "swift"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/402c0mhxbs8tt52t/402/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/402c0mhxbs8tt52t/402/402_whats_new_in_lldb.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/402c0mhxbs8tt52t/402/subtitles/eng/402_sd_whats_new_in_lldb.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/402c0mhxbs8tt52t/402/402_hd_whats_new_in_lldb.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/402c0mhxbs8tt52t/402/402_sd_whats_new_in_lldb.mp4", + "duration": 2317 + } + }, { + "id": "wwdc2015-102", + "staticContentId": 572, + "eventContentId": 102, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/102", + "description": "WWDC 2015 Platforms State of the Union", + "title": "Platforms State of the Union", + "platforms": ["iOS", "macOS", "watchOS"], + "trackId": 4, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/1026npwuy2crj2xyuq11/102/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/1026npwuy2crj2xyuq11/102/102_platforms_state_of_the_union.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/1026npwuy2crj2xyuq11/102/subtitles/eng/102_sd_platforms_state_of_the_union.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/1026npwuy2crj2xyuq11/102/102_hd_platforms_state_of_the_union.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/1026npwuy2crj2xyuq11/102/102_sd_platforms_state_of_the_union.mp4", + "duration": 6494 + } + }, { + "id": "wwdc2015-101", + "staticContentId": 552, + "eventContentId": 101, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/101", + "description": "WWDC 2015 Keynote", + "title": "Keynote", + "platforms": ["iOS", "macOS", "watchOS"], + "trackId": 4, + "type": "Special Event", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/1014o78qhj07pbfxt9g7/101/hls_vod_mvp.m3u8", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/1014o78qhj07pbfxt9g7/101/subtitles/eng/101_sd_keynote.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/1014o78qhj07pbfxt9g7/101/101_hd_keynote.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/1014o78qhj07pbfxt9g7/101/101_sd_keynote.mp4", + "duration": 8409 + } + }, { + "id": "wwdc2015-304", + "staticContentId": 459, + "eventContentId": 304, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/304", + "description": "Get more acquainted with iTunes Connect, your gateway to the App Store. Dive into unique services like TestFlight for beta testing and Transporter to help automate metadata setup for your apps. Discover the power of adding rich media to your app store page, the benefits of broadening your distribution path globally, and the abundance of help resources.", + "title": "iTunes Connect: Development to Distribution", + "platforms": ["iOS", "macOS", "watchOS"], + "trackId": 3, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/304ywrr62d/304/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/304ywrr62d/304/304_itunes_connect_development_to_distribution.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/304ywrr62d/304/subtitles/eng/304_sd_itunes_connect_development_to_distribution.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/304ywrr62d/304/304_hd_itunes_connect_development_to_distribution.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/304ywrr62d/304/304_sd_itunes_connect_development_to_distribution.mp4", + "duration": 2192 + } + }, { + "id": "wwdc2015-226", + "staticContentId": 594, + "eventContentId": 226, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/226", + "description": "Operations are a flexible way to model your app's business logic, but they can do so much more. See how NSOperation forms the heart of the WWDC app, and how using features like dependencies, readiness, and composition allow you to quickly and easily build dynamic and complex apps.", + "title": "Advanced NSOperations", + "platforms": ["iOS", "macOS"], + "keywords": ["asynchronous", "condition", "gcd", "grand central dispatch", "nsoperationqueue"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2267p2ni281ba/226/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2267p2ni281ba/226/226_advanced_nsoperations.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2267p2ni281ba/226/subtitles/eng/226_sd_advanced_nsoperations.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2267p2ni281ba/226/226_hd_advanced_nsoperations.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/2267p2ni281ba/226/226_sd_advanced_nsoperations.mp4", + "duration": 2655 + }, + "related": { + "activities": ["wwdc2016-227"] + } + }, { + "id": "wwdc2015-108", + "staticContentId": 622, + "eventContentId": 108, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/108", + "description": "Building Watch apps with Xcode 7 is easy and straight-forward. Learn how to build and debug a Watch app for watchOS 2 from the ground up. Walk through adding a Watch app to an existing application, building the user interface, debugging and profiling with Instruments, and discover how to efficiently communicate between iPhone and Apple Watch.", + "title": "Building Watch Apps", + "platforms": ["watchOS"], + "keywords": ["⌚️", "complication", "connectivity", "extension", "ib", "interface builder", "layout", "wkinterface", "xcode"], + "trackId": 4, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/1086gvs7f4vryixs49s6/108/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/1086gvs7f4vryixs49s6/108/108_building_watch_apps.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/1086gvs7f4vryixs49s6/108/subtitles/eng/108_sd_building_watch_apps.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/1086gvs7f4vryixs49s6/108/108_hd_building_watch_apps.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/1086gvs7f4vryixs49s6/108/108_sd_building_watch_apps.mp4", + "duration": 2356 + } + }, { + "id": "wwdc2015-301", + "staticContentId": 582, + "eventContentId": 301, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/301", + "description": "Learn about the latest developments in managing Apple devices in large organizations. Learn the latest techniques to wirelessly configure settings, monitor compliance with policies, install apps and bulk configure devices with ease.", + "title": "What's New in Managing Apple Devices", + "platforms": ["iOS", "macOS"], + "trackId": 3, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/301tcfp66f/301/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/301tcfp66f/301/301_whats_new_in_managing_apple_devices.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/301tcfp66f/301/subtitles/eng/301_sd_whats_new_in_managing_apple_devices.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/301tcfp66f/301/301_hd_whats_new_in_managing_apple_devices.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/301tcfp66f/301/301_sd_whats_new_in_managing_apple_devices.mp4", + "duration": 3143 + } + }, { + "id": "wwdc2015-233", + "staticContentId": 586, + "eventContentId": 233, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/233", + "description": "Learn about the touch input and drawing pipelines. Gain specific insights in how best to design your app to minimize latency in receiving touches and maximizing the performance of drawing content on the screen. Explore new API in UIKit and learn best practices for faster and smoother input.", + "title": "Advanced Touch Input on iOS", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/233l9q8hj9mw/233/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/233l9q8hj9mw/233/233_advanced_touch_input_on_ios.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/233l9q8hj9mw/233/subtitles/eng/233_sd_advanced_touch_input_on_ios.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/233l9q8hj9mw/233/233_hd_advanced_touch_input_on_ios.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/233l9q8hj9mw/233/233_sd_advanced_touch_input_on_ios.mp4", + "duration": 2302 + }, + "related": { + "activities": ["wwdc2016-220"] + } + }, { + "id": "wwdc2015-229", + "staticContentId": 612, + "eventContentId": 229, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/229", + "description": "Dynamic interfaces create fluid and rich interactions. Hear about new dynamic behaviors that have been added in UIKit and how to take advantage of them in your applications. Gain a practical understanding of how to integrate dynamics with AutoLayout. Learn about enhancements to UI Kit Visual Effects.", + "title": "What's New in UIKit Dynamics and Visual Effects", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/229fksrj39nd/229/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/229fksrj39nd/229/229_whats_new_in_uikit_dynamics_and_visual_effects.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/229fksrj39nd/229/subtitles/eng/229_sd_whats_new_in_uikit_dynamics_and_visual_effects.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/229fksrj39nd/229/229_hd_whats_new_in_uikit_dynamics_and_visual_effects.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/229fksrj39nd/229/229_sd_whats_new_in_uikit_dynamics_and_visual_effects.mp4", + "duration": 2231 + }, + "related": { + "activities": ["wwdc2016-216"] + } + }, { + "id": "wwdc2015-703", + "staticContentId": 608, + "eventContentId": 703, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/703", + "description": "Learn about new developments in Privacy in iOS, OS X, and watchOS that impact your apps. Hear about best practices for delivering great features and respecting your customers' privacy.", + "title": "Privacy and Your App", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["consent", "privacy", "security"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/703kp2dwbwkr/703/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/703kp2dwbwkr/703/703_privacy_and_your_app.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/703kp2dwbwkr/703/subtitles/eng/703_sd_privacy_and_your_app.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/703kp2dwbwkr/703/703_hd_privacy_and_your_app.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/703kp2dwbwkr/703/703_sd_privacy_and_your_app.mp4", + "duration": 2480 + } + }, { + "id": "wwdc2015-409", + "staticContentId": 698, + "eventContentId": 409, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/409", + "description": "Hear from the experts about how you can write faster Swift code and use Instruments to identify performance bottlenecks. Dive deep into specific techniques that will help you produce the most efficient code possible.", + "title": "Optimizing Swift Performance", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["accelerate", "arc", "compiler", "final", "generics", "instruments", "optimizer", "private", "profiling", "retain count", "time profiler", "whole module optimization"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/4097c25o0qhs6g5/409/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/4097c25o0qhs6g5/409/409_optimizing_swift_performance.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/4097c25o0qhs6g5/409/subtitles/eng/409_sd_optimizing_swift_performance.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/4097c25o0qhs6g5/409/409_hd_optimizing_swift_performance.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/4097c25o0qhs6g5/409/409_sd_optimizing_swift_performance.mp4", + "duration": 2520 + } + }, { + "id": "wwdc2015-228", + "staticContentId": 618, + "eventContentId": 228, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/228", + "description": "Apple Watch apps should load quickly and be responsive to users. Learn tips and tricks for optimizing your existing apps and gain insights specific to communicating between Apple Watch and iPhone, creating responsive layouts, decreasing loading times, and more.", + "title": "WatchKit Tips and Tricks", + "platforms": ["watchOS"], + "keywords": ["⌚️", "connectivity", "extension", "layout", "wkinterface"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/228eahxjbaops/228/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/228eahxjbaops/228/228_watchkit_tips_and_tricks.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/228eahxjbaops/228/subtitles/eng/228_sd_watchkit_tips_and_tricks.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/228eahxjbaops/228/228_hd_watchkit_tips_and_tricks.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/228eahxjbaops/228/228_sd_watchkit_tips_and_tricks.mp4", + "duration": 2392 + } + }, { + "id": "wwdc2015-410", + "staticContentId": 689, + "eventContentId": 410, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/410", + "description": "Xcode 7 includes new code coverage features to help you design a powerful test harness for your app. Learn all about coverage along with integration and improvements with Xcode Server.", + "title": "Continuous Integration and Code Coverage in Xcode", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["bots", "build", "check out", "ci", "commit", "git", "host", "repository", "scm", "server", "swift", "unit test", "xcode server", "xctest"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/41097fby32x3opk/410/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/41097fby32x3opk/410/410_continuous_integration_and_code_coverage_in_xcode.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/41097fby32x3opk/410/subtitles/eng/410_sd_continuous_integration_and_code_coverage_in_xcode.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/41097fby32x3opk/410/410_hd_continuous_integration_and_code_coverage_in_xcode.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/41097fby32x3opk/410/410_sd_continuous_integration_and_code_coverage_in_xcode.mp4", + "duration": 2425 + } + }, { + "id": "wwdc2015-215", + "staticContentId": 616, + "eventContentId": 215, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/215", + "description": "Storyboards are a great way to build the user interface and flow of your application on iOS and OS X. Gain an understanding of how to effectively organize your storyboards, define segues for your interface, and easily unwind transitions. Dive into a detailed discussion of the new APIs, and hear tips on how to create great user interfaces.", + "title": "What's New in Storyboards", + "platforms": ["iOS", "macOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/215972d0hjjcfx/215/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/215972d0hjjcfx/215/215_whats_new_in_storyboards.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/215972d0hjjcfx/215/subtitles/eng/215_sd_whats_new_in_storyboards.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/215972d0hjjcfx/215/215_hd_whats_new_in_storyboards.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/215972d0hjjcfx/215/215_sd_whats_new_in_storyboards.mp4", + "duration": 2598 + } + }, { + "id": "wwdc2015-405", + "staticContentId": 692, + "eventContentId": 405, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/405", + "description": "Learn about the new features in Xcode playgrounds such as inline results, auxiliary sources and resources, multiple pages, and markup for formatted text. Find out how to explore programming problems in a playground, and create engaging experiences for teaching and learning.", + "title": "Authoring Rich Playgrounds", + "platforms": ["iOS", "macOS"], + "keywords": ["education", "educators", "markdown", "mirrors", "swift", "teacher", "textbooks"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/405t69ymgwkmfzc9/405/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/405t69ymgwkmfzc9/405/405_authoring_rich_playgrounds.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/405t69ymgwkmfzc9/405/subtitles/eng/405_sd_authoring_rich_playgrounds.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/405t69ymgwkmfzc9/405/405_hd_authoring_rich_playgrounds.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/405t69ymgwkmfzc9/405/405_sd_authoring_rich_playgrounds.mp4", + "duration": 2060 + } + }, { + "id": "wwdc2015-224", + "staticContentId": 617, + "eventContentId": 224, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/224", + "description": "App extensions allow powerful ways to expose your application's abilities throughout iOS and other apps. Discover best practices for various extension types and see how to effectively communicate between your extension and its parent application or the network. Learn techniques for using the shared keychain and see how to improve discovery of your share and action extensions.", + "title": "App Extension Best Practices", + "platforms": ["iOS", "watchOS"], + "keywords": ["action", "extension", "networking", "security", "share", "snapshotting", "today", "widget"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/224o6pqmtb4ik/224/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/224o6pqmtb4ik/224/224_app_extension_best_practices.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/224o6pqmtb4ik/224/subtitles/eng/224_sd_app_extension_best_practices.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/224o6pqmtb4ik/224/224_hd_app_extension_best_practices.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/224o6pqmtb4ik/224/224_sd_app_extension_best_practices.mp4", + "duration": 2724 + }, + "related": { + "activities": ["wwdc2016-214", "wwdc2016-225"] + } + }, { + "id": "wwdc2015-506", + "staticContentId": 650, + "eventContentId": 506, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/506", + "description": "Learn how to use the new AVMutableMovie class to modify media files and simplify your editing workflows. See how to support segment-based editing and discover the power of sample reference movies.", + "title": "Editing Movies in AV Foundation", + "platforms": ["macOS"], + "keywords": ["av foundation", "avmovie", "moov", "mov", "quicktime", "video"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/5062qehwhs/506/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/5062qehwhs/506/506_editing_movies_in_av_foundation.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/5062qehwhs/506/subtitles/eng/506_sd_editing_movies_in_av_foundation.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/5062qehwhs/506/506_hd_editing_movies_in_av_foundation.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/5062qehwhs/506/506_sd_editing_movies_in_av_foundation.mp4", + "duration": 2151 + } + }, { + "id": "wwdc2015-217", + "staticContentId": 633, + "eventContentId": 217, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/217", + "description": "The new Force Touch trackpad adds a whole new dimension to user interactions. OS X 10.11 introduces system controls that support pressure behaviors. Understand how to integrate with these behaviors and support them in custom controls. See how to use the Taptic Engine to provide subtle physical feedback based on trackpad input. Hear best practices for adopting new swiping gestures.", + "title": "Adopting New Trackpad Features", + "platforms": ["macOS"], + "keywords": ["appkit", "configuration", "haptic", "pressure"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/217wu453thu1r1/217/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/217wu453thu1r1/217/217_adopting_new_trackpad_features.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/217wu453thu1r1/217/subtitles/eng/217_sd_adopting_new_trackpad_features.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/217wu453thu1r1/217/217_hd_adopting_new_trackpad_features.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/217wu453thu1r1/217/217_sd_adopting_new_trackpad_features.mp4", + "duration": 2555 + } + }, { + "id": "wwdc2015-803", + "staticContentId": 638, + "eventContentId": 803, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/803", + "description": "Animation is a powerful tool for creating a delightful and intuitive app experience. We will show you how to get started with animations, how to make them effective for your user interface, and how to save time coding by building animations into interactive prototypes.", + "title": "Designing with Animation", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["animation", "design", "interaction", "layout", "prototype", "prototyping", "ui", "user interface"], + "trackId": 9, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/803q4kw6eqia7ssp17/803/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/803q4kw6eqia7ssp17/803/803_designing_with_animation.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/803q4kw6eqia7ssp17/803/subtitles/eng/803_sd_designing_with_animation.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/803q4kw6eqia7ssp17/803/803_hd_designing_with_animation.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/803q4kw6eqia7ssp17/803/803_sd_designing_with_animation.mp4", + "duration": 2402 + } + }, { + "id": "wwdc2015-708", + "staticContentId": 603, + "eventContentId": 708, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/708", + "description": "Learn how to debug energy issues in your app. See the energy debugging tools on iOS and walk through debugging common energy issues in a sample app.", + "title": "Debugging Energy Issues", + "platforms": ["iOS", "macOS"], + "keywords": ["battery", "instruments", "performance", "power"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/708xzs0dtwx/708/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/708xzs0dtwx/708/708_debugging_energy_issues.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/708xzs0dtwx/708/subtitles/eng/708_sd_debugging_energy_issues.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/708xzs0dtwx/708/708_hd_debugging_energy_issues.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/708xzs0dtwx/708/708_sd_debugging_energy_issues.mp4", + "duration": 2535 + } + }, { + "id": "wwdc2015-406", + "staticContentId": 690, + "eventContentId": 406, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/406", + "description": "Xcode 7 introduces new UI testing features fully integrated into the IDE. Learn about the new APIs and how UI testing fits in with existing testing features in Xcode. See how to get started by recording your app, and how to efficiently craft and maintain UI tests.", + "title": "UI Testing in Xcode", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["accessibility", "automated testing", "ax", "code coverage", "continuous integration", "long", "test", "ui automation", "xcode server", "xctest"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/406o0doszwo8r15m/406/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/406o0doszwo8r15m/406/406_ui_testing_in_xcode.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/406o0doszwo8r15m/406/subtitles/eng/406_sd_ui_testing_in_xcode.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/406o0doszwo8r15m/406/406_hd_ui_testing_in_xcode.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/406o0doszwo8r15m/406/406_sd_ui_testing_in_xcode.mp4", + "duration": 2966 + }, + "related": { + "activities": ["wwdc2017-414"] + } + }, { + "id": "wwdc2015-509", + "staticContentId": 682, + "eventContentId": 509, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/509", + "description": "Learn how to increase app engagement by using universal links to lead users directly to your App when they tap links to your website. Discover how Smart App Banners and Shared Web Credentials give your users the most integrated mobile experience possible.", + "title": "Seamless Linking to Your App", + "platforms": ["iOS"], + "keywords": ["download", "link", "password", "safari", "scheme"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/5091mxk00t/509/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/5091mxk00t/509/509_seamless_linking_to_your_app.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/5091mxk00t/509/subtitles/eng/509_sd_seamless_linking_to_your_app.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/5091mxk00t/509/509_hd_seamless_linking_to_your_app.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/5091mxk00t/509/509_sd_seamless_linking_to_your_app.mp4", + "duration": 2282 + } + }, { + "id": "wwdc2015-704", + "staticContentId": 681, + "eventContentId": 704, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/704", + "description": "CloudKit is the framework that powers iCloud on iOS, OS X, and now iCloud on the web. Hear how we've been working to make CloudKit more accessible to all your users with the web services API and Javascript library. Learn about reporting available in the updated Dashboard and the new, more flexible public database storage pricing.", + "title": "What's New in CloudKit", + "platforms": ["iOS", "macOS"], + "keywords": ["☁︎", "☁️", "ckcontainer", "ckdatabase", "ckquery", "cksubscription", "javascript", "rest"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/704ci202euy/704/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/704ci202euy/704/704_whats_new_in_cloudkit.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/704ci202euy/704/subtitles/eng/704_sd_whats_new_in_cloudkit.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/704ci202euy/704/704_hd_whats_new_in_cloudkit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/704ci202euy/704/704_sd_whats_new_in_cloudkit.mp4", + "duration": 1571 + } + }, { + "id": "wwdc2015-702", + "staticContentId": 606, + "eventContentId": 702, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/702", + "description": "Apple Pay is the easy, secure, and private way to pay for physical goods and services within apps on iPhone 6, iPad Air 2, and iPad mini 3. Find out how you can increase conversion rates in your checkout experience by integrating with Apple Pay APIs. And learn more about what's new with Apple Pay within apps in iOS 9.", + "title": "Apple Pay Within Apps", + "platforms": ["iOS", "watchOS"], + "keywords": ["apple pay", "design", "passbook"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/702lp563ezbr/702/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/702lp563ezbr/702/702_apple_pay_within_apps.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/702lp563ezbr/702/subtitles/eng/702_sd_apple_pay_within_apps.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/702lp563ezbr/702/702_hd_apple_pay_within_apps.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/702lp563ezbr/702/702_sd_apple_pay_within_apps.mp4", + "duration": 3215 + } + }, { + "id": "wwdc2015-302", + "staticContentId": 705, + "eventContentId": 302, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/302", + "description": "iTunes Connect is the gateway to sharing your creativity on the App Store. Learn about new opportunities to get your products out on Apple Watch. See how the latest improvements to TestFlight as well as other new upcoming features on the iTunes Connect, will help you make the most of Apple's digital storefront.", + "title": "What's New in iTunes Connect", + "platforms": ["iOS", "macOS", "watchOS"], + "trackId": 3, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/302sxabxp0/302/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/302sxabxp0/302/302_whats_new_in_itunes_connect.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/302sxabxp0/302/subtitles/eng/302_sd_whats_new_in_itunes_connect.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/302sxabxp0/302/302_hd_whats_new_in_itunes_connect.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/302sxabxp0/302/302_sd_whats_new_in_itunes_connect.mp4", + "duration": 2190 + } + }, { + "id": "wwdc2015-715", + "staticContentId": 679, + "eventContentId": 715, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/715", + "description": "CloudKit makes it easy to store and retrieve any kind of data from iCloud. Dive into the API with the CloudKit framework team as they explore some of its lesser-known features, explore best practices around subscriptions and queries, and reveal its hidden gems.", + "title": "CloudKit Tips and Tricks", + "platforms": ["iOS", "macOS"], + "keywords": ["☁︎", "☁️", "ckcontainer", "ckdatabase", "ckquery", "cksubscription", "javascript", "rest"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/7153rwmu2r/715/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/7153rwmu2r/715/715_cloudkit_tips_and_tricks.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/7153rwmu2r/715/subtitles/eng/715_sd_cloudkit_tips_and_tricks.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/7153rwmu2r/715/715_hd_cloudkit_tips_and_tricks.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/7153rwmu2r/715/715_sd_cloudkit_tips_and_tricks.mp4", + "duration": 3251 + } + }, { + "id": "wwdc2015-210", + "staticContentId": 653, + "eventContentId": 210, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/210", + "description": "HomeKit is Apple's framework that enables apps to easily and securely interact with HomeKit enabled accessories such as lights, locks, thermostats and more. Learn about the improvements to HomeKit, including support for new accessory types, easy ways to setup and remotely manage accessories.", + "title": "What's New in HomeKit", + "platforms": ["iOS"], + "keywords": ["🏠", "🏡", "bluetooth", "hmaccessory", "hmcharacteristic", "hmhomemanager", "hmroom", "hmservice", "hmtrigger", "hmzone", "mfi", "notification"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/210oyq5peqlavb/210/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/210oyq5peqlavb/210/210_whats_new_in_homekit.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/210oyq5peqlavb/210/subtitles/eng/210_sd_whats_new_in_homekit.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/210oyq5peqlavb/210/210_hd_whats_new_in_homekit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/210oyq5peqlavb/210/210_sd_whats_new_in_homekit.mp4", + "duration": 2482 + } + }, { + "id": "wwdc2015-106", + "staticContentId": 703, + "eventContentId": 106, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/106", + "description": "Swift continues its rapid advancement with version 2. New optimizations make your app run even faster, and new syntax makes your code more expressive. Learn about powerful new features like error handling, testability, and availability checking. This session will help you write even better apps by moving to Swift 2.", + "title": "What's New in Swift", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["availability", "case", "compile time", "diagnostics", "do", "error handling", "guard", "migrator", "nested functions", "option sets", "pattern matching", "performance", "protocol", "protocol extensions", "repeat", "sdk", "standard lib", "std lib", "switch", "testable", "while"], + "trackId": 4, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/106z3yjwpfymnauri96m/106/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/106z3yjwpfymnauri96m/106/106_whats_new_in_swift.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/106z3yjwpfymnauri96m/106/subtitles/eng/106_sd_whats_new_in_swift.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/106z3yjwpfymnauri96m/106/106_hd_whats_new_in_swift.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/106z3yjwpfymnauri96m/106/106_sd_whats_new_in_swift.mp4", + "duration": 3019 + } + }, { + "id": "wwdc2015-709", + "staticContentId": 581, + "eventContentId": 709, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/709", + "description": "Making your app more discoverable leads to more downloads and generates revenue. iOS 9 adds a variety of ways to surface the rich content in your app making search results more relevant. Understand how you can enhance search results with App History and CoreSpotlight. See how small changes on your website can produce better Safari suggestions. Gain insights into how deep app links can bring people directly where they want to go in your app, making your app's content even more discoverable and searchable than content on the traditional web.", + "title": "Introducing Search APIs", + "platforms": ["iOS", "macOS"], + "keywords": ["continuity", "distribution", "handoff", "marketing", "markup", "nsuseractivity", "siri", "spotlight"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/709jcaer6su/709/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/709jcaer6su/709/709_introducing_search_apis.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/709jcaer6su/709/subtitles/eng/709_sd_introducing_search_apis.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/709jcaer6su/709/709_hd_introducing_search_apis.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/709jcaer6su/709/709_sd_introducing_search_apis.mp4", + "duration": 3319 + }, + "related": { + "activities": ["wwdc2016-240"] + } + }, { + "id": "wwdc2015-603", + "staticContentId": 652, + "eventContentId": 603, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/603", + "description": "Metal provides extremely efficient access to the GPU through its streamlined API and high-performance architecture. Check out what's new in Metal and dive into support for Metal on OS X. Understand enhancements to the Metal memory model and learn how to prepare assets for delivery in Metal-based apps and games.", + "title": "What's New in Metal, Part 1", + "platforms": ["iOS", "macOS"], + "keywords": ["3d", "3d graphics", "accelerate", "compute", "discrete", "frame debugger", "gpgpu", "gpu", "metl", "mtl", "opengl", "opengl es", "renderer", "shader", "simd", "thinning", "xcode"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/6037pi9rxl6tfss8w/603/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/6037pi9rxl6tfss8w/603/603_whats_new_in_metal_part_1.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/6037pi9rxl6tfss8w/603/subtitles/eng/603_sd_whats_new_in_metal_part_1.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/6037pi9rxl6tfss8w/603/603_hd_whats_new_in_metal_part_1.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/6037pi9rxl6tfss8w/603/603_sd_whats_new_in_metal_part_1.mp4", + "duration": 2199 + } + }, { + "id": "wwdc2015-403", + "staticContentId": 700, + "eventContentId": 403, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/403", + "description": "See how you can incrementally add Swift into your existing Objective-C codebase and app development workflow. Learn how to leverage Swift's powerful language features to develop robust applications that are faster to write and easier to maintain.", + "title": "Improving Your Existing Apps with Swift", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["bridging header", "extensions", "objc", "obj-c", "objective-c", "playgrounds", "prototyping"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/403l7ohdidhmnkgx/403/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/403l7ohdidhmnkgx/403/403_improving_your_existing_apps_with_swift.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/403l7ohdidhmnkgx/403/subtitles/eng/403_sd_improving_your_existing_apps_with_swift.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/403l7ohdidhmnkgx/403/403_hd_improving_your_existing_apps_with_swift.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/403l7ohdidhmnkgx/403/403_sd_improving_your_existing_apps_with_swift.mp4", + "duration": 2326 + } + }, { + "id": "wwdc2015-303", + "staticContentId": 704, + "eventContentId": 303, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/303", + "description": "App Analytics is the powerful new tool inside iTunes Connect. Get a walk through of the metrics related to user engagement, marketing campaigns, monetization and more. Gain valuable insights from data that only Apple provides, so you can build better iOS apps and a more informed app business.", + "title": "Getting the Most out of App Analytics", + "platforms": ["iOS"], + "trackId": 3, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/303qzm09e7/303/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/303qzm09e7/303/303_getting_the_most_out_of_app_analytics.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/303qzm09e7/303/subtitles/eng/303_sd_getting_the_most_out_of_app_analytics.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/303qzm09e7/303/303_hd_getting_the_most_out_of_app_analytics.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/303qzm09e7/303/303_sd_getting_the_most_out_of_app_analytics.mp4", + "duration": 2131 + } + }, { + "id": "wwdc2015-707", + "staticContentId": 604, + "eventContentId": 707, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/707", + "description": "Learn why efficient software is the key to long battery life for both OS X and iOS devices. We'll explore where the energy in our batteries goes, how Apple hardware and software efficiently manage energy, and how you can make your code most efficient to ensure long battery life.", + "title": "Achieving All-day Battery Life", + "platforms": ["iOS", "macOS"], + "keywords": ["battery", "instruments", "performance", "power"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/707ysegpumy/707/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/707ysegpumy/707/707_achieving_allday_battery_life.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/707ysegpumy/707/subtitles/eng/707_sd_achieving_allday_battery_life.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/707ysegpumy/707/707_hd_achieving_allday_battery_life.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/707ysegpumy/707/707_sd_achieving_allday_battery_life.mp4", + "duration": 2549 + } + }, { + "id": "wwdc2015-505", + "staticContentId": 685, + "eventContentId": 505, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/505", + "description": "Safari has a powerful new interface for designing responsive web experiences. Explore this great new feature and other new capabilities and improvements to the Web Inspector—WebKit's built-in development tool. Discover how you can use Safari and Web Inspector to powerfully and efficiently design, debug, and optimize for the web.", + "title": "Using Safari to Deliver and Debug a Responsive Web Design", + "platforms": ["iOS", "macOS"], + "keywords": ["debugging", "design", "responsive"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/5059xl75l59/505/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/5059xl75l59/505/505_using_safari_to_deliver_and_debug_a_responsive_web_design.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/5059xl75l59/505/subtitles/eng/505_sd_using_safari_to_deliver_and_debug_a_responsive_web_design.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/5059xl75l59/505/505_hd_using_safari_to_deliver_and_debug_a_responsive_web_design.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/5059xl75l59/505/505_sd_using_safari_to_deliver_and_debug_a_responsive_web_design.mp4", + "duration": 2285 + }, + "related": { + "activities": ["wwdc2016-420"] + } + }, { + "id": "wwdc2015-720", + "staticContentId": 607, + "eventContentId": 720, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/720", + "description": "Remote notifications are sent by your server to the Apple Push Notification service, which pushes the notifications to each device. Your app may take different actions, such as displaying a message to the user or downloading new data. Find out about important changes to the provider protocol. Learn about enhancements to the way your app can respond to notifications.", + "title": "What's New in Notifications", + "platforms": ["iOS", "macOS"], + "keywords": ["apns", "local", "notifications", "remote"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/720xwbi9nl/720/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/720xwbi9nl/720/720_whats_new_in_notifications.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/720xwbi9nl/720/subtitles/eng/720_sd_whats_new_in_notifications.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/720xwbi9nl/720/720_hd_whats_new_in_notifications.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/720xwbi9nl/720/720_sd_whats_new_in_notifications.mp4", + "duration": 2084 + } + }, { + "id": "wwdc2015-501", + "staticContentId": 684, + "eventContentId": 501, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/501", + "description": "Learn about exciting new features in WebKit and Safari that will help you make your content feel alive. See compelling new interactions made possible by the Force Touch trackpad and enhanced scrolling support. Expand your design toolkit with high performance filters for stunning image and backdrop effects, and embrace the connected living room with updated AirPlay support.", + "title": "What's New in Web Development in WebKit and Safari", + "platforms": ["iOS", "macOS"], + "keywords": ["css", "javascript", "performance", "safari"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/501g8vwlgg2/501/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/501g8vwlgg2/501/501_whats_new_in_web_development_in_webkit_and_safari.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/501g8vwlgg2/501/subtitles/eng/501_sd_whats_new_in_web_development_in_webkit_and_safari.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/501g8vwlgg2/501/501_hd_whats_new_in_web_development_in_webkit_and_safari.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/501g8vwlgg2/501/501_sd_whats_new_in_web_development_in_webkit_and_safari.mp4", + "duration": 2570 + } + }, { + "id": "wwdc2015-608", + "staticContentId": 645, + "eventContentId": 608, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/608", + "description": "GameplayKit provides a collection of essential tools and techniques used to implement gameplay logic. Get introduced to the GameplayKit framework and see how to put its capabilities to work in your own titles. Learn about managing state machines, controlling game entities, and implementing rule systems. Dive into its built-in tools for randomization, pathfinding, and advanced simulation.", + "title": "Introducing GameplayKit", + "platforms": ["iOS", "macOS"], + "keywords": ["ai", "behavior", "component", "game", "gpagent", "gprandomdistribution", "gpstate", "gpstatemachine", "logic", "path", "random", "rule", "state machine", "strategist", "strategy"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/608rpwq1ltvg5nmk/608/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/608rpwq1ltvg5nmk/608/608_introducing_gameplaykit.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/608rpwq1ltvg5nmk/608/subtitles/eng/608_sd_introducing_gameplaykit.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/608rpwq1ltvg5nmk/608/608_hd_introducing_gameplaykit.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/608rpwq1ltvg5nmk/608/608_sd_introducing_gameplaykit.mp4", + "duration": 3152 + } + }, { + "id": "wwdc2015-227", + "staticContentId": 630, + "eventContentId": 227, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/227", + "description": "With the majority of Apple's market outside of the US, it's critical to learn about the latest advancements in Internationalization support to make your app truly localized. Gain insight into best practices for using formatters to display information correctly, how to easily handle pluralization in any language, how to avoid the most common localization pitfalls, and much more. Whether you are looking to significantly expand your market or want to take advantage of powerful new features for all languages, you don't want to miss this session.", + "title": "What's New in Internationalization", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["dynamic type", "formatter", "nscalendar", "nsdateformatter", "nsformatter", "nsstring", "nstextview", "text system", "uifont", "uilabel", "uitextview"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/227s0ti458qgg/227/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/227s0ti458qgg/227/227_whats_new_in_internationalization.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/227s0ti458qgg/227/subtitles/eng/227_sd_whats_new_in_internationalization.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/227s0ti458qgg/227/227_hd_whats_new_in_internationalization.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/227s0ti458qgg/227/227_sd_whats_new_in_internationalization.mp4", + "duration": 2222 + } + }, { + "id": "wwdc2015-507", + "staticContentId": 649, + "eventContentId": 507, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/507", + "description": "See what's new in Core Audio. Learn about enhancements to AVAudioEngine such as Compressed audio format support, more flexible node connections and new Sequencer functionality. Learn how to take advantage of digital audio between your OS X and iOS devices via Lightning. Learn best practices and what's new in AVAudioSession.", + "title": "What's New in Core Audio", + "platforms": ["iOS", "macOS"], + "keywords": ["avaudioengine", "avfoundation", "av foundation", "coreaudio", "core audio"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/507pq8rldk/507/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/507pq8rldk/507/507_whats_new_in_core_audio.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/507pq8rldk/507/subtitles/eng/507_sd_whats_new_in_core_audio.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/507pq8rldk/507/507_hd_whats_new_in_core_audio.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/507pq8rldk/507/507_sd_whats_new_in_core_audio.mp4", + "duration": 3212 + }, + "related": { + "activities": ["wwdc2016-507"] + } + }, { + "id": "wwdc2015-221", + "staticContentId": 634, + "eventContentId": 221, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/221", + "description": "Full screen windows enable people to focus on the task at hand by removing extra system UI and deferring to more of the content they care about. OS X 10.11 adds new flexibility to how these full screen windows can be configured and controlled. Hear from the experts how to get your Mac app ready to take advantage of this new functionality. Learn key strategies to making your window content be adaptive depending on the space available.", + "title": "Improving the Full Screen Window Experience", + "platforms": ["macOS"], + "keywords": ["adaptive", "adaptivity", "nssplitview", "nswindow", "sidebar", "spaces", "tiling"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/22160ycymy0qg/221/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/22160ycymy0qg/221/221_improving_the_full_screen_window_experience.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/22160ycymy0qg/221/subtitles/eng/221_sd_improving_the_full_screen_window_experience.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/22160ycymy0qg/221/221_hd_improving_the_full_screen_window_experience.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/22160ycymy0qg/221/221_sd_improving_the_full_screen_window_experience.mp4", + "duration": 2193 + } + }, { + "id": "wwdc2015-413", + "staticContentId": 691, + "eventContentId": 413, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/413", + "description": "Discover UI debugging and how to use advanced breakpoint actions to quickly explore and fix your app. Learn how the new Address Sanitizer feature finds buffer overflows, use-after-free errors, and other memory corruption bugs at run time.", + "title": "Advanced Debugging and the Address Sanitizer", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["auto layout", "backtrace", "breakpoint", "constraints", "crash", "debug", "debugger", "exception", "frame", "guard malloc", "hierarchy", "lldb", "queue", "stack", "thread", "view", "view debugger"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/413eflf3lrh1tyo/413/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/413eflf3lrh1tyo/413/413_advanced_debugging_and_the_address_sanitizer.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/413eflf3lrh1tyo/413/subtitles/eng/413_sd_advanced_debugging_and_the_address_sanitizer.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/413eflf3lrh1tyo/413/413_hd_advanced_debugging_and_the_address_sanitizer.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/413eflf3lrh1tyo/413/413_sd_advanced_debugging_and_the_address_sanitizer.mp4", + "duration": 2032 + } + }, { + "id": "wwdc2015-414", + "staticContentId": 696, + "eventContentId": 414, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/414", + "description": "Swift supports rich first-class value types in the form of powerful structs, which provide new ways to architect your apps. Learn about the differences between reference and value types, how value types help you elegantly solve common problems around mutability and thread safety, and discover how Swift's unique capabilities might change the way you think about abstraction.", + "title": "Building Better Apps with Value Types in Swift", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["architecture", "copy on write", "design patterns", "extensions", "foundation", "protocols", "reference types", "uikit", "value semantics", "value types"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/414sklk5h2k3ki3/414/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/414sklk5h2k3ki3/414/414_building_better_apps_with_value_types_in_swift.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/414sklk5h2k3ki3/414/subtitles/eng/414_sd_building_better_apps_with_value_types_in_swift.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/414sklk5h2k3ki3/414/414_hd_building_better_apps_with_value_types_in_swift.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/414sklk5h2k3ki3/414/414_sd_building_better_apps_with_value_types_in_swift.mp4", + "duration": 2383 + }, + "related": { + "activities": ["wwdc2016-419"] + } + }, { + "id": "wwdc2015-718", + "staticContentId": 588, + "eventContentId": 718, + "eventId": "wwdc2015", + "webPermalink": "https://developer.apple.com/wwdc15/718", + "description": "watchOS and iOS Multitasking place increased demands on your application's efficiency and responsiveness. With expert guidance from the GCD team, learn about threads, queues, runloops and best practices for their use in a modern app. Take a deep dive into QoS, its propagation and advanced techniques for debugging your GCD-enabled app.", + "title": "Building Responsive and Efficient Apps with GCD", + "platforms": ["iOS", "macOS", "watchOS"], + "keywords": ["dispatch", "gcd", "qos", "queue", "runloop", "thread"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/718b7aw9tq/718/hls_vod_mvp.m3u8", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/718b7aw9tq/718/718_building_responsive_and_efficient_apps_with_gcd.pdf", + "subtitles": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/718b7aw9tq/718/subtitles/eng/718_sd_building_responsive_and_efficient_apps_with_gcd.vtt", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/718b7aw9tq/718/718_hd_building_responsive_and_efficient_apps_with_gcd.mp4", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2015/718b7aw9tq/718/718_sd_building_responsive_and_efficient_apps_with_gcd.mp4", + "duration": 2640 + } + }, { + "id": "wwdc2014-216", + "staticContentId": 856, + "eventContentId": 216, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/216", + "description": "Building your apps to be flexible enough to be used in different orientations and on different devices is crucial. Learn about the enhancements that have been made to UIKit view controllers to make it even easier for you to adapt your user interface to any size or orientation. See how to effectively use size classes to ensure a great user experience for any context and find out how Xcode can help you create and test your apps for different sized devices.", + "title": "Building Adaptive Apps with UIKit", + "platforms": ["iOS"], + "keywords": ["navigation", "popover", "size classes", "split view", "toolbar", "trait collection", "uikit"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/216xxcnxc6wnkf3/216/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/216xxcnxc6wnkf3/216/216_building_adaptive_apps_with_uikit.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/216xxcnxc6wnkf3/216/216_hd_building_adaptive_apps_with_uikit.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/216xxcnxc6wnkf3/216/216_sd_building_adaptive_apps_with_uikit.mov", + "duration": 3402 + }, + "related": { + "activities": ["wwdc2016-233"] + } + }, { + "id": "wwdc2014-236", + "staticContentId": 816, + "eventContentId": 236, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/236", + "description": "Learn how to fluidly transition interactive UI elements from gesture-driven control to animated transitions. Take advantage of new iOS 8 behavior to smoothly transition between several animations on the same view. Discover architectural approaches to interfaces which remain interactive while they animate.", + "title": "Building Interruptible and Responsive Interactions", + "platforms": ["iOS"], + "keywords": ["core animation", "uikit"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/236xxwk3fv82sx2/236/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/236xxwk3fv82sx2/236/236_building_interruptible_and_responsive_interactions.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/236xxwk3fv82sx2/236/236_hd_building_interruptible_and_responsive_interactions.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/236xxwk3fv82sx2/236/236_sd_building_interruptible_and_responsive_interactions.mov", + "duration": 3178 + }, + "related": { + "activities": ["wwdc2016-216"] + } + }, { + "id": "wwdc2014-509", + "staticContentId": 890, + "eventContentId": 509, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/509", + "description": "WebGL allows you to create amazing content that lifts off the page. Learn how to use WebGL to create immersive online experiences, display three-dimensional models with real-time interactivity and use image processing techniques typically thought of as unavailable on the web.", + "title": "Creating 3D Interactive Content with WebGL", + "platforms": ["iOS", "macOS"], + "keywords": ["3d", "canvas", "css", "html", "javascript"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/509xxwli42i4gs6/509/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/509xxwli42i4gs6/509/509_creating_3d_interactive_content_with_webgl.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/509xxwli42i4gs6/509/509_hd_creating_3d_interactive_content_with_webgl.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/509xxwli42i4gs6/509/509_sd_creating_3d_interactive_content_with_webgl.mov", + "duration": 3290 + } + }, { + "id": "wwdc2014-401", + "staticContentId": 873, + "eventContentId": 401, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/401", + "description": "Xcode is the development environment for creating amazing apps for iOS and OS X. Start the week by watching the Xcode team demonstrate the latest features and workflows in Xcode 6. This session also provides a complete overview of the in-depth developer tools topics covered at WWDC 2014.", + "title": "What's New in Xcode 6", + "platforms": ["iOS", "macOS"], + "keywords": ["auto vectorization", "bridge", "clang", "class", "closure", "cocoa touch", "constant", "debugging", "dtrace", "framework", "ftl", "gcd", "git", "initialization", "instruments", "interface builder", "javascript", "jit", "lldb", "llvm", "localization", "module", "objc", "objective-c", "optional", "pattern", "pgo", "playground", "profile guided optimization", "project", "protocol", "queue", "scheme", "scm", "server", "size classes", "storyboard", "swift", "switch", "target", "template", "thread", "translation", "unit test", "view", "workspace", "xctest", "xib"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/401xxfkzfrjyb93/401/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/401xxfkzfrjyb93/401/401_whats_new_in_xcode_6.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/401xxfkzfrjyb93/401/401_hd_whats_new_in_xcode_6.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/401xxfkzfrjyb93/401/401_sd_whats_new_in_xcode_6.mov", + "duration": 3234 + } + }, { + "id": "wwdc2014-213", + "staticContentId": 948, + "eventContentId": 213, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/213", + "description": "iOS 8 introduces HomeKit, a high-level device connectivity framework enabling apps to interact with physical accessories in the world around us. Learn the objects that define these devices, see how to control them, and discover how to create a full device control experience for the home.", + "title": "Introducing HomeKit", + "platforms": ["iOS"], + "keywords": ["hmaccessory", "hmaction", "hmactionset", "hmcharacteristic", "hmcharacteristicwriteaction", "hmhome", "hmhomemanager", "hmroom", "hmservice", "hmservicegroup", "hmtimertrigger", "hmtrigger", "hmzone"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/213xxbmca4in9u5/213/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/213xxbmca4in9u5/213/213_introducing_homekit.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/213xxbmca4in9u5/213/213_hd_introducing_homekit.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/213xxbmca4in9u5/213/213_sd_introducing_homekit.mov", + "duration": 2600 + } + }, { + "id": "wwdc2014-411", + "staticContentId": 872, + "eventContentId": 411, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/411", + "description": "Interface Builder makes it easy to create world-class interfaces using the design canvas. Learn how to use storyboards to arrange the views of your app, use Auto Layout to adapt to changes, and see how to easily make connections between your UI and your implementation on both iOS and OS X.", + "title": "What's New in Interface Builder", + "platforms": ["iOS", "macOS"], + "keywords": ["size classes", "storyboard", "swift", "xib"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/411xx0xo98zzoor/411/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/411xx0xo98zzoor/411/411_whats_new_in_interface_builder.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/411xx0xo98zzoor/411/411_hd_whats_new_in_interface_builder.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/411xx0xo98zzoor/411/411_sd_whats_new_in_interface_builder.mov", + "duration": 3377 + } + }, { + "id": "wwdc2014-305", + "staticContentId": 924, + "eventContentId": 305, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/305", + "description": "Receipts provide a valuable record of the sale for an app or for any In-App Purchases made from within an app. You can add receipt validation code to your app to prevent unauthorized purchases and protect your content. Learn how to verify exactly what people have paid for and how to validate these transactions.", + "title": "Preventing Unauthorized Purchases with Receipts", + "platforms": ["iOS", "macOS"], + "keywords": ["cracked", "enforcement", "fraud", "iap", "inapppurchases", "openssl", "pirated", "pkcs#7", "receipt refresh", "receipt renewal", "storekit", "transaction", "validation"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/305xxjjl70ix0y1/305/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/305xxjjl70ix0y1/305/305_preventing_unauthorized_purchases_with_receipts.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/305xxjjl70ix0y1/305/305_hd_preventing_unauthorized_purchases_with_receipts.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/305xxjjl70ix0y1/305/305_sd_preventing_unauthorized_purchases_with_receipts.mov", + "duration": 3455 + } + }, { + "id": "wwdc2014-209", + "staticContentId": 858, + "eventContentId": 209, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/209", + "description": "Take a tour of the new appearances and behaviors that Cocoa supports and learn how easy it is to adopt them when you use standard Cocoa classes. Get an overview of the changes to Cocoa and find out how to make your app fit in and feel familiar to people using OS X Yosemite.", + "title": "Adapting Your App to the New UI of OS X Yosemite", + "platforms": ["macOS"], + "keywords": ["appkit", "blur", "translucency", "vibrancy", "visual effect"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/209xxbyg01mfqt8/209/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/209xxbyg01mfqt8/209/209_adapting_your_app_to_the_new_ui_of_os_x_yosemite.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/209xxbyg01mfqt8/209/209_hd_adapting_your_app_to_the_new_ui_of_os_x_yosemite.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/209xxbyg01mfqt8/209/209_sd_adapting_your_app_to_the_new_ui_of_os_x_yosemite.mov", + "duration": 3183 + } + }, { + "id": "wwdc2014-513", + "staticContentId": 933, + "eventContentId": 513, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/513", + "description": "Discover how to use AV Foundation and Video Toolbox to access hardware accelerated encoding and decoding services. Gain best practices for when it is appropriate to use a high-level or low-level API for encoding or decoding. Learn about multi-pass export for improved H.264 encoding and see how to use it in your app.", + "title": "Direct Access to Video Encoding and Decoding", + "platforms": ["iOS", "macOS"], + "keywords": ["core graphics", "core video", "iosurface"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/513xxhfudagscto/513/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/513xxhfudagscto/513/513_direct_access_to_media_encoding_and_decoding.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/513xxhfudagscto/513/513_hd_direct_access_to_media_encoding_and_decoding.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/513xxhfudagscto/513/513_sd_direct_access_to_media_encoding_and_decoding.mov", + "duration": 3163 + } + }, { + "id": "wwdc2014-203", + "staticContentId": 947, + "eventContentId": 203, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/203", + "description": "HealthKit is a brand new framework that centralizes the data storage of personal health information. Learn from the framework authors how to save, query, and interpret health data to make your apps more engaging and personal for your users.", + "title": "Introducing HealthKit", + "platforms": ["iOS"], + "keywords": ["hkcategory", "hkhealthstore", "hkquantity", "hkquantitysample", "hkquery", "hksample", "hkstatistics", "hkstatisticsquery", "hkunit"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/203xxh9oqtm0piw/203/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/203xxh9oqtm0piw/203/203_introducing_healthkit.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/203xxh9oqtm0piw/203/203_hd_introducing_healthkit.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/203xxh9oqtm0piw/203/203_sd_introducing_healthkit.mov", + "duration": 3115 + }, + "related": { + "activities": ["wwdc2016-209", "wwdc2016-235"] + } + }, { + "id": "wwdc2014-502", + "staticContentId": 930, + "eventContentId": 502, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/502", + "description": "Dive deeper into the new Objective-C based audio graph system in AV Foundation. Learn how apps can utilize rich audio services from simple audio playback tasks to complex audio rendering chains, including effects and 3D spatial rendering for games.", + "title": "AVAudioEngine in Practice", + "platforms": ["iOS"], + "keywords": ["3d", "audio units", "avaudioengine", "core audio", "spatial audio"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/502xxvo7vov799k/502/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/502xxvo7vov799k/502/502_avaudioengine_in_practice.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/502xxvo7vov799k/502/502_hd_avaudioengine_in_practice.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/502xxvo7vov799k/502/502_sd_avaudioengine_in_practice.mov", + "duration": 2875 + }, + "related": { + "activities": ["wwdc2016-507"] + } + }, { + "id": "wwdc2014-235", + "staticContentId": 862, + "eventContentId": 235, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/235", + "description": "Scrollviews build on gesture recognizers and underlying multi-touch mechanics to provide a fundamental piece of the iOS user experience. Gain a broader understanding of the iOS touch handling architecture through practical real-world examples. Discover advanced tips and tricks for combining scrolling with other touch handling techniques to create delightful user interfaces.", + "title": "Advanced Scrollviews and Touch Handling Techniques", + "platforms": ["iOS"], + "keywords": ["uikit", "uiscrollview"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/235xxsugqo8pxak/235/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/235xxsugqo8pxak/235/235_advanced_scrollviews_and_touch_handling_techniques.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/235xxsugqo8pxak/235/235_hd_advanced_scrollviews_and_touch_handling_techniques.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/235xxsugqo8pxak/235/235_sd_advanced_scrollviews_and_touch_handling_techniques.mov", + "duration": 3418 + } + }, { + "id": "wwdc2014-224", + "staticContentId": 841, + "eventContentId": 224, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/224", + "description": "Get the most out of iOS's frameworks by understanding their core idioms and expectations. Learn about pervasive design patterns like \"Model, View, Controller\", Target/Action, Delegation and others used throughout Cocoa Touch. Gain practical knowledge of architectural idioms to organize your code for flexibility, clarity and reliability. See how to structure your app to take full advantage of Apple's frameworks.", + "title": "Core iOS Application Architectural Patterns", + "platforms": ["iOS"], + "keywords": ["composite", "composition", "mvc"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/224xxxlsvigdoc0/224/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/224xxxlsvigdoc0/224/224_core_os_ios_application_architectural_patterns.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/224xxxlsvigdoc0/224/224_hd_core_os_ios_application_architectural_patterns.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/224xxxlsvigdoc0/224/224_sd_core_os_ios_application_architectural_patterns.mov", + "duration": 2499 + } + }, { + "id": "wwdc2014-703", + "staticContentId": 900, + "eventContentId": 703, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/703", + "description": "The Accelerate framework has always provided fast, energy efficient signal and image processing and linear algebra libraries. Learn about new interfaces that are easier to adopt and give you the same speed, and about new primitives that make it easier to write your own vector code for iOS and OS X.", + "title": "What's New in the Accelerate Framework", + "platforms": ["iOS", "macOS"], + "keywords": ["algebra", "blas", "dsp", "math", "numerics", "performance", "simd", "veclib", "vector", "vimage"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/703xx9ich9e8mkn/703/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/703xx9ich9e8mkn/703/703_whats_new_in_the_accelerate_framework.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/703xx9ich9e8mkn/703/703_hd_whats_new_in_the_accelerate_framework.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/703xx9ich9e8mkn/703/703_sd_whats_new_in_the_accelerate_framework.mov", + "duration": 3133 + } + }, { + "id": "wwdc2014-506", + "staticContentId": 891, + "eventContentId": 506, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/506", + "description": "While a modern digital presence combines both apps and traditional web sites, people expect a coherent, seamless, and device-optimized experience in each case. Learn techniques and best practices for successfully making transitions between iOS and OS X apps and the web. Gain insights into the appropriate web standards you can use to make your web content look and work optimally in Safari.", + "title": "Your App, Your Website, and Safari", + "platforms": ["iOS", "macOS"], + "keywords": ["autofill", "credentials", "icon", "keychain", "password"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/506xxeo80e5kykp/506/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/506xxeo80e5kykp/506/506_ensuring_continuity_between_your_app_and_web_site.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/506xxeo80e5kykp/506/506_hd_ensuring_continuity_between_your_app_and_web_site.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/506xxeo80e5kykp/506/506_sd_ensuring_continuity_between_your_app_and_web_site.mov", + "duration": 3242 + } + }, { + "id": "wwdc2014-211", + "staticContentId": 908, + "eventContentId": 211, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/211", + "description": "Learn about the key concepts and principles that will enable you to make your app intuitive and approachable. Gain insights into how you can harness UI animations to help people stay oriented, get clear and meaningful feedback, and navigate with ease.", + "title": "Designing Intuitive User Experiences", + "platforms": ["iOS", "macOS"], + "keywords": ["animation", "approachability", "design", "experience", "icons", "interface", "ios", "layout", "mac", "navigation", "ui", "user", "ux"], + "trackId": 9, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/211xxmyz80g30i9/211/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/211xxmyz80g30i9/211/211_designing_intuitive_user_experiences.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/211xxmyz80g30i9/211/211_hd_designing_intuitive_user_experiences.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/211xxmyz80g30i9/211/211_sd_designing_intuitive_user_experiences.mov", + "duration": 3681 + } + }, { + "id": "wwdc2014-222", + "staticContentId": 898, + "eventContentId": 222, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/222", + "description": "iAd technologies built into iOS let you easily include advertising in your app. Discover what's new in the iAd Framework, including multi-view banner strategies, full screen and video interstitials, and best practices to ensure optimal ad performance. You'll also learn how to implement iAd App Attribution to help you accurately measure the lifetime value of newly acquired customers.", + "title": "Optimize Your Earning Power With iAd", + "platforms": ["iOS"], + "keywords": ["advertise", "monetize", "segmentation"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/222xxz9991l36ro/222/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/222xxz9991l36ro/222/222_optimize_your_earning_power_with_iad.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/222xxz9991l36ro/222/222_hd_optimize_your_earning_power_with_iad.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/222xxz9991l36ro/222/222_sd_optimize_your_earning_power_with_iad.mov", + "duration": 3266 + } + }, { + "id": "wwdc2014-718", + "staticContentId": 899, + "eventContentId": 718, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/718", + "description": "AirPrint is widely supported by all the well-known printer companies. Learn how quick and easy it is to support AirPrint in your app. Discover what's new and improved in the iOS printing system.", + "title": "Adopting AirPrint", + "platforms": ["iOS", "macOS"], + "keywords": ["nsprint", "pmprint", "uiprint"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/718xxctf8ley20j/718/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/718xxctf8ley20j/718/718_adopting_airprint.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/718xxctf8ley20j/718/718_hd_adopting_airprint.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/718xxctf8ley20j/718/718_sd_adopting_airprint.mov", + "duration": 2962 + } + }, { + "id": "wwdc2014-218", + "staticContentId": 922, + "eventContentId": 218, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/218", + "description": "Being successful with In-App Purchases requires much more than just having a store within your app. A well-designed experience motivates customers to purchase, offers them the items that they want based on what's happening, communicates item details and pricing clearly, and provides vital feedback about the purchasing process. Learn key design techniques, how best to communicate when new content and subscriptions become available, how to handle large sets of In-App content, and important StoreKit tips.", + "title": "Designing a Great In-App Purchase Experience", + "platforms": ["iOS", "macOS"], + "keywords": ["iap", "inapp purchase", "storekit", "transaction"], + "trackId": 9, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/218xx267rleu4n8/218/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/218xx267rleu4n8/218/218_designing_a_great_in-app_purchase_experience.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/218xx267rleu4n8/218/218_hd_designing_a_great_in-app_purchase_experience.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/218xx267rleu4n8/218/218_sd_designing_a_great_in-app_purchase_experience.mov", + "duration": 3050 + } + }, { + "id": "wwdc2014-229", + "staticContentId": 912, + "eventContentId": 229, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/229", + "description": "Explore a selection of high-level software engineering techniques presented in the context of Cocoa Touch. Learn how to manage complexity in large codebases by clearly defining where truth resides, by controlling state with Swift's powerful value types and immutability, and by thinking in terms of composition.", + "title": "Advanced iOS Application Architecture and Patterns", + "platforms": ["iOS", "macOS"], + "keywords": ["design patterns"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/229xx77tq0pmkwo/229/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/229xx77tq0pmkwo/229/229_advanced_ios_architecture_and_patterns.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/229xx77tq0pmkwo/229/229_hd_advanced_ios_architecture_and_patterns.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/229xx77tq0pmkwo/229/229_sd_advanced_ios_architecture_and_patterns.mov", + "duration": 2880 + } + }, { + "id": "wwdc2014-602", + "staticContentId": 936, + "eventContentId": 602, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/602", + "description": "Kick off the game development sessions of WWDC 2014 by gaining insight into the key ingredients needed to create a great game for iOS. Understand the importance of harnessing the full capabilities of the platform to create a richer gameplay experience. Get practical guidance about game production and distribution, and learn the design and platform conventions that will make your game even more engaging.", + "title": "Ingredients of Great Games", + "platforms": ["iOS"], + "keywords": ["2d", "3d", "engagement", "friction", "game", "graphics", "metal", "nsurlsession", "opengl", "scenekit", "spritekit"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/602xx0qpmdkc2ki/602/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/602xx0qpmdkc2ki/602/602_ingredients_of_great_games.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/602xx0qpmdkc2ki/602/602_hd_ingredients_of_great_games.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/602xx0qpmdkc2ki/602/602_sd_ingredients_of_great_games.mov", + "duration": 3393 + } + }, { + "id": "wwdc2014-306", + "staticContentId": 817, + "eventContentId": 306, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/306", + "description": "Automation in OS X has always been about power and choice. Scriptable applications, including Pages, Keynote, Numbers, and the Finder, can already be automated using a variety of languages, including AppleScript, Objective-C, Perl, Python, and Ruby. With OS X Yosemite, application scripting support has been added to another popular language, JavaScript. JavaScript for Automation (JXA) extends the standard JavaScript environment provided by the JavaScriptCore framework with support for querying and controlling all of the scriptable applications running in OS X. JXA scripts are supported at all layers of the system and can be invoked from the command-line, from the system-wide Script Menu, and can even be distributed as code-signed applications.", + "title": "JavaScript for Automation", + "platforms": ["macOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/306xxjtg7uz13v0/306/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/306xxjtg7uz13v0/306/306_javascript_for_automation.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/306xxjtg7uz13v0/306/306_hd_javascript_for_automation.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/306xxjtg7uz13v0/306/306_sd_javascript_for_automation.mov", + "duration": 3153 + } + }, { + "id": "wwdc2014-706", + "staticContentId": 907, + "eventContentId": 706, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/706", + "description": "Find out how your app can use new functionality in Core Location to do automatic check-in or journal the user's location. Learn how location authorization is changing to give the user more precise control of what location services an App is authorized is use, and what this means for developers and users.", + "title": "What's New in Core Location", + "platforms": ["iOS"], + "keywords": ["approval", "authorization", "beacon", "clvisit", "corelocation", "core location", "fence", "fencing", "geo-fence", "geo-fencing", "gps", "heading. journal", "ibeacon", "ibeacons", "journaling", "location", "navigation", "position", "proximity", "ranging", "region", "region monitoring", "regions", "significant location change", "slc", "visit", "visit api", "visit monitor", "visit monitoring", "wheninuse", "whileinuse"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/706xxjytntg51wd/706/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/706xxjytntg51wd/706/706_whats_new_in_core_location.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/706xxjytntg51wd/706/706_hd_whats_new_in_core_location.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/706xxjytntg51wd/706/706_sd_whats_new_in_core_location.mov", + "duration": 2826 + } + }, { + "id": "wwdc2014-717", + "staticContentId": 843, + "eventContentId": 717, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/717", + "description": "With Student Accounts and Family Sharing, kids under age 13 can now have fully-featured accounts for buying apps and In-App Purchases. However, regulations in the US and other countries limit what information you can collect from kids without parental permission. Learn about the new account programs, whether and how to check the age of your app's user, what you can and can't do without parental permission, and how to request parental consent if you need to.", + "title": "Kids and Apps", + "platforms": ["iOS", "macOS"], + "keywords": ["consent", "coppa", "family", "iap", "parent", "privacy", "school", "student", "tracking"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/717xxux5eg6f9v4/717/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/717xxux5eg6f9v4/717/717_kids_and_apps.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/717xxux5eg6f9v4/717/717_hd_kids_and_apps.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/717xxux5eg6f9v4/717/717_sd_kids_and_apps.mov", + "duration": 2094 + } + }, { + "id": "wwdc2014-601", + "staticContentId": 938, + "eventContentId": 601, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/601", + "description": "The new Mac Pro enables you to unleash the power of dual workstation-class GPUs and multiple CPU cores in ways that just weren't possible until now. Gain a deeper understanding of the integration between OpenCL and OpenGL and see how to tap into the parallel compute and rendering power of the Mac.", + "title": "Harnessing the Power of the Mac Pro with OpenGL and OpenCL", + "platforms": ["macOS"], + "keywords": ["compute", "gpgpu", "gpu", "iosurface", "nsopengl"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/601xxu3eg5ttkcj/601/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/601xxu3eg5ttkcj/601/601_harnessing_the_power_of_the_mac_pro_with_opengl_and_opencl.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/601xxu3eg5ttkcj/601/601_hd_harnessing_the_power_of_the_mac_pro_with_opengl_and_opencl.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/601xxu3eg5ttkcj/601/601_sd_harnessing_the_power_of_the_mac_pro_with_opengl_and_opencl.mov", + "duration": 3330 + } + }, { + "id": "wwdc2014-510", + "staticContentId": 897, + "eventContentId": 510, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/510", + "description": "iAd Workbench makes it simple to create and manage mobile ad campaigns that reach the right audience for your apps, products or brands. Discover how features such as new creative executions, enhanced targeting and pricing capabilities and access via API's make iAd Workbench more effective and easy to work with. Learn how app download attribution and custom audience segments can provide insights into your audience, deliver customized messages and realize long term value.", + "title": "What's New in iAd Workbench", + "platforms": ["iOS", "macOS"], + "keywords": ["advertise", "api", "banner", "monetize", "segmentation"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/510xx6yeo9go0lo/510/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/510xx6yeo9go0lo/510/510_whats_new_in_iad_workbench.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/510xx6yeo9go0lo/510/510_hd_whats_new_in_iad_workbench.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/510xx6yeo9go0lo/510/510_sd_whats_new_in_iad_workbench.mov", + "duration": 3051 + } + }, { + "id": "wwdc2014-402", + "staticContentId": 883, + "eventContentId": 402, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/402", + "description": "Swift is Apple's brand-new programming language for writing great iOS and OS X apps. Learn the basics of the language. See how to declare variables, use the fundamental data types, declare functions, and implement classes. Explore some of the great features that make Swift a safe, modern, and extremely powerful language.", + "title": "Introduction to Swift", + "platforms": ["iOS", "macOS"], + "keywords": ["array", "character", "closure", "constant", "initialization", "string", "switch", "unicode"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/402xxgg8o88ulsr/402/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/402xxgg8o88ulsr/402/402_introduction_to_swift.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/402xxgg8o88ulsr/402/402_hd_introduction_to_swift.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/402xxgg8o88ulsr/402/402_sd_introduction_to_swift.mov", + "duration": 3133 + } + }, { + "id": "wwdc2014-714", + "staticContentId": 901, + "eventContentId": 714, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/714", + "description": "Finding and diagnosing application bugs can be very difficult. Activity Tracing is a new technology that can dramatically improve your speed and efficiency finding bugs in your code. Log trace messages to an auto-generated ring buffer while associating them with the originating user action. Reduce the time sifting through unrelated log messages trying to understand what was going on when the failure happened.", + "title": "Fix Bugs Faster using Activity Tracing", + "platforms": ["iOS", "macOS"], + "keywords": ["breadcrumb", "crash", "debug", "diagnostic", "gcd", "nslog", "nsoperation", "syslog", "trace", "xpc"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/714xx1h4szxdnyz/714/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/714xx1h4szxdnyz/714/714_fix_bugs_faster_using_activity_tracing.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/714xx1h4szxdnyz/714/714_hd_fix_bugs_faster_using_activity_tracing.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/714xx1h4szxdnyz/714/714_sd_fix_bugs_faster_using_activity_tracing.mov", + "duration": 2291 + }, + "related": { + "activities": ["wwdc2016-721"] + } + }, { + "id": "wwdc2014-217", + "staticContentId": 916, + "eventContentId": 217, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/217", + "description": "Take the plunge into advanced extension concepts such as creating custom action extensions. Dive deep into extension architecture to learn how to provide a consistent experience between extensions and your app. See how to utilize extensions with Safari to bridge the gap between your websites and native apps, and discover how to make great extensions that users will love.", + "title": "Creating Extensions for iOS and OS X, Part 2", + "platforms": ["iOS", "macOS"], + "keywords": ["appkit", "javascript", "notification center", "today", "uikit", "widget"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/217xxsvxdga3rh5/217/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/217xxsvxdga3rh5/217/217_creating_extensions_for_ios_and_os_x_part_2.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/217xxsvxdga3rh5/217/217_hd_creating_extensions_for_ios_and_os_x_part_2.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/217xxsvxdga3rh5/217/217_sd_creating_extensions_for_ios_and_os_x_part_2.mov", + "duration": 2965 + }, + "related": { + "activities": ["wwdc2016-214"] + } + }, { + "id": "wwdc2014-517", + "staticContentId": 893, + "eventContentId": 517, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/517", + "description": "As your user base grows, so will the variety of devices you'll need to support. People expect modern web sites to be fast, visually appealing, and rich functionally, regardless of a device's performance characteristics, resolution or size. Learn how to use the latest web technologies in WebKit and Safari to create engaging, attractive, and adaptive layouts across all devices.", + "title": "Designing Responsive Web Experiences", + "platforms": ["iOS", "macOS"], + "keywords": ["css", "html", "javascript", "table"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/517xxlpmjgeqazd/517/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/517xxlpmjgeqazd/517/517_designing_responsive_web_experiences.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/517xxlpmjgeqazd/517/517_hd_designing_responsive_web_experiences.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/517xxlpmjgeqazd/517/517_sd_designing_responsive_web_experiences.mov", + "duration": 2589 + } + }, { + "id": "wwdc2014-220", + "staticContentId": 859, + "eventContentId": 220, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/220", + "description": "OS X Yosemite introduces a refined new look, and Cocoa provides you with a rich set of APIs and facilities to embrace this new look in your application. Discover how to properly use these APIs to bring the refinement, translucency, and vibrancy of OS X Yosemite to your apps. Dive deep into a number of case studies demonstrating applications with different designs and needs.", + "title": "Adopting Advanced Features of the New UI of OS X Yosemite", + "platforms": ["macOS"], + "keywords": ["appkit", "blur", "visual effect"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/220xx01yweszmjv/220/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/220xx01yweszmjv/220/220_adopting_advanced_features_of_the_new_ui_of_os_x_yosemite.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/220xx01yweszmjv/220/220_hd_adopting_advanced_features_of_the_new_ui_of_os_x_yosemite.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/220xx01yweszmjv/220/220_sd_adopting_advanced_features_of_the_new_ui_of_os_x_yosemite.mov", + "duration": 3072 + } + }, { + "id": "wwdc2014-504", + "staticContentId": 895, + "eventContentId": 504, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/504", + "description": "With the increasing popularity of media on the web, content providers find themselves confronted by an over-abundance of formats, codecs and technologies competing for their attention. See how to use the latest HTML5 technologies in WebKit and Safari to make it easier to deliver media to your users and explore the performance and user experience tradeoffs you'll need to keep in mind when deciding between building for simplicity and fine-grained control.", + "title": "Advanced Media for the Web", + "platforms": ["iOS", "macOS"], + "keywords": ["hls", "mse", "video"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/504xx5n1n7eie65/504/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/504xx5n1n7eie65/504/504_advanced_media_for_the_web.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/504xx5n1n7eie65/504/504_hd_advanced_media_for_the_web.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/504xx5n1n7eie65/504/504_sd_advanced_media_for_the_web.mov", + "duration": 3010 + } + }, { + "id": "wwdc2014-204", + "staticContentId": 861, + "eventContentId": 204, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/204", + "description": "OS X Yosemite brings a clean new look, view controller enhancements, Mac storyboards, app extensions, Continuity, and many additional features you can leverage through the Cocoa frameworks. This is your first stop to discover great Cocoa sessions throughout the week.", + "title": "What's New in Cocoa", + "platforms": ["macOS"], + "keywords": ["appkit"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/204xxhe1lli87dm/204/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/204xxhe1lli87dm/204/204_whats_new_in_cocoa.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/204xxhe1lli87dm/204/204_hd_whats_new_in_cocoa.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/204xxhe1lli87dm/204/204_sd_whats_new_in_cocoa.mov", + "duration": 3304 + } + }, { + "id": "wwdc2014-101", + "staticContentId": 812, + "eventContentId": 101, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/101", + "description": "WWDC 2014 Keynote", + "title": "Keynote", + "platforms": ["iOS", "macOS"], + "trackId": 4, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/101xx36lr6smzjo/101/ref.mov", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/101xx36lr6smzjo/101/101_hd.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/101xx36lr6smzjo/101/101_sd.mov", + "duration": 7078 + } + }, { + "id": "wwdc2014-408", + "staticContentId": 851, + "eventContentId": 408, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/408", + "description": "Playgrounds are a new and innovative way to explore the Swift programming language. Explore how Playgrounds provide new workflows, enable rapid development, help you conveniently step through your code to diagnose bugs, and make it easier than ever to learn new concepts.", + "title": "Swift Playgrounds", + "platforms": ["iOS", "macOS"], + "keywords": ["graph", "history", "value", "view", "xcode"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/408xxcm26svis12/408/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/408xxcm26svis12/408/408_swift_playgrounds.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/408xxcm26svis12/408/408_hd_swift_playgrounds.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/408xxcm26svis12/408/408_sd_swift_playgrounds.mov", + "duration": 3340 + } + }, { + "id": "wwdc2014-705", + "staticContentId": 848, + "eventContentId": 705, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/705", + "description": "Learn how to provision and deploy apps across your enterprise. Leverage key Apple programs such as the Volume Purchase Program and the iOS Developer Enterprise Program to get the right apps in the hands of your employees, contractors, and partners. Learn how to manage certificates and provisioning profiles to deploy your apps, and take advantage of mobile device management (MDM) tools to provide a seamless experience for your users. Gain insight into the complete app management lifecycle; from signing your in-house apps in Xcode, to distributing, managing, and revoking apps across your workforce.", + "title": "Distributing Enterprise Apps", + "platforms": ["iOS", "macOS"], + "keywords": ["business", "dep", "management", "mdm", "school", "sso", "supervise", "vpn", "vpp"], + "trackId": 3, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/705xx0r0x0fsaf5/705/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/705xx0r0x0fsaf5/705/705_distributing_enterprise_apps.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/705xx0r0x0fsaf5/705/705_hd_distributing_enterprise_apps.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/705xx0r0x0fsaf5/705/705_sd_distributing_enterprise_apps.mov", + "duration": 2201 + } + }, { + "id": "wwdc2014-704", + "staticContentId": 849, + "eventContentId": 704, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/704", + "description": "Learn about data security, enterprise authentication, integration with back-end systems, app configuration methods, and the latest technologies for interacting with documents, accessories, and more. Get helpful tips for constructing your apps to meet the needs of schools and educators, as well as key requirement from IT. Perfect for everyone looking to get their apps in the hands of business professionals, educators, and students worldwide.", + "title": "Building Apps for Enterprise and Education", + "platforms": ["iOS"], + "keywords": ["business", "certificate", "configure", "ibeacon", "management", "mdm", "reachability", "school", "sso", "supervise", "vpn"], + "trackId": 3, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/704xx7dmqd5m9l4/704/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/704xx7dmqd5m9l4/704/704_building_apps_for_enterprise_and_education.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/704xx7dmqd5m9l4/704/704_hd_building_apps_for_enterprise_and_education.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/704xx7dmqd5m9l4/704/704_sd_building_apps_for_enterprise_and_education.mov", + "duration": 3297 + } + }, { + "id": "wwdc2014-228", + "staticContentId": 865, + "eventContentId": 228, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/228", + "description": "iOS 8 brings you powerful new means of presenting content within your apps. Hear how presentation controllers were leveraged by UIKit to give you fine grain control using new alert and searching APIs. Dive deep into how presentation controllers work and how you can use them to present content within your app in exciting new ways.", + "title": "A Look Inside Presentation Controllers", + "platforms": ["iOS"], + "keywords": ["popover", "search display", "uikit", "view controller"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/228xxnfgueiskhi/228/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/228xxnfgueiskhi/228/228_a_look_inside_presentation_controllers.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/228xxnfgueiskhi/228/228_hd_a_look_inside_presentation_controllers.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/228xxnfgueiskhi/228/228_sd_a_look_inside_presentation_controllers.mov", + "duration": 2752 + } + }, { + "id": "wwdc2014-214", + "staticContentId": 863, + "eventContentId": 214, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/214", + "description": "View controllers are fundamental to creating apps on iOS. Learn about the enhancements made to view controllers in iOS 8 to improve the user experience in your apps. Dive into using and creating transition coordinators and find out about all-new additions to split view controllers and navigation controllers.", + "title": "View Controller Advancements in iOS 8", + "platforms": ["iOS"], + "keywords": ["popover", "size classes", "split view", "toolbar", "trait collection", "uikit"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/214xxq2mdbtmp23/214/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/214xxq2mdbtmp23/214/214_view_controller_advancements_in_ios_8.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/214xxq2mdbtmp23/214/214_hd_view_controller_advancements_in_ios_8.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/214xxq2mdbtmp23/214/214_sd_view_controller_advancements_in_ios_8.mov", + "duration": 3341 + } + }, { + "id": "wwdc2014-416", + "staticContentId": 867, + "eventContentId": 416, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/416", + "description": "Frameworks are a great way to share code between your apps and their extensions. Learn how you can convert your static libraries into frameworks. Go in-depth on how to best organize and share your code between your projects so you can increase code reuse.", + "title": "Building Modern Frameworks", + "platforms": ["iOS", "macOS"], + "keywords": ["swift", "target"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/416xxuit620s53g/416/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/416xxuit620s53g/416/416_building_modern_frameworks.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/416xxuit620s53g/416/416_hd_building_modern_frameworks.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/416xxuit620s53g/416/416_sd_building_modern_frameworks.mov", + "duration": 2755 + } + }, { + "id": "wwdc2014-212", + "staticContentId": 860, + "eventContentId": 212, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/212", + "description": "Learn how to build your OS X application using storyboards, view controllers, and gesture recognizers. See how these OS X enhancements can simplify complex user interaction controller code. Gain a practical understanding with a high level introduction to Xcode's Interface Builder integration and dive deep into a detailed discussion of the new APIs with tips to create great apps for OS X.", + "title": "Storyboards and Controllers on OS X", + "platforms": ["macOS"], + "keywords": ["appkit", "ib"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/212xxi1kzzkdr54/212/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/212xxi1kzzkdr54/212/212_storyboards_and_controllers_on_os_x.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/212xxi1kzzkdr54/212/212_hd_storyboards_and_controllers_on_os_x.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/212xxi1kzzkdr54/212/212_sd_storyboards_and_controllers_on_os_x.mov", + "duration": 3273 + } + }, { + "id": "wwdc2014-413", + "staticContentId": 870, + "eventContentId": 413, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/413", + "description": "Xcode provides a powerful debugging user interface backed by the new state-of-the-art LLDB debugger. Discover how you can more easily explore and fix your user interfaces, add custom Quick Look support for your own classes and get deeper insight into how and from where your app is enqueuing work.", + "title": "Debugging in Xcode 6", + "platforms": ["iOS", "macOS"], + "keywords": ["backtrace", "debugquicklookobject", "frame", "gcd", "hierarchy", "queue", "stack", "thread", "view", "xctest"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/413xxr7gdc60u2p/413/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/413xxr7gdc60u2p/413/413_debugging_in_xcode_6.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/413xxr7gdc60u2p/413/413_hd_debugging_in_xcode_6.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/413xxr7gdc60u2p/413/413_sd_debugging_in_xcode_6.mov", + "duration": 2227 + } + }, { + "id": "wwdc2014-225", + "staticContentId": 886, + "eventContentId": 225, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/225", + "description": "Learn about the latest enhancements to the Core Data framework. Hear how to efficiently update your objects, execute simultaneous operations, and extend the framework to support your custom requirements.", + "title": "What's New in Core Data", + "platforms": ["iOS", "macOS"], + "keywords": ["asynchronous", "batch", "concurrency", "database", "future", "operation", "optimization", "performance", "sqlite", "swift"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/225xxgzhqylosff/225/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/225xxgzhqylosff/225/225_whats_new_in_core_data.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/225xxgzhqylosff/225/225_hd_whats_new_in_core_data.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/225xxgzhqylosff/225/225_sd_whats_new_in_core_data.mov", + "duration": 2648 + } + }, { + "id": "wwdc2014-233", + "staticContentId": 889, + "eventContentId": 233, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/233", + "description": "Learn what the iWork engineers did to ship iWork for iOS and Mac from a single codebase. Explore the patterns for sharing code between desktop and mobile, and see how you can optimize your code and write great apps.", + "title": "Sharing code between iOS and OS X", + "platforms": ["iOS", "macOS"], + "keywords": ["calayer", "controller", "core animation", "core graphics", "framework", "ipad", "iphone", "keynote", "model", "mvc", "numbers", "pages", "view", "workspace", "wrapper"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/233xxwktnowwj0u/233/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/233xxwktnowwj0u/233/233_sharing_code_between_ios_and_os_x.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/233xxwktnowwj0u/233/233_hd_sharing_code_between_ios_and_os_x.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/233xxwktnowwj0u/233/233_sd_sharing_code_between_ios_and_os_x.mov", + "duration": 2699 + } + }, { + "id": "wwdc2014-406", + "staticContentId": 882, + "eventContentId": 406, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/406", + "description": "Swift makes it faster, easier, and more fun than ever to write Cocoa apps. See how you can integrate Swift alongside your existing Objective-C code. Learn how design patterns translate between languages and how you can start integrating Swift into your apps today.", + "title": "Integrating Swift with Objective-C", + "platforms": ["iOS", "macOS"], + "keywords": ["bridge", "class", "closure", "cocoa touch", "nsarray", "nsdictionary", "nsstring", "property", "protocol"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/406xxssvkspk997/406/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/406xxssvkspk997/406/406_integrating_swift_with_objective_c.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/406xxssvkspk997/406/406_hd_integrating_swift_with_objective_c.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/406xxssvkspk997/406/406_sd_integrating_swift_with_objective_c.mov", + "duration": 3472 + } + }, { + "id": "wwdc2014-409", + "staticContentId": 884, + "eventContentId": 409, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/409", + "description": "Learn how to use LLDB, Apple's state-of-the-art debugger. Learn how to analyze stack traces and diagnose bugs. See how you can test your hypotheses and explore your app's state with the Swift REPL.", + "title": "Introduction to LLDB and the Swift REPL", + "platforms": ["iOS", "macOS"], + "keywords": ["expression"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/409xxfw34pado34/409/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/409xxfw34pado34/409/409_introduction_to_lldb_and_the_swift_repl.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/409xxfw34pado34/409/409_hd_introduction_to_lldb_and_the_swift_repl.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/409xxfw34pado34/409/409_sd_introduction_to_lldb_and_the_swift_repl.mov", + "duration": 2926 + } + }, { + "id": "wwdc2014-512", + "staticContentId": 892, + "eventContentId": 512, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/512", + "description": "Web Inspector, the powerful debugging tool in WebKit, is now available to JavaScriptCore-based apps. Find out how to leverage Web Inspector in your WebKit- and JavaScriptCore-based apps on iOS and OS X. Gain an overview of what's new in the JavaScript language and how to use modern JavaScript in your apps.", + "title": "Web Inspector and Modern JavaScript", + "platforms": ["iOS", "macOS"], + "keywords": ["css", "debug", "html", "table"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/512xxj53iuolu78/512/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/512xxj53iuolu78/512/512_web_inspector_and_modern_javascript.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/512xxj53iuolu78/512/512_hd_web_inspector_and_modern_javascript.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/512xxj53iuolu78/512/512_sd_web_inspector_and_modern_javascript.mov", + "duration": 3057 + }, + "related": { + "activities": ["wwdc2016-420"] + } + }, { + "id": "wwdc2014-302", + "staticContentId": 926, + "eventContentId": 302, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/302", + "description": "Get acquainted with the new iTunes Connect—your hub for publishing on the App Store. Learn about new ways to market with App Bundles and App Previews and how to make even better apps with App Analytics and TestFlight Beta Testing.", + "title": "The New iTunes Connect", + "platforms": ["iOS", "macOS"], + "keywords": ["adhoc", "crash reporting", "distribution", "enterprise provisioning", "itc for ios", "itunesconnect", "metrics", "testers", "test flight", "trailers"], + "trackId": 3, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/302xxo8xxixuera/302/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/302xxo8xxixuera/302/302_the_new_itunes_connect.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/302xxo8xxixuera/302/302_hd_the_new_itunes_connect.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/302xxo8xxixuera/302/302_sd_the_new_itunes_connect.mov", + "duration": 3007 + } + }, { + "id": "wwdc2014-511", + "staticContentId": 927, + "eventContentId": 511, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/511", + "description": "iOS 8 introduces two frameworks for managing the photo library and enhancing editing in photo, video, and camera apps. Get introduced to the Photos Framework and see how it enables you to build first-class photo browsing and editing apps. Learn about photo editing extensions with the PhotosUI framework and see how to include your own editing features into the built-in Photos app.", + "title": "Introducing the Photos Frameworks", + "platforms": ["iOS"], + "keywords": ["camera", "image", "phasset", "phassetcollection", "phcollection", "phcollectionlist", "phfetchoptions", "phfetchresult", "photo"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/511xxegx4yyhbt9/511/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/511xxegx4yyhbt9/511/511_introducing_the_photos_frameworks.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/511xxegx4yyhbt9/511/511_hd_introducing_the_photos_frameworks.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/511xxegx4yyhbt9/511/511_sd_introducing_the_photos_frameworks.mov", + "duration": 3188 + } + }, { + "id": "wwdc2014-303", + "staticContentId": 925, + "eventContentId": 303, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/303", + "description": "Using the StoreKit framework properly and optimizing the user experience of your In-App store is vital in order to never miss out on a sale or confuse people. Learn valuable techniques for a trouble free browsing and purchasing experience, and to ensure your app gets through the app submission process smoothly.", + "title": "Optimizing In-App Purchases", + "platforms": ["iOS", "macOS"], + "keywords": ["iap", "inapp purchases", "micropayment", "skpayment", "skpaymenttransaction", "transaction"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/303xxqw0yb14u0r/303/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/303xxqw0yb14u0r/303/303_optimizing_in-app_purchases.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/303xxqw0yb14u0r/303/303_hd_optimizing_in-app_purchases.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/303xxqw0yb14u0r/303/303_sd_optimizing_in-app_purchases.mov", + "duration": 3128 + } + }, { + "id": "wwdc2014-515", + "staticContentId": 928, + "eventContentId": 515, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/515", + "description": "Dive deeper into creating your own custom Core Image filters for iOS. Learn about writing filter kernels and get details about the Core Image kernel language. See how to use custom filters in your apps or make them available to other apps via extensions.", + "title": "Developing Core Image Filters for iOS", + "platforms": ["iOS", "macOS"], + "keywords": ["camera", "cicontext", "cifilter", "ciimage", "cikernel", "convolution", "games", "photo", "raw", "science"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/515xxv01d9tcg3o/515/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/515xxv01d9tcg3o/515/515_developing_core_image_filters_for_ios.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/515xxv01d9tcg3o/515/515_hd_developing_core_image_filters_for_ios.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/515xxv01d9tcg3o/515/515_sd_developing_core_image_filters_for_ios.mov", + "duration": 3099 + } + }, { + "id": "wwdc2014-608", + "staticContentId": 944, + "eventContentId": 608, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/608", + "description": "Gain a deeper understanding of the best practices to follow when building a SpriteKit based game. Get tips about game construction and see how to map the logical elements of your game into SpriteKit. Learn how data driven techniques can speed your development cycle, and discover how to achieve maximum performance for rendering, physics, and animation.", + "title": "Best Practices for Building SpriteKit Games", + "platforms": ["iOS", "macOS"], + "keywords": ["2d", "animation", "collisions", "constraint", "graphics", "inverse kinematics", "lighting", "opengl", "physics", "rendering", "shaders", "shading", "sprite"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/608xx0tzmkcqkrn/608/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/608xx0tzmkcqkrn/608/608_best_practices_for_building_spritekit_games.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/608xx0tzmkcqkrn/608/608_hd_best_practices_for_building_spritekit_games.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/608xx0tzmkcqkrn/608/608_sd_best_practices_for_building_spritekit_games.mov", + "duration": 3098 + } + }, { + "id": "wwdc2014-503", + "staticContentId": 935, + "eventContentId": 503, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/503", + "description": "Media playback just got easier and more powerful with the introduction of AVKit on iOS. Hear how AVKit provides view-level services that give you access to the modern media capabilities of AV Foundation. Learn the best practices for playing audiovisual media on iOS and OS X.", + "title": "Mastering Modern Media Playback", + "platforms": ["iOS", "macOS"], + "keywords": ["avfoundation", "avkit"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/503xx50xm4n63qe/503/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/503xx50xm4n63qe/503/503_mastering_modern_media_playback.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/503xx50xm4n63qe/503/503_hd_mastering_modern_media_playback.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/503xx50xm4n63qe/503/503_sd_mastering_modern_media_playback.mov", + "duration": 2743 + } + }, { + "id": "wwdc2014-610", + "staticContentId": 942, + "eventContentId": 610, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/610", + "description": "Dive into the practical workflow of developing a 3D side-scrolling game using SceneKit. See how to get started, and learn about tools for managing game assets, creating particle systems, and editing nodes. Understand how SceneKit integrates with your art pipeline and learn how to implement lighting, shadows, and other visual effects. Come away from the session with a demo game in-hand and ready to play.", + "title": "Building a Game with SceneKit", + "platforms": ["iOS", "macOS"], + "keywords": ["3d", "bananas", "collada", "dae", "graph", "graphics", "inverse kinematics", "opengl", "opengl", "opensubdiv", "physics", "rendering", "scnlayer", "scnnode", "scnview"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/610xxc04fgmv80x/610/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/610xxc04fgmv80x/610/610_building_a_game_with_scenekit.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/610xxc04fgmv80x/610/610_hd_building_a_game_with_scenekit.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/610xxc04fgmv80x/610/610_sd_building_a_game_with_scenekit.mov", + "duration": 2606 + } + }, { + "id": "wwdc2014-605", + "staticContentId": 939, + "eventContentId": 605, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/605", + "description": "Building on the fundamentals, learn how to create advanced games and graphics applications with Metal. See how to construct your rendering pipeline, understand how to use compute and graphics together, and discover how to optimize your Metal-based app.", + "title": "Working with Metal: Advanced", + "platforms": ["iOS"], + "keywords": ["3d", "3d graphics", "accelerate", "compute", "frame debugger", "gpgpu", "gpu", "metal tools", "metl", "mtl", "opengl", "opengl es", "renderer", "shader", "simd", "xcode"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/605xxygcz4pd0h6/605/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/605xxygcz4pd0h6/605/605_working_with_metal_advanced.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/605xxygcz4pd0h6/605/605_hd_working_with_metal_advanced.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/605xxygcz4pd0h6/605/605_sd_working_with_metal_advanced.mov", + "duration": 3198 + } + }, { + "id": "wwdc2014-103", + "staticContentId": 956, + "eventContentId": 103, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/103", + "description": "Join us for an unforgettable award ceremony celebrating developers and their outstanding work. The 2014 Apple Design Awards recognize state of the art iOS apps and OS X apps that reflect the very best in design, innovation, and technology excellence.", + "title": "Apple Design Awards", + "platforms": ["iOS", "macOS"], + "trackId": 4, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/103xx8s53gk94hl/103/ref.mov", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/103xx8s53gk94hl/103/103_hd_apple_design_awards.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/103xx8s53gk94hl/103/103_sd_apple_design_awards.mov", + "duration": 4112 + } + }, { + "id": "wwdc2014-102", + "staticContentId": 957, + "eventContentId": 102, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/102", + "description": "WWDC 2014 Platforms State of the Union", + "title": "Platforms State of the Union", + "platforms": ["iOS", "macOS"], + "trackId": 4, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/102xxw2o82y78a4/102/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/102xxw2o82y78a4/102/102_platforms_state_of_the_union.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/102xxw2o82y78a4/102/102_hd_platforms_state_of_the_union.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/102xxw2o82y78a4/102/102_sd_platforms_state_of_the_union.mov", + "duration": 6362 + } + }, { + "id": "wwdc2014-404", + "staticContentId": 825, + "eventContentId": 404, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/404", + "description": "Dive deep into Swift! Explore some of its more powerful features, like operator overloading, string interpolation, and advanced pattern matching. Learn how to take advantage of generics to write terse and expressive code.", + "title": "Advanced Swift", + "platforms": ["iOS", "macOS"], + "keywords": ["switch", "template"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/404xxdxsstkaqjb/404/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/404xxdxsstkaqjb/404/404_advanced_swift.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/404xxdxsstkaqjb/404/404_hd_advanced_swift.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/404xxdxsstkaqjb/404/404_sd_advanced_swift.mov", + "duration": 3619 + } + }, { + "id": "wwdc2014-702", + "staticContentId": 850, + "eventContentId": 702, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/702", + "description": "Learn about the latest developments in managing Apple devices in an enterprise environment. Learn how MDM can be used to wirelessly configure settings, monitor compliance with policies, install apps, and remotely wipe devices, and how these capabilities can be integrated with in-house or third-party server solutions.", + "title": "Managing Apple Devices", + "platforms": ["iOS", "macOS"], + "keywords": ["activation", "business", "configurator", "dep", "education", "enterprise", "ibook", "management", "mdm", "school", "sso", "supervise", "vpp"], + "trackId": 3, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/702xxvsjwkmhw2e/702/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/702xxvsjwkmhw2e/702/702_managing_apple_devices.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/702xxvsjwkmhw2e/702/702_hd_managing_apple_devices.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/702xxvsjwkmhw2e/702/702_sd_managing_apple_devices.mov", + "duration": 3020 + } + }, { + "id": "wwdc2014-701", + "staticContentId": 831, + "eventContentId": 701, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/701", + "description": "Learn how to create app-enabled accessories. Understand your options for designing accessories that connect via Bluetooth, Wi-Fi or the Lightning connector. Learn how to develop accessories that work with HealthKit and HomeKit.", + "title": "Designing Accessories for iOS and OS X", + "platforms": ["iOS", "macOS"], + "keywords": ["30-pin", "30-pin connector", "802.11", "accessories", "accessory", "airplay", "app-enabled", "beacon", "ble", "bluetooth", "bluetooth low energy", "btle", "corebluetooth", "core bluetooth", "external accessory", "external accessory framework", "game controller", "hardware", "iap", "ibeacon", "lightning", "lightning connector", "mfi", "mfi program", "thunderbolt", "thunderbolt 2", "usb", "usb 3", "wifi", "wi-fi", "wired", "wireless", "wireless accessory configuration"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/701xx8n8ca3aq4j/701/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/701xx8n8ca3aq4j/701/701_designing_accessories_for_ios_and_os_x.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/701xx8n8ca3aq4j/701/701_hd_designing_accessories_for_ios_and_os_x.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/701xx8n8ca3aq4j/701/701_sd_designing_accessories_for_ios_and_os_x.mov", + "duration": 3094 + }, + "related": { + "activities": ["wwdc2016-209", "wwdc2016-235"] + } + }, { + "id": "wwdc2014-410", + "staticContentId": 852, + "eventContentId": 410, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/410", + "description": "Explore LLDB's powerful features that help you more quickly debug your Swift code. Learn about LLDB's support for protocols, generics, optionals, and mixed-language source code.", + "title": "Advanced Swift Debugging in LLDB", + "platforms": ["iOS", "macOS"], + "keywords": ["expression", "repl"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/410xx1s19e83i5z/410/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/410xx1s19e83i5z/410/410_advanced_swift_debugging_in_lldb.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/410xx1s19e83i5z/410/410_hd_advanced_swift_debugging_in_lldb.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/410xx1s19e83i5z/410/410_sd_advanced_swift_debugging_in_lldb.mov", + "duration": 2855 + } + }, { + "id": "wwdc2014-403", + "staticContentId": 778, + "eventContentId": 403, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/403", + "description": "Explore the modern features of the Swift programming language. Learn about object initialization, closures, and optionals. See how you can perform pattern matching using Swift's powerful switch statements.", + "title": "Intermediate Swift", + "platforms": ["iOS", "macOS"], + "keywords": ["filter", "functional programming", "generics", "map", "module", "reduce"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/403xxksrj0qs8c0/403/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/403xxksrj0qs8c0/403/403_intermediate_swift.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/403xxksrj0qs8c0/403/403_hd_intermediate_swift.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/403xxksrj0qs8c0/403/403_sd_intermediate_swift.mov", + "duration": 3203 + } + }, { + "id": "wwdc2014-237", + "staticContentId": 864, + "eventContentId": 237, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/237", + "description": "Experience with past projects can help you do better work in the future if you can draw out the right lessons from what's happened. Hear stories and gain valuable insights from a senior engineer, with a lot of Apple software development experience, who's learned a few lessons along the way and figured out some useful approaches to take.", + "title": "A Strategy for Great Work", + "platforms": ["iOS", "macOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/237xxcyp7vhx2xt/237/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/237xxcyp7vhx2xt/237/237_a_strategy_for_great_work.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/237xxcyp7vhx2xt/237/237_hd_a_strategy_for_great_work.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/237xxcyp7vhx2xt/237/237_sd_a_strategy_for_great_work.mov", + "duration": 3308 + } + }, { + "id": "wwdc2014-407", + "staticContentId": 853, + "eventContentId": 407, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/407", + "description": "Swift and Objective-C work together at multiple levels to ensure that you can create great apps for iOS and OS X. Dive deep with us to see how to use fundamental Core Foundation and C types in your Swift code. Learn how bridging values work and gain a practical understanding of how Swift and Objective-C can accelerate your app development.", + "title": "Swift Interoperability In Depth", + "platforms": ["iOS", "macOS"], + "keywords": ["bridge", "class", "closure", "cocoa touch", "nsarray", "nsdictionary", "nsstring", "property", "protocol"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/407xxptt888z5jv/407/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/407xxptt888z5jv/407/407_swift_interoperability_in_depth.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/407xxptt888z5jv/407/407_hd_swift_interoperability_in_depth.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/407xxptt888z5jv/407/407_sd_swift_interoperability_in_depth.mov", + "duration": 3476 + } + }, { + "id": "wwdc2014-713", + "staticContentId": 847, + "eventContentId": 713, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/713", + "description": "Local and push notifications let background or inactive apps notify users that an event of interest has occurred, or that an app has new information for them. See how to configure interactive notifications to let users act on notifications from banners, alerts, in notification center and on the lock screen. Learn how to trigger notifications using geofences and iBeacons, and discover the new API's for registering for user notifications and remote pushes.", + "title": "What's New in iOS Notifications", + "platforms": ["iOS"], + "keywords": ["apns", "location", "push"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/713xx1il4h4ur9c/713/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/713xx1il4h4ur9c/713/713_whats_new_in_ios_notifications.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/713xx1il4h4ur9c/713/713_hd_whats_new_in_ios_notifications.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/713xx1il4h4ur9c/713/713_sd_whats_new_in_ios_notifications.mov", + "duration": 2054 + } + }, { + "id": "wwdc2014-712", + "staticContentId": 845, + "eventContentId": 712, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/712", + "description": "Go in-depth into specific API and design patterns you can use to avoid consuming excessive energy as well as tools that can help you diagnose issues.", + "title": "Writing Energy Efficient Code, Part 2", + "platforms": ["iOS", "macOS"], + "keywords": ["battery", "location", "networking", "power", "pushkit", "qos", "timers", "voip"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/712xx1pl2u942g2/712/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/712xx1pl2u942g2/712/712_writing_energy_efficient_code_part_2.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/712xx1pl2u942g2/712/712_hd_writing_energy_efficient_code_part_2.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/712xx1pl2u942g2/712/712_sd_writing_energy_efficient_code_part_2.mov", + "duration": 3398 + } + }, { + "id": "wwdc2014-226", + "staticContentId": 857, + "eventContentId": 226, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/226", + "description": "iOS 8 brings dynamic type front and foremost throughout UIKit classes. Learn about extensive enhancements made to table views and collection views, empowering you to create dynamically sized cells and exercise greater control over layouts. Find out how to align user expectations from their settings to your UI.", + "title": "What's New in Table and Collection Views", + "platforms": ["iOS"], + "keywords": ["uicollectionview", "uikit", "uitableview"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/226xxf6phq7ufzl/226/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/226xxf6phq7ufzl/226/226_whats_new_in_table_and_collection_views.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/226xxf6phq7ufzl/226/226_hd_whats_new_in_table_and_collection_views.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/226xxf6phq7ufzl/226/226_sd_whats_new_in_table_and_collection_views.mov", + "duration": 3174 + } + }, { + "id": "wwdc2014-231", + "staticContentId": 887, + "eventContentId": 231, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/231", + "description": "Dive deep into CloudKit! Learn how to perform advanced operations on records and store private data and gain a deeper understanding about custom record zones, ensuring data integrity, and effectively modeling your data.", + "title": "Advanced CloudKit", + "platforms": ["iOS", "macOS"], + "keywords": ["cache", "caching", "ckasset", "ckcontainer", "ckdatabase", "ckoperation", "ckrecord", "ckrecordid", "ckrecordzone", "ckreference", "cksubscription", "database", "fetch", "icloud", "model", "network", "nspredicate", "nssortdescriptor", "offline", "push notification", "query", "storage"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/231xx9bil1zgee7/231/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/231xx9bil1zgee7/231/231_advanced_cloudkit.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/231xx9bil1zgee7/231/231_hd_advanced_cloudkit.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/231xx9bil1zgee7/231/231_sd_advanced_cloudkit.mov", + "duration": 3108 + } + }, { + "id": "wwdc2014-208", + "staticContentId": 888, + "eventContentId": 208, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/208", + "description": "CloudKit is the framework that powers iCloud on iOS and OS X, now available directly in your app. Learn how you can take advantage of its feature-rich API to store and query your own custom data and assets in iCloud.", + "title": "Introducing CloudKit", + "platforms": ["iOS", "macOS"], + "keywords": ["cache", "caching", "ckasset", "ckcontainer", "ckdatabase", "ckoperation", "ckrecord", "ckrecordid", "ckrecordzone", "ckreference", "cksubscription", "database", "fetch", "icloud", "model", "network", "nspredicate", "nssortdescriptor", "offline", "push notification", "query", "storage"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/208xx42tf0hw3vv/208/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/208xx42tf0hw3vv/208/208_introducing_cloudkit.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/208xx42tf0hw3vv/208/208_hd_introducing_cloudkit.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/208xx42tf0hw3vv/208/208_sd_introducing_cloudkit.mov", + "duration": 3286 + } + }, { + "id": "wwdc2014-301", + "staticContentId": 880, + "eventContentId": 301, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/301", + "description": "Earn commission while linking to iTunes music, apps, books, and more. Get an overview of the new global iTunes Affiliate Program and see how simple it is to get started linking to iTunes content using iOS APIs and SmartApp Banners, creating iTunes Radio stations, and much more.", + "title": "Affiliate Tools for App Developers", + "platforms": ["iOS", "macOS"], + "keywords": ["affiliate token", "collection builder", "performance horizon group", "phg", "skstoreproductviewcontroller", "storekit", "store product sheet"], + "trackId": 3, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/301xxu0xo3hhg9h/301/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/301xxu0xo3hhg9h/301/301_affiliate_tools_for_app_developers.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/301xxu0xo3hhg9h/301/301_hd_affiliate_tools_for_app_developers.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/301xxu0xo3hhg9h/301/301_sd_affiliate_tools_for_app_developers.mov", + "duration": 3501 + } + }, { + "id": "wwdc2014-206", + "staticContentId": 894, + "eventContentId": 206, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/206", + "description": "The modern WebKit framework enables developers to integrate web content into their native app experience with more features and fewer lines of code. Dive into the latest WebKit enhancements including modern Objective-C features such as blocks and explicit object types, advanced bridging between JavaScript and Objective-C, increased JavaScript performance via WebKit's super-fast JIT, and more—all delivered in an API unified for both iOS and OS X.", + "title": "Introducing the Modern WebKit API", + "platforms": ["iOS", "macOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/206xxdiurnffagr/206/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/206xxdiurnffagr/206/206_introducing_the_modern_webkit_api.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/206xxdiurnffagr/206/206_hd_introducing_the_modern_webkit_api.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/206xxdiurnffagr/206/206_sd_introducing_the_modern_webkit_api.mov", + "duration": 2913 + }, + "related": { + "activities": ["wwdc2016-420"] + } + }, { + "id": "wwdc2014-715", + "staticContentId": 904, + "eventContentId": 715, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/715", + "description": "Learn about new iOS and OS X privacy features and get details on new and updated APIs. Hear best practices for delivering great features and respecting your customers' privacy.", + "title": "User Privacy in iOS and OS X", + "platforms": ["iOS", "macOS"], + "keywords": ["camera", "consent", "health", "identifier", "idfa", "location", "tracking", "udid"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/715xx4loqo5can9/715/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/715xx4loqo5can9/715/715_user_privacy_in_ios_and_os_x.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/715xx4loqo5can9/715/715_hd_user_privacy_in_ios_and_os_x.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/715xx4loqo5can9/715/715_sd_user_privacy_in_ios_and_os_x.mov", + "duration": 2758 + } + }, { + "id": "wwdc2014-707", + "staticContentId": 902, + "eventContentId": 707, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/707", + "description": "The NSURLSession class provides powerful HTTP networking features in iOS and OS X. Learn about new NSURLSession capabilities and hear expert advice on practical, efficient and high performance networking for your apps.", + "title": "What's New in Foundation Networking", + "platforms": ["iOS", "macOS"], + "keywords": ["http", "nsurlconnection", "nsurlsession", "spdy", "ssl", "tcp", "tls"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/707xx1o5tdjnvg9/707/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/707xx1o5tdjnvg9/707/707_whats_new_in_foundation_networking.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/707xx1o5tdjnvg9/707/707_hd_whats_new_in_foundation_networking.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/707xx1o5tdjnvg9/707/707_sd_whats_new_in_foundation_networking.mov", + "duration": 3315 + } + }, { + "id": "wwdc2014-711", + "staticContentId": 905, + "eventContentId": 711, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/711", + "description": "The Keychain has always been the most secure place to store passwords and other sensitive data. iOS 8 introduces significant new security features. Discover how to integrate Touch ID into your apps using the Keychain and the new LocalAuthentication framework. Learn about other Keychain enhancements, including how to tie data to the user's passcode.", + "title": "Keychain and Authentication with Touch ID", + "platforms": ["iOS"], + "keywords": ["acl", "localauthentication", "passcode", "password", "secattr", "secitem", "security"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/711xx6j5wzufu78/711/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/711xx6j5wzufu78/711/711_keychain_and_authentication_with_touch_id.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/711xx6j5wzufu78/711/711_hd_keychain_and_authentication_with_touch_id.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/711xx6j5wzufu78/711/711_sd_keychain_and_authentication_with_touch_id.mov", + "duration": 2730 + } + }, { + "id": "wwdc2014-709", + "staticContentId": 903, + "eventContentId": 709, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/709", + "description": "Multipeer Connectivity comes to OS X. You can now discover and communicate with nearby devices on OS X and iOS. See what is new. Learn about best practices and advanced topics, such as writing cross platform code, customizing discovery and handling certificates.", + "title": "Cross Platform Nearby Networking", + "platforms": ["iOS", "macOS"], + "keywords": ["bluetooth", "bt", "connectivity", "multipeer", "wifi", "wi-fi"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/709xx1q8hdvo14x/709/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/709xx1q8hdvo14x/709/709_cross_platform_nearby_networking.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/709xx1q8hdvo14x/709/709_hd_cross_platform_nearby_networking.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/709xx1q8hdvo14x/709/709_sd_cross_platform_nearby_networking.mov", + "duration": 2605 + } + }, { + "id": "wwdc2014-210", + "staticContentId": 909, + "eventContentId": 210, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/210", + "description": "iOS offers unmatched accessibility support that can help you reach a wider audience. Join us for an exploration of the features that iOS offers for users with specific needs, in areas such as vision, hearing, movement, and learning. Learn how to leverage existing and new UIAccessibility APIs in iOS 8, including expanded support for low vision users, to ensure that your app's features are available to all users.", + "title": "Accessibility on iOS", + "platforms": ["iOS"], + "keywords": ["automation", "uikit", "voiceover"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/210xxksa9s9ewsa/210/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/210xxksa9s9ewsa/210/210_accessibility_on_ios.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/210xxksa9s9ewsa/210/210_hd_accessibility_on_ios.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/210xxksa9s9ewsa/210/210_sd_accessibility_on_ios.mov", + "duration": 3041 + } + }, { + "id": "wwdc2014-207", + "staticContentId": 910, + "eventContentId": 207, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/207", + "description": "OS X is known for its unsurpassed level of accessibility. Find out about an all-new OS X accessibility API to make adding accessibility support to your apps even easier. Discover how to add support for VoiceOver, Switch Control, automation and other assistive-technology clients to work with your OS X applications. Learn advanced techniques to make complex controls accessible with only a few lines of code.", + "title": "Accessibility on OS X", + "platforms": ["macOS"], + "keywords": ["appkit"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/207xx270npvffao/207/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/207xx270npvffao/207/207_accessibility_on_os_x.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/207xx270npvffao/207/207_hd_accessibility_on_os_x.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/207xx270npvffao/207/207_sd_accessibility_on_os_x.mov", + "duration": 3145 + } + }, { + "id": "wwdc2014-514", + "staticContentId": 929, + "eventContentId": 514, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/514", + "description": "Core Image lets you create amazing effects in your camera and image editing apps. Learn about the advances in Core Image for iOS 8 and OS X Yosemite. Get introduced to writing custom image processing filters for iOS and see how they can be used in Photos extensions. Walk through the enhancements for working with large images, and get details about the newest filters and detectors.", + "title": "Advances in Core Image", + "platforms": ["iOS", "macOS"], + "keywords": ["camera", "cicontext", "cifilter", "ciimage", "cikernel", "convolution", "games", "photo", "raw", "science"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/514xxio5buvlu16/514/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/514xxio5buvlu16/514/514_advances_in_core_image.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/514xxio5buvlu16/514/514_hd_advances_in_core_image.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/514xxio5buvlu16/514/514_sd_advances_in_core_image.mov", + "duration": 3054 + } + }, { + "id": "wwdc2014-202", + "staticContentId": 911, + "eventContentId": 202, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/202", + "description": "iOS 8 brings enhancements to the Cocoa Touch frameworks for making next generation apps on iOS. Learn about updates to view controllers, the introduction of size classes, and get an overview of all new APIs to help you create adaptive apps. Hear about new capabilities, such as extensions and handoff, which will enable you to create great experiences for users to keep them up to date at all times or allow them to continue their workflow when they move from one device to another. Find out which sessions you won't want to miss throughout the week.", + "title": "What's New in Cocoa Touch", + "platforms": ["iOS"], + "keywords": ["uikit"], + "trackId": 4, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/202xx3ane09vxdz/202/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/202xx3ane09vxdz/202/202_whats_new_in_cocoa_touch.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/202xx3ane09vxdz/202/202_hd_whats_new_in_cocoa_touch.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/202xx3ane09vxdz/202/202_sd_whats_new_in_cocoa_touch.mov", + "duration": 2851 + } + }, { + "id": "wwdc2014-219", + "staticContentId": 913, + "eventContentId": 219, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/219", + "description": "Handoff allows people to seamlessly move activities between devices and pick up right where they left off. Learn how to save, transfer, and restore user activities in apps of all architectures. See how easy it is to add Handoff support to your iOS and OS X apps to make your user experience even better.", + "title": "Adopting Handoff on iOS and OS X", + "platforms": ["iOS", "macOS"], + "keywords": ["appkit", "continue", "nsuseractivity", "streams", "uikit"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/219xxebl6quoz05/219/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/219xxebl6quoz05/219/219_adopting_handoff_on_ios_and_os_x.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/219xxebl6quoz05/219/219_hd_adopting_handoff_on_ios_and_os_x.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/219xxebl6quoz05/219/219_sd_adopting_handoff_on_ios_and_os_x.mov", + "duration": 3064 + }, + "related": { + "activities": ["wwdc2016-240"] + } + }, { + "id": "wwdc2014-223", + "staticContentId": 920, + "eventContentId": 223, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/223", + "description": "Make better apps by trying things out first, before you write any code. Get a glimpse of Apple's prototyping process and the range of tools and techniques we use, some of which might surprise you.", + "title": "Prototyping: Fake It Till You Make It", + "platforms": ["iOS", "macOS"], + "keywords": ["design", "keynote"], + "trackId": 9, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/223xxp1uag2jn3n/223/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/223xxp1uag2jn3n/223/223_prototyping_fake_it_till_you_make_it.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/223xxp1uag2jn3n/223/223_hd_prototyping_fake_it_till_you_make_it.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/223xxp1uag2jn3n/223/223_sd_prototyping_fake_it_till_you_make_it.mov", + "duration": 3470 + } + }, { + "id": "wwdc2014-201", + "staticContentId": 919, + "eventContentId": 201, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/201", + "description": "Making your app appealing to customers around the world requires more than basic localization. See how to tackle the complex aspects of making your app truly world-ready. Learn about the latest developments with internationalization on iOS and OS X, and learn from case studies illustrating common pitfalls to avoid and simple and effective techniques. Find out how to give your users a great experience no matter what language they speak or where they live.", + "title": "Advanced Topics in Internationalization", + "platforms": ["iOS", "macOS"], + "keywords": ["appkit", "calendar", "core foundation", "currency", "date", "formatter", "foundation", "genstrings", "ibtool", "language", "locale", "markets", "nsdate", "number", "right to left", "rtl", "string", "text", "time", "uikit", "unicode"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/201xx2xfazhzce8/201/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/201xx2xfazhzce8/201/201_advanced_topics_in_internationalization.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/201xx2xfazhzce8/201/201_hd_advanced_topics_in_internationalization.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/201xx2xfazhzce8/201/201_sd_advanced_topics_in_internationalization.mov", + "duration": 3046 + } + }, { + "id": "wwdc2014-505", + "staticContentId": 934, + "eventContentId": 505, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/505", + "description": "Rich metadata, such as time, date, location, and user defined tags, are particularly useful for time-based media. Discover how to harness static and timed metadata in your AV Foundation apps. See how to write metadata into media and read it during playback. Gain knowledge of best practices for privacy and protecting user data.", + "title": "Harnessing Metadata in Audiovisual Media", + "platforms": ["iOS", "macOS"], + "keywords": ["avfoundation", "avkit", "gps", "maps"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/505xx5j7n7h3a1q/505/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/505xx5j7n7h3a1q/505/505_harnessing_metadata_in_audiovisual_media.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/505xx5j7n7h3a1q/505/505_hd_harnessing_metadata_in_audiovisual_media.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/505xx5j7n7h3a1q/505/505_sd_harnessing_metadata_in_audiovisual_media.mov", + "duration": 2894 + } + }, { + "id": "wwdc2014-230", + "staticContentId": 921, + "eventContentId": 230, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/230", + "description": "Learn how to effectively introduce new users to the capabilities and features of your app or game in a way that will draw them in the very first time and then keep them coming back.", + "title": "Making a Great First Impression With Strong Onboarding Design", + "platforms": ["iOS", "macOS"], + "trackId": 9, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/230xxe44dq1m2da/230/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/230xxe44dq1m2da/230/230_making_a_great_first_impression_with_strong_onboarding_design.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/230xxe44dq1m2da/230/230_hd_making_a_great_first_impression_with_strong_onboarding_design.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/230xxe44dq1m2da/230/230_sd_making_a_great_first_impression_with_strong_onboarding_design.mov", + "duration": 3441 + } + }, { + "id": "wwdc2014-205", + "staticContentId": 917, + "eventContentId": 205, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/205", + "description": "Extensions enable you to keep people engaged with your content across iOS and OS X. Learn how to create extensions that share content with social websites, engage users in Notification Center, and enable a variety of other exciting features. Tap into the potential of extensions and prepare to dive into advanced topics in Part 2.", + "title": "Creating Extensions for iOS and OS X, Part 1", + "platforms": ["iOS", "macOS"], + "keywords": ["appkit", "today", "uikit", "widget"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/205xxqzduadzo14/205/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/205xxqzduadzo14/205/205_creating_extensions_for_ios_and_os_x,_part_1.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/205xxqzduadzo14/205/205_hd_creating_extensions_for_ios_and_os_x,_part_1.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/205xxqzduadzo14/205/205_sd_creating_extensions_for_ios_and_os_x,_part_1.mov", + "duration": 3096 + }, + "related": { + "activities": ["wwdc2016-214"] + } + }, { + "id": "wwdc2014-604", + "staticContentId": 940, + "eventContentId": 604, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/604", + "description": "Start learning how to code with Metal in this step-by-step walkthrough of basic scene rendering. See the code you need to get your first Metal-based application up and running. Explore how to create graphics and compute shaders and efficiently animate scenes.", + "title": "Working with Metal: Fundamentals", + "platforms": ["iOS"], + "keywords": ["3d", "3d graphics", "accelerate", "compute", "gpgpu", "gpu", "metl", "mtl", "opengl", "opengl es", "renderer", "shader", "simd"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/604xxg7crkljcr8/604/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/604xxg7crkljcr8/604/604_working_with_metal_fundamentals.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/604xxg7crkljcr8/604/604_hd_working_with_metal_fundamentals.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/604xxg7crkljcr8/604/604_sd_working_with_metal_fundamentals.mov", + "duration": 3223 + } + }, { + "id": "wwdc2014-603", + "staticContentId": 941, + "eventContentId": 603, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/603", + "description": "Metal provides extremely efficient access to the graphics and compute power of the A7 chip. Get introduced to the essential concepts behind Metal, its low-overhead architecture, streamlined API, and unified shading language. See how Metal lets you take your iOS game or app to the next level of performance and capability.", + "title": "Working with Metal: Overview", + "platforms": ["iOS"], + "keywords": ["3d", "3d graphics", "accelerate", "compute", "gpgpu", "gpu", "metl", "mtl", "opengl", "opengl es", "renderer", "shader", "simd"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/603xx33n8igr5n1/603/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/603xx33n8igr5n1/603/603_working_with_metal_overview.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/603xx33n8igr5n1/603/603_hd_working_with_metal_overview.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/603xx33n8igr5n1/603/603_sd_working_with_metal_overview.mov", + "duration": 2783 + } + }, { + "id": "wwdc2014-606", + "staticContentId": 945, + "eventContentId": 606, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/606", + "description": "SpriteKit provides everything you need for high-performance 2D games to animate sprites, simulate physics, and create stunning graphics effects. Check out new APIs for enhanced shading and lighting, advances in physics and collisions, constraints and inverse kinematics, integration with SceneKit, and powerful editing tools built right into Xcode 6.", + "title": "What's New in SpriteKit", + "platforms": ["iOS", "macOS"], + "keywords": ["2d", "animation", "collisions", "constraint", "graphics", "inverse kinematics", "lighting", "opengl", "physics", "rendering", "shaders", "shading", "sprite"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/606xxql3qoibema/606/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/606xxql3qoibema/606/606_whats_new_in_sprite_kit.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/606xxql3qoibema/606/606_hd_whats_new_in_sprite_kit.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/606xxql3qoibema/606/606_sd_whats_new_in_sprite_kit.mov", + "duration": 3327 + } + }, { + "id": "wwdc2014-609", + "staticContentId": 943, + "eventContentId": 609, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/609", + "description": "Now available for iOS and OS X, SceneKit is an inventive high-level graphics framework enabling your apps to efficiently load, manipulate, and render 3D scenes. Get reintroduced to SceneKit and check out how your apps can take advantage of its latest capabilities. Learn about advanced capabilities for physics and animation, support for subdivision surfaces, new rendering effects, integration with SpriteKit, and much more.", + "title": "What's New in SceneKit", + "platforms": ["iOS", "macOS"], + "keywords": ["3d", "bananas", "collada", "dae", "graph", "graphics", "inverse kinematics", "opengl", "opensubdiv", "physics", "rendering", "scnlayer", "scnnode", "scnview", "shader"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/609xxkxq1v95fju/609/ref.mov", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/609xxkxq1v95fju/609/609_hd_whats_new_in_scenekit.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/609xxkxq1v95fju/609/609_sd_whats_new_in_scenekit.mov", + "duration": 2689 + } + }, { + "id": "wwdc2014-611", + "staticContentId": 946, + "eventContentId": 611, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/611", + "description": "The Game Controller framework enables games to integrate with MFi game controllers and take advantage of exciting new modes of input. Check out the latest additions and get expert advice about best practices to follow when adding game controller support to your titles. Understand how to avoid common pitfalls and gain key insights into what it takes to create an experience that's intuitive and fun.", + "title": "Designing for Game Controllers", + "platforms": ["iOS", "macOS"], + "keywords": ["button", "controller", "dpad", "game", "gccontroller", "input", "joystick", "mfi", "physical", "shoulder"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/611xxblieag1z2a/611/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/611xxblieag1z2a/611/611_designing_for_game_controllers.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/611xxblieag1z2a/611/611_hd_designing_for_game_controllers.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/611xxblieag1z2a/611/611_sd_designing_for_game_controllers.mov", + "duration": 2524 + } + }, { + "id": "wwdc2014-612", + "staticContentId": 937, + "eventContentId": 612, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/612", + "description": "Core Motion leverages the M7 motion coprocessor and other built-in sensors to provide support for step counting and motion tracking. See examples of Core Motion based apps in action. Learn how health and fitness apps use pedometer information to give users performance and workout results, and how journaling apps use motion classification to tag the day's activities.", + "title": "Motion Tracking with the Core Motion Framework", + "platforms": ["iOS"], + "keywords": ["accelerometer", "cmmotion", "cycling", "driving", "gyroscope", "motion", "pedometer", "step", "walking"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/612xxnsoq5fis79/612/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/612xxnsoq5fis79/612/612_motion_tracking_with_the_core_motion_framework.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/612xxnsoq5fis79/612/612_hd_motion_tracking_with_the_core_motion_framework.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/612xxnsoq5fis79/612/612_sd_motion_tracking_with_the_core_motion_framework.mov", + "duration": 3213 + } + }, { + "id": "wwdc2014-304", + "staticContentId": 923, + "eventContentId": 304, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/304", + "description": "Spark interest in your app by showing a compelling video preview highlighting the magic moments that make your app unique. Learn how to plan, create and publish your App Preview using Apple's tools, guidelines and best practices.", + "title": "Creating Great App Previews", + "platforms": ["iOS"], + "keywords": ["capture", "editing", "itunesconnect", "itunes connect", "trailers", "video"], + "trackId": 3, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/304xxc65wjxydj8/304/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/304xxc65wjxydj8/304/304_creating_great_app_previews.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/304xxc65wjxydj8/304/304_hd_creating_great_app_previews.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/304xxc65wjxydj8/304/304_sd_creating_great_app_previews.mov", + "duration": 3062 + } + }, { + "id": "wwdc2014-501", + "staticContentId": 931, + "eventContentId": 501, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/501", + "description": "See what's new in Core Audio for iOS and OS X. Be introduced to the powerful new APIs for managing audio buffers, files, and data formats. Learn how to incorporate views to facilitate switching between inter-app audio apps on iOS. Take an in depth look at how to tag Audio Units and utilize MIDI over Bluetooth LE.", + "title": "What's New in Core Audio", + "platforms": ["iOS", "macOS"], + "keywords": ["avaudioengine", "avfoundation", "av foundation", "core audio"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/501xxfo4d68h054/501/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/501xxfo4d68h054/501/501_whats_new_in_core_audio.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/501xxfo4d68h054/501/501_hd_whats_new_in_core_audio.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/501xxfo4d68h054/501/501_sd_whats_new_in_core_audio.mov", + "duration": 3460 + }, + "related": { + "activities": ["wwdc2016-507"] + } + }, { + "id": "wwdc2014-414", + "staticContentId": 869, + "eventContentId": 414, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/414", + "description": "Unit testing is an essential tool to consistently verify your code works correctly. Learn how Xcode 6 takes this to the next level with support for performance testing, baselining, and integration with Xcode bots to continually monitor your performance over time and devices.", + "title": "Testing in Xcode 6", + "platforms": ["iOS", "macOS"], + "keywords": ["metric", "ocunit", "xctest"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/414xx4l5du0f408/414/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/414xx4l5du0f408/414/414_testing_in_xcode_6.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/414xx4l5du0f408/414/414_hd_testing_in_xcode_6.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/414xx4l5du0f408/414/414_sd_testing_in_xcode_6.mov", + "duration": 2868 + }, + "related": { + "activities": ["wwdc2017-414"] + } + }, { + "id": "wwdc2014-412", + "staticContentId": 871, + "eventContentId": 412, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/412", + "description": "Your app deserves a global audience, and iOS, OS X, and Xcode 6 make it easy to design and test applications in multiple languages. Discover how you can easily add and manage localized content, preview and test with different languages, and export and import content for localizers to translate.", + "title": "Localizing with Xcode 6", + "platforms": ["iOS", "macOS"], + "keywords": ["assistant", "editor", "interface builder", "nsdateformatter", "nslocalizedstring", "nsnumberformatter", "preview", "storyboard", "translation", "xib", "xliff"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/412xx80au1lrfcn/412/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/412xx80au1lrfcn/412/412_localizing_with_xcode_6.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/412xx80au1lrfcn/412/412_hd_localizing_with_xcode_6.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/412xx80au1lrfcn/412/412_sd_localizing_with_xcode_6.mov", + "duration": 2991 + }, + "related": { + "activities": ["wwdc2016-232"] + } + }, { + "id": "wwdc2014-516", + "staticContentId": 896, + "eventContentId": 516, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/516", + "description": "The increasing complexity of modern web applications brings increased challenges to ensuring your web app is usable by everyone. Discover how accessibility benefits everyone, and why it's worth the effort. Learn advanced tips and techniques, and discover new developer tools for increasing productivity and avoiding common pitfalls.", + "title": "Improving the Accessibility and Usability of Complex Web Applications", + "platforms": ["iOS", "macOS"], + "keywords": ["accessible", "aria", "wcag"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/516xxanja9ziaar/516/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/516xxanja9ziaar/516/516_improving_the_accessibility_and_usability_of_complex_web_applications.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/516xxanja9ziaar/516/516_hd_improving_the_accessibility_and_usability_of_complex_web_applications.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/516xxanja9ziaar/516/516_sd_improving_the_accessibility_and_usability_of_complex_web_applications.mov", + "duration": 2469 + } + }, { + "id": "wwdc2014-415", + "staticContentId": 868, + "eventContentId": 415, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/415", + "description": "Xcode bots provide a seamless way to continually build, analyze, and test your applications across many devices. See the Xcode team show how to set up and configure bots, review unit and performance testing data, and set up custom triggers and integration points.", + "title": "Continuous Integration with Xcode 6", + "platforms": ["iOS", "macOS"], + "keywords": ["build", "git", "host", "scm", "server", "subversion", "svn", "swift", "unit test"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/415xx83xkyr55fj/415/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/415xx83xkyr55fj/415/415_continuous_integration_with_xcode_6.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/415xx83xkyr55fj/415/415_hd_continuous_integration_with_xcode_6.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/415xx83xkyr55fj/415/415_sd_continuous_integration_with_xcode_6.mov", + "duration": 2396 + } + }, { + "id": "wwdc2014-417", + "staticContentId": 881, + "eventContentId": 417, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/417", + "description": "The Apple LLVM compiler continues to evolve, with support for 64-bit iOS products, powerful new optimizations, and other new features. Learn about some of the advanced technology that the compiler uses to increase the performance of your code, and get details on how to take advantage of the latest features in the compiler.", + "title": "What's New in LLVM", + "platforms": ["iOS", "macOS"], + "keywords": ["auto vectorization", "clang", "ftl", "instruments", "javascript", "jit", "loop", "pgo", "profile guided optimization"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/417xx2zsyyp8zcs/417/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/417xx2zsyyp8zcs/417/417_whats_new_in_llvm.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/417xx2zsyyp8zcs/417/417_hd_whats_new_in_llvm.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/417xx2zsyyp8zcs/417/417_sd_whats_new_in_llvm.mov", + "duration": 2864 + } + }, { + "id": "wwdc2014-708", + "staticContentId": 906, + "eventContentId": 708, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/708", + "description": "iOS 8 makes it possible for an iOS app to determine its precise indoor position in supported venues. Learn best practices on how your app can take advantage of indoor positioning. Discover how indoor positioning and iBeacon complement each other, and understand the best use cases for both technologies. As a venue, find out how you can get involved and signup to enable indoor positioning.", + "title": "Taking Core Location Indoors", + "platforms": ["iOS"], + "keywords": ["beacon", "corelocation", "core location", "fence", "fencing", "geofence", "geo-fence", "geofencing", "geo-fencing", "gps", "gps", "heroapp", "hero app", "location", "navigation", "position", "positioning", "proximity", "proximity", "ranging", "region", "region monitoring", "triangulation", "trilateration"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/708xxvfd08bdof2/708/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/708xxvfd08bdof2/708/708_taking_core_location_indoors.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/708xxvfd08bdof2/708/708_hd_taking_core_location_indoors.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/708xxvfd08bdof2/708/708_sd_taking_core_location_indoors.mov", + "duration": 1922 + } + }, { + "id": "wwdc2014-418", + "staticContentId": 885, + "eventContentId": 418, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/418", + "description": "Whether you're new to optimizing your app's performance or a seasoned veteran, learn about the new version of Instruments. See the new workflows, tools, and tips that will help you analyze and refine your app as it adopts the latest Apple technologies, including Swift and app extensions.", + "title": "Improving Your App with Instruments", + "platforms": ["iOS", "macOS"], + "keywords": ["allocations", "crash", "debug", "dtrace", "heap", "leaks", "memory", "page", "performance", "time profiler", "virtual memory", "zombies"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/418xxtihju1a7v4/418/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/418xxtihju1a7v4/418/418_improving_your_app_with_instruments.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/418xxtihju1a7v4/418/418_hd_improving_your_app_with_instruments.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/418xxtihju1a7v4/418/418_sd_improving_your_app_with_instruments.mov", + "duration": 3325 + } + }, { + "id": "wwdc2014-234", + "staticContentId": 866, + "eventContentId": 234, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/234", + "description": "Come hear the advancements in document handling in iOS 8. See how easy it is to use the new Document Picker UI. Learn how to share documents between apps, and even provide documents to other apps from your custom data store.", + "title": "Building a Document-based App", + "platforms": ["iOS"], + "keywords": ["extension", "file coordination", "file provider", "icloud", "nsdocument", "uidocument"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/234xxi5cismq5hn/234/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/234xxi5cismq5hn/234/234_building_a_document_based_app.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/234xxi5cismq5hn/234/234_hd_building_a_document_based_app.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/234xxi5cismq5hn/234/234_sd_building_a_document_based_app.mov", + "duration": 3041 + } + }, { + "id": "wwdc2014-227", + "staticContentId": 915, + "eventContentId": 227, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/227", + "description": "Developing apps for OS X Yosemite is easier than ever with new enhancements to Cocoa. Learn how to use these new tools and APIs to develop a modern OS X app. Explore what's now available in Cocoa and learn to harness and implement these key technologies to make your app at once totally modern and familiar to people using it on OS X Yosemite.", + "title": "Creating Modern Cocoa Apps", + "platforms": ["macOS"], + "keywords": ["appkit", "auto layout", "storyboard", "view controller"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/227xx1g0sa1mhjf/227/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/227xx1g0sa1mhjf/227/227_creating_modern_cocoa_apps.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/227xx1g0sa1mhjf/227/227_hd_creating_modern_cocoa_apps.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/227xx1g0sa1mhjf/227/227_sd_creating_modern_cocoa_apps.mov", + "duration": 2918 + }, + "related": { + "activities": ["wwdc2016-239"] + } + }, { + "id": "wwdc2014-508", + "staticContentId": 932, + "eventContentId": 508, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/508", + "description": "Learn about using manual controls to manipulate focus, exposure, and white balance. Take control of the camera's focus position, ISO, shutter speed, temperature, tint, and more. Learn how to use the new iOS 8 exposure bracketing API to enable powerful creative and computational photography applications. Discover view-level services for capturing audio and video on OS X.", + "title": "Camera Capture: Manual Controls", + "platforms": ["iOS"], + "keywords": ["avcaptureview", "avfoundation", "av foundation", "avkit"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/508xxfvaehrll14/508/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/508xxfvaehrll14/508/508_camera_capture_manual_controls.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/508xxfvaehrll14/508/508_hd_camera_capture_manual_controls.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/508xxfvaehrll14/508/508_sd_camera_capture_manual_controls.mov", + "duration": 3574 + } + }, { + "id": "wwdc2014-221", + "staticContentId": 918, + "eventContentId": 221, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/221", + "description": "Make your app stand out from the competition with a compelling, yet familiar, user interface, and custom controls that match your app's personality and effectively reveal it's key features. Learn advanced Core Animation techniques such as spring view animations, and see new visual effects such as blur and vibrancy and how they can give your apps a visual edge.", + "title": "Creating Custom iOS User Interfaces", + "platforms": ["iOS"], + "keywords": ["bezier", "draw", "dynamics", "layer", "shape", "uikit", "uiviewanimation", "uivisualeffect"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/221xxobzcm2j26x/221/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/221xxobzcm2j26x/221/221_creating_custom_ios_user_interfaces.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/221xxobzcm2j26x/221/221_hd_creating_custom_ios_user_interfaces.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/221xxobzcm2j26x/221/221_sd_creating_custom_ios_user_interfaces.mov", + "duration": 2833 + } + }, { + "id": "wwdc2014-232", + "staticContentId": 914, + "eventContentId": 232, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/232", + "description": "Building an advanced user interface with collection view requires a great design, careful code architecture, and often times a custom layout. Learn how the iTunes team used UICollectionView to deliver a new version of the iTunes Connect app with an updated user interface incorporating pinning headers, swipe to edit and reorder, and a manageable code-base.", + "title": "Advanced User Interfaces with Collection Views", + "platforms": ["iOS"], + "keywords": ["layout", "uikit"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/232xxz8gxpbstio/232/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/232xxz8gxpbstio/232/232_advanced_user_interfaces_with_collection_views.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/232xxz8gxpbstio/232/232_hd_advanced_user_interfaces_with_collection_views.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/232xxz8gxpbstio/232/232_sd_advanced_user_interfaces_with_collection_views.mov", + "duration": 3294 + } + }, { + "id": "wwdc2014-710", + "staticContentId": 846, + "eventContentId": 710, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/710", + "description": "People expect long battery life on both their iOS devices and Mac laptops and your apps play a vital role in ensuring long battery life. Get an overview of energy efficiency best practices and learn about new APIs in iOS and OS X that help you to minimize the energy impact of your code.", + "title": "Writing Energy Efficient Code, Part 1", + "platforms": ["iOS", "macOS"], + "keywords": ["battery", "networking", "power", "qos", "timers"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/710xxwwk9jiqtu2/710/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/710xxwwk9jiqtu2/710/710_writing_energy_efficient_code_part_1.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/710xxwwk9jiqtu2/710/710_hd_writing_energy_efficient_code_part_1.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/710xxwwk9jiqtu2/710/710_sd_writing_energy_efficient_code_part_1.mov", + "duration": 2964 + } + }, { + "id": "wwdc2014-419", + "staticContentId": 810, + "eventContentId": 419, + "eventId": "wwdc2014", + "webPermalink": "https://developer.apple.com/wwdc14/419", + "description": "Creating a responsive UI requires an understanding of Core Animation and how mobile GPUs work. Learn about the iOS rendering pipeline in Core Animation, the new UIVisualEffectView and how it utilizes the GPU. Find out about the available tools for profiling UI performance. See how to identify and fix performance issues on a variety of devices.", + "title": "Advanced Graphics and Animations for iOS Apps", + "platforms": ["iOS"], + "keywords": ["blur", "translucency", "uikit", "vibrancy"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/419xxli6f60a6bs/419/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/419xxli6f60a6bs/419/419_advanced_graphics_and_animation_performance.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/419xxli6f60a6bs/419/419_hd_advanced_graphics_and_animation_performance.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2014/419xxli6f60a6bs/419/419_sd_advanced_graphics_and_animation_performance.mov", + "duration": 2743 + } + }, { + "id": "wwdc2013-507", + "staticContentId": 1045, + "eventContentId": 507, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/507", + "description": "OpenGL is the foundation for GPU-accelerated graphics on OS X, enabling a broad range of applications including games, animation software, and imaging solutions. See how your apps can deliver incredible visuals and high performance using the OpenGL 4.1 Core Profile. Learn how to take advantage of multiple GPUs and access the computational capabilities of OpenCL.", + "title": "What’s New in OpenGL for OS X", + "platforms": ["macOS"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/507xax4xgxp9uuxl9i7y0emdv5ib/507/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/507xax4xgxp9uuxl9i7y0emdv5ib/507/507.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/507xax4xgxp9uuxl9i7y0emdv5ib/507/507-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/507xax4xgxp9uuxl9i7y0emdv5ib/507/507-SD.mov", + "duration": 3452 + } + }, { + "id": "wwdc2013-302", + "staticContentId": 989, + "eventContentId": 302, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/302", + "description": "Passbook is the easiest way for users to keep track of their boarding passes, event tickets, coupons and more. See how to streamline the process of adding multiple passes to Passbook in a single operation. Find out how to optimize location relevance using iBeacons. Learn about all of the improvements in Passbook that give you more control and flexibility in your passes.", + "title": "What’s New in Passbook", + "platforms": ["iOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/302xdx3xf65k8c0kkajsjy2mh9jj/302/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/302xdx3xf65k8c0kkajsjy2mh9jj/302/302.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/302xdx3xf65k8c0kkajsjy2mh9jj/302/302-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/302xdx3xf65k8c0kkajsjy2mh9jj/302/302-SD.mov", + "duration": 2932 + } + }, { + "id": "wwdc2013-508", + "staticContentId": 1044, + "eventContentId": 508, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/508", + "description": "OpenCL lets your application unleash the parallel computing power of modern GPUs and multicore CPUs. Learn how use OpenCL to accelerate a wide range of compute-intensive tasks found in applications today. Explore the tight integration between OpenCL and OpenGL and see how to tap into the full processing capabilities of the Mac.", + "title": "Working with OpenCL", + "platforms": ["macOS"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/508xax4xqkee4rd9rsmbb86dw5cu/508/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/508xax4xqkee4rd9rsmbb86dw5cu/508/508.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/508xax4xqkee4rd9rsmbb86dw5cu/508/508-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/508xax4xqkee4rd9rsmbb86dw5cu/508/508-SD.mov", + "duration": 3183 + } + }, { + "id": "wwdc2013-608", + "staticContentId": 1028, + "eventContentId": 608, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/608", + "description": "AV Foundation automatically selects appropriate audio and subtitle tracks in your media. Learn how media selection works and find out how to author media with accessibility features like subtitles and closed captions. Go beyond the basics to use AV Foundation for customizing subtitle appearance and presentation.", + "title": "Preparing and Presenting Media for Accessibility", + "platforms": ["iOS", "macOS"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/608xcx3xafjdvmnjpo5dzvou97r/608/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/608xcx3xafjdvmnjpo5dzvou97r/608/608.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/608xcx3xafjdvmnjpo5dzvou97r/608/608-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/608xcx3xafjdvmnjpo5dzvou97r/608/608-SD.mov", + "duration": 3527 + } + }, { + "id": "wwdc2013-203", + "staticContentId": 971, + "eventContentId": 203, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/203", + "description": "iOS 7 introduces many enhancements made to the Cocoa Touch frameworks that will accelerate your development time and improve your app’s user experience. Get an overview of the changes to UIKit and other system frameworks, and find out which sessions you won’t want to miss.", + "title": "What’s New in Cocoa Touch", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/203xex2xro3o27pyntvhsqsohil/203/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/203xex2xro3o27pyntvhsqsohil/203/203.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/203xex2xro3o27pyntvhsqsohil/203/203-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/203xex2xro3o27pyntvhsqsohil/203/203-SD.mov", + "duration": 2996 + } + }, { + "id": "wwdc2013-216", + "staticContentId": 984, + "eventContentId": 216, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/216", + "description": "Learn how to leverage your existing iOS codebase to bring applications to the Mac. UIKit on iOS and AppKit on the Mac share a common heritage and many similarities. Below both of them, sit many frameworks that are shared. Learn design patterns that will make the conversion easier, discover tips and tricks of the conversion process, and explore Mac-only technologies that are important to include.", + "title": "Bringing Your iOS Apps to OS X", + "platforms": ["iOS", "macOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/216xcx4x7if809qdggi7vcc/216/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/216xcx4x7if809qdggi7vcc/216/216.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/216xcx4x7if809qdggi7vcc/216/216-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/216xcx4x7if809qdggi7vcc/216/216-SD.mov", + "duration": 2893 + } + }, { + "id": "wwdc2013-209", + "staticContentId": 986, + "eventContentId": 209, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/209", + "description": "Improved battery life and system responsiveness are important features in OS X 10.9. Learn how App Nap helps your application become a good power citizen. This session will dive into the details of how App Nap works, explore the API to tell the system when your application has important work to be done, and learn techniques using Xcode and other tools to pinpoint high power usage.", + "title": "Improving Power Efficiency with App Nap", + "platforms": ["macOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/209xdx3xahizhph6dg8wk631i/209/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/209xdx3xahizhph6dg8wk631i/209/209.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/209xdx3xahizhph6dg8wk631i/209/209-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/209xdx3xahizhph6dg8wk631i/209/209-SD.mov", + "duration": 2721 + } + }, { + "id": "wwdc2013-404", + "staticContentId": 1000, + "eventContentId": 404, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/404", + "description": "Objective-C is continuing to evolve as a powerful object-oriented programming language. Technologies like Automatic Reference Counting let you build more robust and easier to maintain code. Modules make it easier than ever to reference framework classes. See how this new technology will help keep your project organized and how you can take advantage of it. Find out about all the newest features and improvements to Objective-C.", + "title": "Advances in Objective-C", + "platforms": ["iOS", "macOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/404xbx2xvp1eaaqonr8zokm/404/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/404xbx2xvp1eaaqonr8zokm/404/404.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/404xbx2xvp1eaaqonr8zokm/404/404-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/404xbx2xvp1eaaqonr8zokm/404/404-SD.mov", + "duration": 3262 + } + }, { + "id": "wwdc2013-502", + "staticContentId": 1041, + "eventContentId": 502, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/502", + "description": "Sprite Kit is a powerful graphics framework ready-made for developing 2D action games, platformers, puzzle games, and much more. Get introduced to the Sprite Kit API and learn key details about controlling and rendering sprites. Discover how to leverage built-in physics support to make animations look real, and learn about using particle systems to create essential game effects such as fire, snow, explosions, and smoke. This is the first of two must-attend sessions for all developers creating games for iOS or OS X.", + "title": "Introduction to Sprite Kit", + "platforms": ["iOS", "macOS"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/502xex3x2iwfiaeglpjw0mh54u/502/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/502xex3x2iwfiaeglpjw0mh54u/502/502.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/502xex3x2iwfiaeglpjw0mh54u/502/502-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/502xex3x2iwfiaeglpjw0mh54u/502/502-SD.mov", + "duration": 2586 + } + }, { + "id": "wwdc2013-504", + "staticContentId": 1047, + "eventContentId": 504, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/504", + "description": "Make your games even better by taking advantage of Game Center, Apple’s social gaming network. Learn about the latest additions to Game Center and enhancements to the Game Center user interface. Discover new techniques for tracking scores and expanding your leaderboards. Encourage interaction between your players by integrating challenges into your game.", + "title": "What’s New in Game Center", + "platforms": ["iOS", "macOS"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/504xbx3x55lc470bv6s8dk2lcg28/504/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/504xbx3x55lc470bv6s8dk2lcg28/504/504.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/504xbx3x55lc470bv6s8dk2lcg28/504/504-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/504xbx3x55lc470bv6s8dk2lcg28/504/504-SD.mov", + "duration": 3183 + } + }, { + "id": "wwdc2013-224", + "staticContentId": 1125, + "eventContentId": 224, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/224", + "description": "Effective use of the right data structures can make a big difference in the responsiveness of an app. Come learn about the performance characteristics of the Foundation collections, how to select one that best fits your needs, and how to design software to use them efficiently.", + "title": "Designing Code for Performance", + "platforms": ["iOS", "macOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/224xcx5x1y1yx8ra5jbmfyhf/224/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/224xcx5x1y1yx8ra5jbmfyhf/224/224.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/224xcx5x1y1yx8ra5jbmfyhf/224/224-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/224xcx5x1y1yx8ra5jbmfyhf/224/224-SD.mov", + "duration": 2906 + } + }, { + "id": "wwdc2013-407", + "staticContentId": 962, + "eventContentId": 407, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/407", + "description": "Xcode includes a powerful graphical debugger backed by the new, state-of-the-art LLDB debugging engine. Discover how you can detect and fix your performance problems earlier, configure advanced breakpoints, easily explore your variables within the editor, and take advantage of the new XPC debugging support built right into Xcode.", + "title": "Debugging with Xcode", + "platforms": ["iOS", "macOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/407xdx3xw3kl5xx1h5cs73sp/407/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/407xdx3xw3kl5xx1h5cs73sp/407/407.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/407xdx3xw3kl5xx1h5cs73sp/407/407-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/407xdx3xw3kl5xx1h5cs73sp/407/407-SD.mov", + "duration": 2677 + } + }, { + "id": "wwdc2013-223", + "staticContentId": 981, + "eventContentId": 223, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/223", + "description": "Choosing the right fonts and using them effectively are key to engaging your users. Gain a practical understanding of how fonts work in Text Kit, learn best practices for using system-provided and bundled fonts, and discover how to give users more control over their content with text styles.", + "title": "Using Fonts with Text Kit", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/223xex5xsgdfh1ergtjrqwoghbj/223/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/223xex5xsgdfh1ergtjrqwoghbj/223/223.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/223xex5xsgdfh1ergtjrqwoghbj/223/223-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/223xex5xsgdfh1ergtjrqwoghbj/223/223-SD.mov", + "duration": 3013 + } + }, { + "id": "wwdc2013-610", + "staticContentId": 1031, + "eventContentId": 610, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/610", + "description": "AV Foundation provides your application with access to the powerful camera imaging sensors built-in to all iOS devices. iOS 7 enables finer grained control over the capture format, support for zoom, built-in barcode recognition, and enhancements to autofocus. If your application uses the camera on iOS you want to attend.", + "title": "What’s new in Camera Capture", + "platforms": ["iOS"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/610xcx3xv9xjy916g3wzes0ze63/610/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/610xcx3xv9xjy916g3wzes0ze63/610/610.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/610xcx3xv9xjy916g3wzes0ze63/610/610-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/610xcx3xv9xjy916g3wzes0ze63/610/610-SD.mov", + "duration": 3520 + } + }, { + "id": "wwdc2013-702", + "staticContentId": 1022, + "eventContentId": 702, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/702", + "description": "XPC has been enhanced to make it even easier to design for robustness and efficiency. Learn how to save power by opportunistically scheduling long-running tasks, transferring large amounts of data with minimal overhead, and how to best compartmentalize your app.", + "title": "Efficient Design with XPC", + "platforms": ["macOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/702xfx2xmlrics5pyrjfwu2m/702/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/702xfx2xmlrics5pyrjfwu2m/702/702.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/702xfx2xmlrics5pyrjfwu2m/702/702-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/702xfx2xmlrics5pyrjfwu2m/702/702-SD.mov", + "duration": 2476 + } + }, { + "id": "wwdc2013-603", + "staticContentId": 1053, + "eventContentId": 603, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/603", + "description": "Dig deeper into the many enhancements and new features that Safari has added to Web Inspector. Learn how to use them for more advanced inspection, tweaking, profiling, and debugging of your web content on iOS and the Mac. If web technologies are at the core of your web, Mac, or iOS app, this session will show you how Web Inspector can help you get the results you want.", + "title": "Getting the Most Out of Web Inspector", + "platforms": ["iOS", "macOS"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/603xfx2xhszvvn0zgc1cbgx1j/603/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/603xfx2xhszvvn0zgc1cbgx1j/603/603.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/603xfx2xhszvvn0zgc1cbgx1j/603/603-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/603xfx2xhszvvn0zgc1cbgx1j/603/603-SD.mov", + "duration": 3427 + } + }, { + "id": "wwdc2013-613", + "staticContentId": 1010, + "eventContentId": 613, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/613", + "description": "iAd technologies built-in to iOS let you easily incorporate advertising into your app. Come to discover what’s new in the iAd Framework, multi-view banner strategies, effective integration with Storyboards, and more. You’ll walk away with actionable implementation best practices and the tactics necessary to ensure maximum ad performance.", + "title": "iAd Integration and Best Practices", + "platforms": ["iOS"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/613xfx4xp91m26w7iu790d3nx/613/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/613xfx4xp91m26w7iu790d3nx/613/613.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/613xfx4xp91m26w7iu790d3nx/613/613-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/613xfx4xp91m26w7iu790d3nx/613/613-SD.mov", + "duration": 2995 + } + }, { + "id": "wwdc2013-220", + "staticContentId": 980, + "eventContentId": 220, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/220", + "description": "Move beyond the basics and unlock the full power of Text Kit for advanced text handling in your apps. Understand how to use hit detection and pixel-perfect layout information for responding to user touches. Discover new text effects, including a sophisticated letterpress look, and dive deeper into the mechanics of Text Kit for displaying multi-page documents and custom layouts.", + "title": "Advanced Text Layouts and Effects with Text Kit", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/220xbx4xipaxfd1tggxuoib/220/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/220xbx4xipaxfd1tggxuoib/220/220.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/220xbx4xipaxfd1tggxuoib/220/220-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/220xbx4xipaxfd1tggxuoib/220/220-SD.mov", + "duration": 2999 + } + }, { + "id": "wwdc2013-600", + "staticContentId": 1008, + "eventContentId": 600, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/600", + "description": "Whether you publish a web site or embed web views in your Mac or iOS application, this is where you can learn about new and upcoming web technologies in Safari and WebKit. Find out how to take advantage of new HTML, CSS, and JavaScript capabilities to interact better with Apple devices and deliver a richer browsing experience for users.", + "title": "What’s New in Safari and WebKit for Web Developers", + "platforms": ["iOS", "macOS"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/600xbx2x3eaj3ryz3w5zw5gozz39/600/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/600xbx2x3eaj3ryz3w5zw5gozz39/600/600.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/600xbx2x3eaj3ryz3w5zw5gozz39/600/600-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/600xbx2x3eaj3ryz3w5zw5gozz39/600/600-SD.mov", + "duration": 3210 + } + }, { + "id": "wwdc2013-605", + "staticContentId": 1005, + "eventContentId": 605, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/605", + "description": "iBooks Author lets you use a drag-and-drop interface to create rich and immersive books for the iBookstore. Discover best practices for book design and asset preparation, and learn how to use the iBooks Author interface efficiently to develop your book. See how to enhance your book with rich media such as audio, video, and animations, plus get tips for testing your book before submitting it to the iBookstore.", + "title": "What’s New in iBooks Author", + "platforms": ["iOS", "macOS"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/605xfx2xbot31cme1uns8w647vsw/605/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/605xfx2xbot31cme1uns8w647vsw/605/605.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/605xfx2xbot31cme1uns8w647vsw/605/605-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/605xfx2xbot31cme1uns8w647vsw/605/605-SD.mov", + "duration": 3673 + } + }, { + "id": "wwdc2013-503", + "staticContentId": 1042, + "eventContentId": 503, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/503", + "description": "Dive into the practical workflow of developing a 2D adventure game using Sprite Kit. See how to get started, and learn about tools for optimizing image assets, creating particle systems, and building game levels. Understand how Sprite Kit integrates with your art pipeline and get expert guidance to share with your artists. Come away from the session with a fully functioning game in-hand and its code explained.", + "title": "Designing Games with Sprite Kit", + "platforms": ["iOS", "macOS"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/503xbx3xoaktjug4e05xvl04/503/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/503xbx3xoaktjug4e05xvl04/503/503.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/503xbx3xoaktjug4e05xvl04/503/503-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/503xbx3xoaktjug4e05xvl04/503/503-SD.mov", + "duration": 3697 + } + }, { + "id": "wwdc2013-709", + "staticContentId": 1017, + "eventContentId": 709, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/709", + "description": "The iOS and OS X keychains are designed to protect sensitive data such as passwords, keys, and credentials. Learn why the keychain provides more security than other methods of storing data, when it’s appropriate to use the keychain, and how to use the keychain for common tasks such as saving passwords and importing and exporting certificates in various formats.", + "title": "Protecting Secrets with the Keychain", + "platforms": ["iOS", "macOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/709xax3xiafkagts5jfa5705dx6/709/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/709xax3xiafkagts5jfa5705dx6/709/709.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/709xax3xiafkagts5jfa5705dx6/709/709-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/709xax3xiafkagts5jfa5705dx6/709/709-SD.mov", + "duration": 3278 + } + }, { + "id": "wwdc2013-601", + "staticContentId": 1009, + "eventContentId": 601, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/601", + "description": "Web Inspector is a powerful tool for understanding the behavior of your web site. Gain an overview of everything Web Inspector can do. Explore the user interface and learn about features that will make your life easier. Learn how to connect the Safari Web Inspector to your iPhone or iPad for on-device testing. Find out how to inspect, tweak, optimize, and debug the web content in your web, Mac, or iOS app.", + "title": "Getting to Know Web Inspector", + "platforms": ["iOS", "macOS"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/601xfx2xk7wrmhwsa5gao39ln/601/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/601xfx2xk7wrmhwsa5gao39ln/601/601.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/601xfx2xk7wrmhwsa5gao39ln/601/601-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/601xfx2xk7wrmhwsa5gao39ln/601/601-SD.mov", + "duration": 3163 + } + }, { + "id": "wwdc2013-417", + "staticContentId": 1034, + "eventContentId": 417, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/417", + "description": "The Automation technologies in OS X continue to improve with each release, and the new automation features of OS X provide great examples. Highlights include new notification actions and commands, built-in developer code-signing for AppleScript applets and droplets, and new innovative and versatile AppleScript Libraries that easily extend application and OS scripting functionality.", + "title": "OS X Automation Update", + "platforms": ["macOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/417xxx0oh4r99eed2hb1k3ce/417/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/417xxx0oh4r99eed2hb1k3ce/417/417.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/417xxx0oh4r99eed2hb1k3ce/417/417-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/417xxx0oh4r99eed2hb1k3ce/417/417-SD.mov", + "duration": 3243 + } + }, { + "id": "wwdc2013-606", + "staticContentId": 1030, + "eventContentId": 606, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/606", + "description": "AV Foundation is the recommended framework for working with time-based audiovisual media. Learn how to transition your QuickTime or QTKit based media app to AV Foundation and understand the key concepts underlying the modern media architecture of OS X. Explore how AV Kit makes it easy to play modern media in your OS X apps by providing view-level services for playback, standard navigation controls, chapter selection, and support for subtitles.", + "title": "Moving to AV Kit and AV Foundation", + "platforms": ["macOS"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/606xdx2xbp31zp28fdov8p0b6d/606/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/606xdx2xbp31zp28fdov8p0b6d/606/606.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/606xdx2xbp31zp28fdov8p0b6d/606/606-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/606xdx2xbp31zp28fdov8p0b6d/606/606-SD.mov", + "duration": 3540 + } + }, { + "id": "wwdc2013-501", + "staticContentId": 1043, + "eventContentId": 501, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/501", + "description": "The Game Controller framework in iOS 7 and OS X 10.9 enables games to integrate with physical game controllers and take advantage of exciting new modes of input. Learn how to add support for MFi game controllers with physical d-pads, buttons, triggers, joysticks, and more. Understand the approach for discovering and connecting to controllers and how to support both wireless and form-fitting controller types. See how to map physical controls to game inputs, and get expert advice about the best practices to follow in your titles.", + "title": "Integrating with Game Controllers", + "platforms": ["iOS", "macOS"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/501xdx2xat8ocml4nv7i08noe/501/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/501xdx2xat8ocml4nv7i08noe/501/501.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/501xdx2xat8ocml4nv7i08noe/501/501-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/501xdx2xat8ocml4nv7i08noe/501/501-SD.mov", + "duration": 2579 + } + }, { + "id": "wwdc2013-405", + "staticContentId": 961, + "eventContentId": 405, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/405", + "description": "The Interface Builder feature built into Xcode makes it easy to create world-class interfaces using a design canvas. Learn how to use storyboards to arrange the views of your app, and employ Auto Layout to ensure your design adapts to changes in screen size, orientation, and localization. See how to easily wire up connections between your beautiful UI and your implementation code using the Assistant editor.", + "title": "Interface Builder Core Concepts", + "platforms": ["iOS", "macOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/405xcx3x5ud6sopkxfqg7ikk/405/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/405xcx3x5ud6sopkxfqg7ikk/405/405.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/405xcx3x5ud6sopkxfqg7ikk/405/405-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/405xcx3x5ud6sopkxfqg7ikk/405/405-SD.mov", + "duration": 3102 + } + }, { + "id": "wwdc2013-301", + "staticContentId": 997, + "eventContentId": 301, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/301", + "description": "Business and education markets are a growing audience for iOS apps. With new capabilities in iOS 7 and a few key concepts you can fine tune your app to meet the needs of large organizations. Learn about data security, authentication, integration with enterprise systems, app configuration and customization, and the distribution options available to you. This session is not just for enterprise developers, but for all developers looking to extend their reach and get their apps in the hands of business professionals, educators, and students worldwide.", + "title": "Extending Your Apps for Enterprise and Education Use", + "platforms": ["iOS"], + "trackId": 3, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/301xcx2xzxf8qjdcu3y2k1itm/301/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/301xcx2xzxf8qjdcu3y2k1itm/301/301.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/301xcx2xzxf8qjdcu3y2k1itm/301/301-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/301xcx2xzxf8qjdcu3y2k1itm/301/301-SD.mov", + "duration": 2681 + } + }, { + "id": "wwdc2013-416", + "staticContentId": 1033, + "eventContentId": 416, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/416", + "description": "In a major update and enhancement to its native scripting language, OS X delivers a new plugin architecture for AppleScript, enabling easy development and access to custom sets of functions and methods. Each individual AppleScript Library, saved as an AppleScript script file, can publish its own scripting terminology, and contain dozens of routines written in native AppleScript or the incredibly powerful AppleScriptObjective-C. Scripting just got a whole lot better!", + "title": "Introducing AppleScript Libraries", + "platforms": ["macOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/416xxx3x90yhsjxfqfbi/416/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/416xxx3x90yhsjxfqfbi/416/416.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/416xxx3x90yhsjxfqfbi/416/416-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/416xxx3x90yhsjxfqfbi/416/416-SD.mov", + "duration": 3181 + } + }, { + "id": "wwdc2013-713", + "staticContentId": 1023, + "eventContentId": 713, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/713", + "description": "The Accelerate framework contains signal and image processing, matrix, and linear algebra computation. Learn about new signal and image processing functionality. Find out how you can use the Accelerate framework to achieve dramatic improvements in performance and energy consumption.", + "title": "The Accelerate Framework", + "platforms": ["iOS", "macOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/713xcx4xtaue02i1tvk0kpvarvo/713/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/713xcx4xtaue02i1tvk0kpvarvo/713/713.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/713xcx4xtaue02i1tvk0kpvarvo/713/713-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/713xcx4xtaue02i1tvk0kpvarvo/713/713-SD.mov", + "duration": 3199 + } + }, { + "id": "wwdc2013-109", + "staticContentId": 1188, + "eventContentId": 109, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/109", + "description": "Be among the first to see the unveiling of MARI on OS X, the supercharged 3D painting package coming to the Mac later this year, running on the next generation Mac Pro. Jack Greasley, The Foundry’s MARI Product Manager, will chart MARI's rapid rise from in-house studio tool to the film industry’s painting tool of choice. He will detail MARI's evolution, from its original conception during Weta Digital's visual effects work on Avatar to becoming a critical element in making countless blockbusters a reality. Then watch as Pixar character shading artist, Jonathan Hoffman, makes full use of the power of the next generation Mac Pro to demonstrate how MARI was used to help bring Monsters University to life. Please note that all attendees of the preceding session will be asked to leave the room before this session starts. Lunch will also be provided on this floor, so you can easily grab some food as you re-enter the room.", + "title": "Painting the Future", + "platforms": ["iOS", "macOS"], + "trackId": 4, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/109xxxjfr9zgakbgrzxk23n2/109/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/109xxxjfr9zgakbgrzxk23n2/109/109.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/109xxxjfr9zgakbgrzxk23n2/109/109-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/109xxxjfr9zgakbgrzxk23n2/109/109-SD.mov", + "duration": 3060 + } + }, { + "id": "wwdc2013-708", + "staticContentId": 1024, + "eventContentId": 708, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/708", + "description": "Multipeer Connectivity is a new networking framework that enables discovery of, and communication with, nearby devices. Learn the basics, hear about the best practices, and see how writing networking code can be easy, fun, and powerful.", + "title": "Nearby Networking with Multipeer Connectivity", + "platforms": ["iOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/708xbx3x7xusbzidl0j3acxest/708/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/708xbx3x7xusbzidl0j3acxest/708/708.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/708xbx3x7xusbzidl0j3acxest/708/708-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/708xbx3x7xusbzidl0j3acxest/708/708-SD.mov", + "duration": 2804 + } + }, { + "id": "wwdc2013-210", + "staticContentId": 979, + "eventContentId": 210, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/210", + "description": "Text Kit is the powerful new text engine and API in iOS 7, providing sophisticated text handling and typesetting capabilities. Learn about Text Kit and how easy it can be to manipulate text on the fly, adjust text attributes, and apply the power of Core Text with fewer lines of code.", + "title": "Introducing Text Kit", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/210xbx3xpg6jhh8okmc7zc8j89/210/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/210xbx3xpg6jhh8okmc7zc8j89/210/210.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/210xbx3xpg6jhh8okmc7zc8j89/210/210-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/210xbx3xpg6jhh8okmc7zc8j89/210/210-SD.mov", + "duration": 3281 + } + }, { + "id": "wwdc2013-406", + "staticContentId": 960, + "eventContentId": 406, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/406", + "description": "Auto Layout’s powerful constraint-based engine enables a single user interface to work beautifully on both iOS 6 and iOS 7, and respond dynamically to changes in the size of controls, rotation, or localization. See how the improvements to Auto Layout in Xcode 5 make it even easier to quickly build flexible, modern interfaces.", + "title": "Taking Control of Auto Layout in Xcode 5", + "platforms": ["iOS", "macOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/406xex3x90a7ka0kyhsfjxfqfbi/406/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/406xex3x90a7ka0kyhsfjxfqfbi/406/406.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/406xex3x90a7ka0kyhsfjxfqfbi/406/406-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/406xex3x90a7ka0kyhsfjxfqfbi/406/406-SD.mov", + "duration": 3276 + } + }, { + "id": "wwdc2013-414", + "staticContentId": 963, + "eventContentId": 414, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/414", + "description": "Learn how Xcode’s source control features can help you work more efficiently with your team, juggle numerous development branches, find and fix bugs, and better understand the history of your code with the Version editor.", + "title": "Understanding Source Control in Xcode", + "platforms": ["iOS", "macOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/414xdx5xbjc8ls04ewrox0a160i/414/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/414xdx5xbjc8ls04ewrox0a160i/414/414.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/414xdx5xbjc8ls04ewrox0a160i/414/414-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/414xdx5xbjc8ls04ewrox0a160i/414/414-SD.mov", + "duration": 2617 + } + }, { + "id": "wwdc2013-412", + "staticContentId": 965, + "eventContentId": 412, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/412", + "description": "Unit tests are great, but to get the most value from them you need to test continuously. Xcode bots make testing easy, as they automatically build, analyze, test, and archive your project in a repeatable manner. See the Xcode team give a start-to-finish demonstration of setting up the new continuous integration support in Xcode.", + "title": "Continuous Integration with Xcode 5", + "platforms": ["iOS", "macOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/412xdx4x6xpjownhu5d4as36/412/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/412xdx4x6xpjownhu5d4as36/412/412.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/412xdx4x6xpjownhu5d4as36/412/412-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/412xdx4x6xpjownhu5d4as36/412/412-SD.mov", + "duration": 2723 + } + }, { + "id": "wwdc2013-410", + "staticContentId": 967, + "eventContentId": 410, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/410", + "description": "Using memory responsibly can be the key to stability and ensuring a great user experience. Get a look at new memory tools and learn helpful patterns for dealing with common memory issues specific to reference counting in Objective-C.", + "title": "Fixing Memory Issues", + "platforms": ["iOS", "macOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/410xcx4x9x0ry3zbw3rzq14kx/410/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/410xcx4x9x0ry3zbw3rzq14kx/410/410.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/410xcx4x9x0ry3zbw3rzq14kx/410/410-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/410xcx4x9x0ry3zbw3rzq14kx/410/410-SD.mov", + "duration": 3523 + } + }, { + "id": "wwdc2013-207", + "staticContentId": 969, + "eventContentId": 207, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/207", + "description": "Core Data is a powerful way for your app to store data locally or in iCloud. Learn about the latest advancements in Core Data for iOS, OS X, and iCloud. We’ll examine changes to Core Data’s use of SQLite and discuss improvements for iCloud at length.", + "title": "What’s New in Core Data and iCloud", + "platforms": ["iOS", "macOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/207xdx3xbarjw2d2va5olp57qh8/207/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/207xdx3xbarjw2d2va5olp57qh8/207/207.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/207xdx3xbarjw2d2va5olp57qh8/207/207-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/207xdx3xbarjw2d2va5olp57qh8/207/207-SD.mov", + "duration": 3058 + } + }, { + "id": "wwdc2013-218", + "staticContentId": 974, + "eventContentId": 218, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/218", + "description": "View controllers now allow you to create custom transitions, giving you expanded control over your user interface. Learn how to take advantage of custom transitions by using powerful new animation APIs, explore changes with full screen layouts, and see how to use navigation controllers with collection views to create a truly immersive experience.", + "title": "Custom Transitions Using View Controllers", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/218xdx4xj2umojkv3e8dbk6i/218/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/218xdx4xj2umojkv3e8dbk6i/218/218.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/218xdx4xj2umojkv3e8dbk6i/218/218-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/218xdx4xj2umojkv3e8dbk6i/218/218-SD.mov", + "duration": 3211 + }, + "related": { + "activities": ["wwdc2016-216"] + } + }, { + "id": "wwdc2013-214", + "staticContentId": 976, + "eventContentId": 214, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/214", + "description": "UIKit provides powerful customization capabilities for iOS views and controls. Learn how to customize the look and feel of your app to embrace the new UI of iOS 7 and see how to effectively use tinting and images to create an immersive, high quality user experience.", + "title": "Customizing Your App’s Appearance for iOS 7", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/214xex3xkbq0z93doa6o31c0/214/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/214xex3xkbq0z93doa6o31c0/214/214.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/214xex3xkbq0z93doa6o31c0/214/214-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/214xex3xkbq0z93doa6o31c0/214/214-SD.mov", + "duration": 3338 + } + }, { + "id": "wwdc2013-226", + "staticContentId": 977, + "eventContentId": 226, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/226", + "description": "Users expect interesting animations and responsive interactions. Learn how to achieve this by making view controller transitions smooth, optimizing performance when using images, and harnessing customization APIs alongside new iOS 7 features.", + "title": "Implementing Engaging UI on iOS", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/226xbx5xinmlvbdabxux9k3kt/226/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/226xbx5xinmlvbdabxux9k3kt/226/226.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/226xbx5xinmlvbdabxux9k3kt/226/226-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/226xbx5xinmlvbdabxux9k3kt/226/226-SD.mov", + "duration": 2699 + } + }, { + "id": "wwdc2013-201", + "staticContentId": 982, + "eventContentId": 201, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/201", + "description": "Learn how UIKit has changed to create iOS 7’s new UI, both conceptually and practically. Join us in considering new approaches to your app’s design based on these principles and explore your newly expanded toolbox so you can bring those designs to life.", + "title": "Building User Interfaces for iOS 7", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/201xex2xxf5ynwnsgl/201/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/201xex2xxf5ynwnsgl/201/201.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/201xex2xxf5ynwnsgl/201/201-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/201xex2xxf5ynwnsgl/201/201-SD.mov", + "duration": 3169 + } + }, { + "id": "wwdc2013-303", + "staticContentId": 990, + "eventContentId": 303, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/303", + "description": "Implementing a rich Passbook experience requires coordination between your application, back end server and point of redemption. Hear how the Apple Store engineering team rolled out gift card passes used in the Apple Retail stores. Get best practice advice and pointers from the Passbook engineering team about how to avoid pitfalls during development to ensure your users get the most out of Passbook.", + "title": "Integrating Passbook into your Ecosystem", + "platforms": ["iOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/303xdx3xodi2951d3kopnrhlg/303/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/303xdx3xodi2951d3kopnrhlg/303/303.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/303xdx3xodi2951d3kopnrhlg/303/303-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/303xdx3xodi2951d3kopnrhlg/303/303-SD.mov", + "duration": 2945 + } + }, { + "id": "wwdc2013-308", + "staticContentId": 992, + "eventContentId": 308, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/308", + "description": "The App Store, Mac App Store and In-App Purchases support a wide range of business models to generate revenue from your digital products. Whether you offer a paid app or a free app with In-App Purchases, you need to protect yourself by verifying receipts for those purchases. Get all the details on how receipt validation is changing in iOS and hear best practices for combating fraud.", + "title": "Using Receipts to Protect Your Digital Sales", + "platforms": ["iOS", "macOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/308xex4x6ybggtlw4ztv0sg5btp/308/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/308xex4x6ybggtlw4ztv0sg5btp/308/308.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/308xex4x6ybggtlw4ztv0sg5btp/308/308-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/308xex4x6ybggtlw4ztv0sg5btp/308/308-SD.mov", + "duration": 2806 + } + }, { + "id": "wwdc2013-306", + "staticContentId": 994, + "eventContentId": 306, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/306", + "description": "iTunes Connect is critical element of deploying your app on the App Store. Hear about all the latest improvements including configuring Game Center options and new options for managing apps across teams. Take a deep dive into how you can dramatically improve your workflow for managing metadata, localization, app assets, and more.", + "title": "What’s New in iTunes Connect", + "platforms": ["iOS", "macOS"], + "trackId": 3, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/306xdx4xq2n1jhue4dfou0nemckj/306/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/306xdx4xq2n1jhue4dfou0nemckj/306/306.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/306xdx4xq2n1jhue4dfou0nemckj/306/306-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/306xdx4xq2n1jhue4dfou0nemckj/306/306-SD.mov", + "duration": 3354 + } + }, { + "id": "wwdc2013-402", + "staticContentId": 998, + "eventContentId": 402, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/402", + "description": "Apple continues to invest in the LLVM compiler technology, and that investment has been paying off in spades. Get details on the latest improvements to the compiler and static analyzer. See how to get the most out of these tools with settings in Xcode.", + "title": "What’s New in the LLVM Compiler", + "platforms": ["iOS", "macOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/402xdx2x3ccrfzk85j9dysimvsui/402/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/402xdx2x3ccrfzk85j9dysimvsui/402/402.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/402xdx2x3ccrfzk85j9dysimvsui/402/402-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/402xdx2x3ccrfzk85j9dysimvsui/402/402-SD.mov", + "duration": 3130 + } + }, { + "id": "wwdc2013-202", + "staticContentId": 1001, + "eventContentId": 202, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/202", + "description": "iOS offers unmatched accessibility support that you can use to reach a wider audience. Hear about the latest changes in GuidedAccess and VoiceOver and how you can take advantage of these technologies to help people with disabilities stay on task and get more value out of your app.", + "title": "Accessibility in iOS", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/202xdx2x47ezp1wein/202/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/202xdx2x47ezp1wein/202/202.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/202xdx2x47ezp1wein/202/202-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/202xdx2x47ezp1wein/202/202-SD.mov", + "duration": 2929 + } + }, { + "id": "wwdc2013-208", + "staticContentId": 1003, + "eventContentId": 208, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/208", + "description": "Join us for an in-depth tour of the stunning and completely re-imagined iOS 7. See how the principles that guided the new design made our apps more useful, simple and beautiful. Learn how you can take advantage of iOS 7 to create a deeper and more engaging user experience.", + "title": "What’s New in iOS User Interface Design", + "platforms": ["iOS"], + "trackId": 9, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/208xex3xyxmpz8s37fk59avul0c5/208/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/208xex3xyxmpz8s37fk59avul0c5/208/208.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/208xex3xyxmpz8s37fk59avul0c5/208/208-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/208xex3xyxmpz8s37fk59avul0c5/208/208-SD.mov", + "duration": 3562 + } + }, { + "id": "wwdc2013-711", + "staticContentId": 1027, + "eventContentId": 711, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/711", + "description": "AirPrint is the iOS and OS X printing system, a revolutionary printing architecture that makes printing easy for users and app developers. Learn all about AirPrint, how it has grown, and best practices for adding printing to iOS apps.", + "title": "Advances in AirPrint", + "platforms": ["iOS", "macOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/711xcx4x8yuutk8sady6t9f/711/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/711xcx4x8yuutk8sady6t9f/711/711.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/711xcx4x8yuutk8sady6t9f/711/711-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/711xcx4x8yuutk8sady6t9f/711/711-SD.mov", + "duration": 2477 + } + }, { + "id": "wwdc2013-310", + "staticContentId": 1016, + "eventContentId": 310, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/310", + "description": "Enrich the user experience in your apps by leveraging key iOS technologies in innovative ways. The Apple Store app engineering team will show you how they used Push Notifications, Core Location, Region Monitoring, and Bluetooth to create compelling product pickup and in-store experiences for their customers. Learn tips, tricks, and best practices, and see how you can also offer great experiences in your apps around event notifications, welcoming users to locations of interest, and enabling rich user interactions with their surroundings.", + "title": "Harnessing iOS to Create Magic in Your Apps", + "platforms": ["iOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/310xex5xg29dwip7fgthel9z2/310/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/310xex5xg29dwip7fgthel9z2/310/310.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/310xex5xg29dwip7fgthel9z2/310/310-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/310xex5xg29dwip7fgthel9z2/310/310-SD.mov", + "duration": 3025 + } + }, { + "id": "wwdc2013-714", + "staticContentId": 1019, + "eventContentId": 714, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/714", + "description": "Learn about new iOS and OS X privacy features and get details on new and updated APIs. Hear best practices for delivering great features and respecting your customers’ privacy.", + "title": "Protecting your Users’ Privacy", + "platforms": ["iOS", "macOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/714xbx5xcen10zkjl5f9sd8ys63/714/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/714xbx5xcen10zkjl5f9sd8ys63/714/714.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/714xbx5xcen10zkjl5f9sd8ys63/714/714-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/714xbx5xcen10zkjl5f9sd8ys63/714/714-SD.mov", + "duration": 2906 + } + }, { + "id": "wwdc2013-700", + "staticContentId": 1026, + "eventContentId": 700, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/700", + "description": "Learn about services that allow apps to interact with accessories. Understand your options for designing hardware solutions, including the latest on Wi-Fi, AirPlay, Bluetooth, and the Lightning connector.", + "title": "Designing Accessories for iOS and OS X", + "platforms": ["iOS", "macOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/700xcx2xuedgs1rni4qry1yumg/700/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/700xcx2xuedgs1rni4qry1yumg/700/700.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/700xcx2xuedgs1rni4qry1yumg/700/700-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/700xcx2xuedgs1rni4qry1yumg/700/700-SD.mov", + "duration": 2993 + } + }, { + "id": "wwdc2013-602", + "staticContentId": 1032, + "eventContentId": 602, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/602", + "description": "Core Audio is the professional-grade technology for playing, processing and recording audio on iOS. Learn how your apps can take advantage of the latest advances in Core Audio. Discover how to send and receive audio between multiple apps, allowing for advanced mixing, effects, and sound generation.", + "title": "What’s New in Core Audio for iOS", + "platforms": ["iOS"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/602xcx2xk6ipx0cusjryu1sx5eu/602/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/602xcx2xk6ipx0cusjryu1sx5eu/602/602.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/602xcx2xk6ipx0cusjryu1sx5eu/602/602-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/602xcx2xk6ipx0cusjryu1sx5eu/602/602-SD.mov", + "duration": 3570 + } + }, { + "id": "wwdc2013-101", + "staticContentId": 1036, + "eventContentId": 101, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/101", + "description": "WWDC 2013 Platforms State of the Union", + "title": "Platforms State of the Union", + "platforms": ["iOS", "macOS"], + "trackId": 4, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/101xex1x82z7rpszsw/101/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/101xex1x82z7rpszsw/101/101.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/101xex1x82z7rpszsw/101/101-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/101xex1x82z7rpszsw/101/101-SD.mov", + "duration": 5890 + } + }, { + "id": "wwdc2013-500", + "staticContentId": 1040, + "eventContentId": 500, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/500", + "description": "Scene Kit is a high-level Objective-C framework that enables your app to efficiently load, manipulate, and render 3D scenes. Check out what’s new in Scene Kit and understand how your apps can take advantage of the latest additions. Learn how to extend Scene Kit rendering with custom OpenGL shaders, see how to integrate morphing and skinning, and dive into advanced image effects.", + "title": "What’s New in Scene Kit", + "platforms": ["macOS"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/500xbx2xh3dv43mpm46sd0qzj8d0/500/ref.mov", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/500xbx2xh3dv43mpm46sd0qzj8d0/500/500-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/500xbx2xh3dv43mpm46sd0qzj8d0/500/500-SD.mov", + "duration": 2882 + } + }, { + "id": "wwdc2013-712", + "staticContentId": 1051, + "eventContentId": 712, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/712", + "description": "Your apps play a vital role in maximizing battery life. Learn how to use Power Tools and new APIs to write energy-efficient code. Find out if your app is using excessive CPU or timers, and how to adopt design patterns that will avoid these problems.", + "title": "Energy Best Practices", + "platforms": ["iOS", "macOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/712xax4xb4mh6prvqkesmm75/712/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/712xax4xb4mh6prvqkesmm75/712/712.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/712xax4xb4mh6prvqkesmm75/712/712-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/712xax4xb4mh6prvqkesmm75/712/712-SD.mov", + "duration": 2664 + } + }, { + "id": "wwdc2013-100", + "staticContentId": 1049, + "eventContentId": 100, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/100", + "description": "WWDC 2013 Keynote", + "title": "Keynote", + "platforms": ["iOS", "macOS"], + "trackId": 4, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/100xex1xb4fuo9xiu0/100/ref.mov", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/100xex1xb4fuo9xiu0/100/100-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/100xex1xb4fuo9xiu0/100/100-SD.mov", + "duration": 7118 + } + }, { + "id": "wwdc2013-509", + "staticContentId": 1054, + "eventContentId": 509, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/509", + "description": "Core Image lets you create incredible visual effects in your photo and video apps. Learn how to harness the new filters added in iOS 7 and OS X 10.9. Check out the seamless integration with OpenGL and OpenCL on the Mac. Understand recommended practices for using Core Image efficiently and see how to maximize its powerful features.", + "title": "Core Image Effects and Techniques", + "platforms": ["iOS", "macOS"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/509xbx5xydkscnk7eyuyj1qi/509/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/509xbx5xydkscnk7eyuyj1qi/509/509.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/509xbx5xydkscnk7eyuyj1qi/509/509-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/509xbx5xydkscnk7eyuyj1qi/509/509-SD.mov", + "duration": 3283 + } + }, { + "id": "wwdc2013-211", + "staticContentId": 970, + "eventContentId": 211, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/211", + "description": "Learn strategies to squeeze the best performance from Core Data, including concurrency, advanced fetch request options, text searching, and object model design considerations. Master Instruments to find out how to see what is really going on behind the scenes.", + "title": "Core Data Performance Optimization and Debugging", + "platforms": ["iOS", "macOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/211xcx3xeognrgah6anssirb/211/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/211xcx3xeognrgah6anssirb/211/211.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/211xcx3xeognrgah6anssirb/211/211-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/211xcx3xeognrgah6anssirb/211/211-SD.mov", + "duration": 2343 + } + }, { + "id": "wwdc2013-401", + "staticContentId": 959, + "eventContentId": 401, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/401", + "description": "Xcode has a wealth of features to help you be more productive than ever before. Join engineers from the Xcode team as they teach the basics of using Xcode, demonstrate power-user workflows, and help you get the most out of your development environment.", + "title": "Xcode Core Concepts", + "platforms": ["iOS", "macOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/401xbx2xq50gv7mqafyfdns2yhxl/401/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/401xbx2xq50gv7mqafyfdns2yhxl/401/401.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/401xbx2xq50gv7mqafyfdns2yhxl/401/401-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/401xbx2xq50gv7mqafyfdns2yhxl/401/401-SD.mov", + "duration": 3389 + } + }, { + "id": "wwdc2013-400", + "staticContentId": 958, + "eventContentId": 400, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/400", + "description": "Xcode is the development environment for creating amazing apps for OS X and iOS. Start the week by watching the Xcode team demonstrate the latest features and enhanced workflows in Xcode 5. This session is a great overview of the many in-depth Developer Tools topics covered at WWDC 2013.", + "title": "What’s New in Xcode 5", + "platforms": ["iOS", "macOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/400xex2xbskwa5bkxr17zihju9uf/400/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/400xex2xbskwa5bkxr17zihju9uf/400/400.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/400xex2xbskwa5bkxr17zihju9uf/400/400-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/400xex2xbskwa5bkxr17zihju9uf/400/400-SD.mov", + "duration": 3634 + } + }, { + "id": "wwdc2013-409", + "staticContentId": 964, + "eventContentId": 409, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/409", + "description": "Unit testing is an essential tool to consistently verify that your code works correctly. Learn how Xcode 5 makes it dramatically easier to create, edit, execute, and understand your tests.", + "title": "Testing in Xcode 5", + "platforms": ["iOS", "macOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/409xdx4x4adcwca5ok0rtsup0sg/409/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/409xdx4x4adcwca5ok0rtsup0sg/409/409.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/409xdx4x4adcwca5ok0rtsup0sg/409/409-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/409xdx4x4adcwca5ok0rtsup0sg/409/409-SD.mov", + "duration": 2974 + } + }, { + "id": "wwdc2013-403", + "staticContentId": 966, + "eventContentId": 403, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/403", + "description": "New account management features in Xcode 5 make it easier than ever to sign and package your app. Join Xcode engineers as they take a brand new project through to App Store submission. See how the new capabilities editor makes it simple to add iCloud, Passbook, and other features and entitlements entirely within the Xcode environment.", + "title": "From Zero to App Store in Xcode 5", + "platforms": ["iOS", "macOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/403xex2xoo3u74gemi4q9vhvs/403/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/403xex2xoo3u74gemi4q9vhvs/403/403.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/403xex2xoo3u74gemi4q9vhvs/403/403-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/403xex2xoo3u74gemi4q9vhvs/403/403-SD.mov", + "duration": 2675 + } + }, { + "id": "wwdc2013-413", + "staticContentId": 968, + "eventContentId": 413, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/413", + "description": "Dive deep into using LLDB via the terminal interface and within Xcode’s graphical debugger. See the latest features, improvements, and advanced techniques to help you track down bugs more efficiently than ever before.", + "title": "Advanced Debugging with LLDB", + "platforms": ["iOS", "macOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/413xdx5x97itb5ek4yex3r7/413/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/413xdx5x97itb5ek4yex3r7/413/413.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/413xdx5x97itb5ek4yex3r7/413/413-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/413xdx5x97itb5ek4yex3r7/413/413-SD.mov", + "duration": 3516 + } + }, { + "id": "wwdc2013-206", + "staticContentId": 972, + "eventContentId": 206, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/206", + "description": "UIKit Dynamics makes it easy to create animated view interactions and transitions to delight your users. Discover how animators and behaviors work by learning how to add subtle and meaningful dynamics to your app, making it stand out on the App Store.", + "title": "Getting Started with UIKit Dynamics", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/206xex2xws29m12p69m7s169q/206/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/206xex2xws29m12p69m7s169q/206/206.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/206xex2xws29m12p69m7s169q/206/206-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/206xex2xws29m12p69m7s169q/206/206-SD.mov", + "duration": 2874 + } + }, { + "id": "wwdc2013-221", + "staticContentId": 973, + "eventContentId": 221, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/221", + "description": "Go beyond the basics to learn how to combine dynamic behaviors to create rich interactions. Discover how to apply dynamics to view controllers, collection views, and your own view subclasses to create engaging layouts and transitions. Learn best practices to keep your app responsive and performing well.", + "title": "Advanced Techniques with UIKit Dynamics", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/221xex4xxohbllf4hblyngt/221/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/221xex4xxohbllf4hblyngt/221/221.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/221xex4xxohbllf4hblyngt/221/221-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/221xex4xxohbllf4hblyngt/221/221-SD.mov", + "duration": 3406 + }, + "related": { + "activities": ["wwdc2016-216"] + } + }, { + "id": "wwdc2013-222", + "staticContentId": 975, + "eventContentId": 222, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/222", + "description": "State Restoration makes for a seamless experience when people returns to your app. Find out what’s new in State Restoration and learn about new capabilities in iOS 7 to restore model objects, system view controllers, and discover techniques to transition smoothly when views may have changed while people have been using other apps.", + "title": "What’s New in State Restoration", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/222xbx4xitmr47hmc2ulz1tli4hv/222/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/222xbx4xitmr47hmc2ulz1tli4hv/222/222.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/222xbx4xitmr47hmc2ulz1tli4hv/222/222-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/222xbx4xitmr47hmc2ulz1tli4hv/222/222-SD.mov", + "duration": 3705 + } + }, { + "id": "wwdc2013-217", + "staticContentId": 978, + "eventContentId": 217, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/217", + "description": "UIScrollView is an important building block for constructing iOS interfaces. Join us for a tour of how scroll views are used in new and interesting ways across iOS 7 to create stunning interactions. Learn tips and tricks for using scroll views to create immersive effects in your apps.", + "title": "Exploring Scroll Views on iOS 7", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/217xex4xi4ws3f5wrv3w2wkh/217/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/217xex4xi4ws3f5wrv3w2wkh/217/217.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/217xex4xi4ws3f5wrv3w2wkh/217/217-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/217xex4xi4ws3f5wrv3w2wkh/217/217-SD.mov", + "duration": 3591 + } + }, { + "id": "wwdc2013-205", + "staticContentId": 987, + "eventContentId": 205, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/205", + "description": "Cocoa is a powerful set of frameworks on which OS X is built. Gain an overview of the advances in AppKit, Foundation, and related frameworks. Find out what technologies you need to focus on and what techniques you should adopt to develop state of the art apps for OS X.", + "title": "What’s New in Cocoa", + "platforms": ["macOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/205xbx2xfbtmyu1l18h36mfqxmy/205/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/205xbx2xfbtmyu1l18h36mfqxmy/205/205.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/205xbx2xfbtmyu1l18h36mfqxmy/205/205-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/205xbx2xfbtmyu1l18h36mfqxmy/205/205-SD.mov", + "duration": 3323 + } + }, { + "id": "wwdc2013-307", + "staticContentId": 991, + "eventContentId": 307, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/307", + "description": "Core Location offers a variety of ways you can find out where your users are and when they are on the move. Hear an update on changes to Core Location and dive deep into the new world of beacon regions. Leveraging Bluetooth Low Energy, iBeacons open up a whole new dimension in region monitoring. Gain a practical understanding of how you can efficiently create beacon regions for important locations so your app can be alerted when users enter them, and techniques for detecting proximity to physical objects.", + "title": "What’s New in Core Location", + "platforms": ["iOS", "macOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/307xex4xl1ey243ksyxqfip0xowr/307/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/307xex4xl1ey243ksyxqfip0xowr/307/307.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/307xex4xl1ey243ksyxqfip0xowr/307/307-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/307xex4xl1ey243ksyxqfip0xowr/307/307-SD.mov", + "duration": 2911 + } + }, { + "id": "wwdc2013-305", + "staticContentId": 993, + "eventContentId": 305, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/305", + "description": "In-App Purchase continues to be a terrific mechanism for selling products, services and subscriptions directly from your app. Get all the details you need to implement a digital storefront in your OS X or iOS app. Hear how you can now take advantage of subscriptions in OS X and hear best practices for how to capitalize on selling digital products in your app.", + "title": "Using Store Kit for In-App Purchases", + "platforms": ["iOS", "macOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/305xbx4xqongltzvuja8xrmsrq1/305/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/305xbx4xqongltzvuja8xrmsrq1/305/305.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/305xbx4xqongltzvuja8xrmsrq1/305/305-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/305xbx4xqongltzvuja8xrmsrq1/305/305-SD.mov", + "duration": 2807 + } + }, { + "id": "wwdc2013-204", + "staticContentId": 995, + "eventContentId": 204, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/204", + "description": "It’s critical to keep people’s content as up to date as possible. Learn how new APIs in iOS 7 will let your applications fetch new data in the background to keep people up to date. See techniques you can use to perform operations in the background without draining the user’s battery. Understand how you can keep your app’s snapshot up to date so users see the latest content in the new multitasking interface in iOS 7. All these techniques will let you build an app that feels alive and always up to date.", + "title": "What’s New with Multitasking", + "platforms": ["iOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/204xex2xvpdncz9kdb17lmfooh/204/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/204xex2xvpdncz9kdb17lmfooh/204/204.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/204xex2xvpdncz9kdb17lmfooh/204/204-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/204xex2xvpdncz9kdb17lmfooh/204/204-SD.mov", + "duration": 3155 + } + }, { + "id": "wwdc2013-300", + "staticContentId": 996, + "eventContentId": 300, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/300", + "description": "Learn about an exciting new approach to managing Apple devices in an enterprise environment. Learn how MDM can be used to wirelessly configure settings, monitor compliance with policies, install apps, and remotely wipe devices, and how these capabilities can be integrated with in-house or third-party server solutions.", + "title": "Managing Apple Devices", + "platforms": ["iOS", "macOS"], + "trackId": 3, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/300xdx2xem8o4pmrhvraq9ty76/300/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/300xdx2xem8o4pmrhvraq9ty76/300/300.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/300xdx2xem8o4pmrhvraq9ty76/300/300-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/300xdx2xem8o4pmrhvraq9ty76/300/300-SD.mov", + "duration": 3496 + } + }, { + "id": "wwdc2013-408", + "staticContentId": 999, + "eventContentId": 408, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/408", + "description": "The Apple LLVM compiler has evolved at a staggering pace, providing remarkably quick compile times and generating lightning-fast code. Hear from the experts on how LLVM technologies can help you write better code. Dive deep into specific techniques to see how you can produce the most efficient code possible.", + "title": "Optimize Your Code Using LLVM", + "platforms": ["iOS", "macOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/408xcx3x0l4e2phvin8xrhsn23/408/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/408xcx3x0l4e2phvin8xrhsn23/408/408.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/408xcx3x0l4e2phvin8xrhsn23/408/408-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/408xcx3x0l4e2phvin8xrhsn23/408/408-SD.mov", + "duration": 3133 + } + }, { + "id": "wwdc2013-200", + "staticContentId": 1002, + "eventContentId": 200, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/200", + "description": "Leveraging the industry-leading support for accessibility in OS X can let you reach new markets. Hear about exciting new products, new API additions and improved security for both accessibility hosts and clients; all designed to help applications reach wider audiences and provide unparalleled access for users with disabilities. Learn techniques to make even the most custom UI accessible.", + "title": "Accessibility in OS X", + "platforms": ["macOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/200xdx2x35e1pxiinm/200/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/200xdx2x35e1pxiinm/200/200.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/200xdx2x35e1pxiinm/200/200-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/200xdx2x35e1pxiinm/200/200-SD.mov", + "duration": 2397 + } + }, { + "id": "wwdc2013-225", + "staticContentId": 1004, + "eventContentId": 225, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/225", + "description": "Designing a great user interface for your iOS app requires tremendous care, creativity, continual iteration, and a solid understanding of platform conventions and UI design best practices. Learn techniques to avoid common UI pitfalls and gain key insights into what it takes to create an app that is intuitive and beautiful.", + "title": "Best Practices for Great iOS UI Design", + "platforms": ["iOS"], + "trackId": 9, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/225xex5xkk51ehr0z54gd9kt/225/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/225xex5xkk51ehr0z54gd9kt/225/225.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/225xex5xkk51ehr0z54gd9kt/225/225-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/225xex5xkk51ehr0z54gd9kt/225/225-SD.mov", + "duration": 3186 + } + }, { + "id": "wwdc2013-304", + "staticContentId": 1011, + "eventContentId": 304, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/304", + "description": "Learn about the latest improvements to Map Kit, including end-to-end directions and customized map view callouts. Find out how you can snapshot maps in various ways to optimize your content or use maps in new ways. And now, Map Kit is also available for OS X, so you explore how to enhance your Mac apps with maps.", + "title": "What’s New in Map Kit", + "platforms": ["iOS", "macOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/304xex4x7qun15qmlzgf1s39fn08/304/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/304xex4x7qun15qmlzgf1s39fn08/304/304.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/304xex4x7qun15qmlzgf1s39fn08/304/304-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/304xex4x7qun15qmlzgf1s39fn08/304/304-SD.mov", + "duration": 2730 + } + }, { + "id": "wwdc2013-309", + "staticContentId": 1012, + "eventContentId": 309, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/309", + "description": "iOS 6 introduced a 3D view in Maps and now your app can take advantage of this view as well using Map Kit. Dive deep into how to use 3D mode for Map Views and how you can use it to build dramatic cinematic views to engage your users. Understand how to control the viewport in order to look at specific points on a map from particular angles and how to work with annotations in 3D. See how you can create snapshot of map views for flexibility and performance.", + "title": "Putting Map Kit in Perspective", + "platforms": ["iOS", "macOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/309xdx4x891fj1ing58e5cayt1z/309/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/309xdx4x891fj1ing58e5cayt1z/309/309.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/309xdx4x891fj1ing58e5cayt1z/309/309-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/309xdx4x891fj1ing58e5cayt1z/309/309-SD.mov", + "duration": 3082 + } + }, { + "id": "wwdc2013-705", + "staticContentId": 1020, + "eventContentId": 705, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/705", + "description": "The Foundation networking APIs provide powerful networking solutions for your app. Learn about the new NSURLSession API that lets you do out-of-process networking and configuration options. Learn how to create a NSNetService based server. Learn the best practices for HTTP authentication, proxies, and scheduling.", + "title": "What’s New in Foundation Networking", + "platforms": ["iOS", "macOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/705xbx3xcjsmrdbtwl5grta6gq6r/705/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/705xbx3xcjsmrdbtwl5grta6gq6r/705/705.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/705xbx3xcjsmrdbtwl5grta6gq6r/705/705-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/705xbx3xcjsmrdbtwl5grta6gq6r/705/705-SD.mov", + "duration": 2981 + } + }, { + "id": "wwdc2013-703", + "staticContentId": 1025, + "eventContentId": 703, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/703", + "description": "Core Bluetooth and Bluetooth Low Energy enable a new category of Bluetooth accessories which have an incredibly long battery life. With CoreBluetooth, iOS apps can talk with shoes to find out how far they’ve run and jumped, make toys come to life, fly a paper airplane, find car keys and remote controls, open a door lock, and find out why a check engine light is on. Learn what’s new in CoreBluetooth and the new ways that iOS apps can interact with Bluetooth Low Energy accessories.", + "title": "Core Bluetooth", + "platforms": ["iOS", "macOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/703xcx2xljtlq481grxurla4/703/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/703xcx2xljtlq481grxurla4/703/703.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/703xcx2xljtlq481grxurla4/703/703-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/703xcx2xljtlq481grxurla4/703/703-SD.mov", + "duration": 3263 + } + }, { + "id": "wwdc2013-415", + "staticContentId": 1038, + "eventContentId": 415, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/415", + "description": "When you have a problem, there are numerous avenues to get help, from communicating with Apple to reaching out to your fellow developers for their advice. Gain insight from Apple engineers into how your bug reports make a difference in the software we ship. Understand the different ways you can help us help you with your questions about shipping your apps on the App Store, getting Technical Support, or how to make the most out of seed releases.", + "title": "Maximizing Apple Development Resources", + "platforms": ["iOS", "macOS"], + "trackId": 5, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/415xdx5x0wygxidaf0ifiey/415/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/415xdx5x0wygxidaf0ifiey/415/415.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/415xdx5x0wygxidaf0ifiey/415/415-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/415xdx5x0wygxidaf0ifiey/415/415-SD.mov", + "duration": 3043 + } + }, { + "id": "wwdc2013-505", + "staticContentId": 1046, + "eventContentId": 505, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/505", + "description": "OpenGL ES provides access to the exceptional graphics power of iOS devices. See how the innovations in iOS 7 deliver incredible graphics in games and other mobile 3D applications. Learn about advanced effects enabled by the latest extensions, and get specific tips and best practices to follow in your apps.", + "title": "Advances in OpenGL ES", + "platforms": ["iOS"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/505xbx4xrgmhwby4oiwkrpp/505/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/505xbx4xrgmhwby4oiwkrpp/505/505.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/505xbx4xrgmhwby4oiwkrpp/505/505-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/505xbx4xrgmhwby4oiwkrpp/505/505-SD.mov", + "duration": 3506 + } + }, { + "id": "wwdc2013-506", + "staticContentId": 1048, + "eventContentId": 506, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/506", + "description": "Turn-based gaming has taken off with the addition of asynchronous multiplayer gaming in Game Center. Dive into the latest developments in turn-based play. See how to add in-game trading, player chat, negotiations, and much more by using exchanges. Learn about the API and gain insight into managing game states and multiple game sessions.", + "title": "Turn-Based Gaming with Game Center", + "platforms": ["iOS", "macOS"], + "trackId": 8, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/506xbx4x8brixcxa41wrzgph0gw/506/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/506xbx4x8brixcxa41wrzgph0gw/506/506.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/506xbx4x8brixcxa41wrzgph0gw/506/506-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/506xbx4x8brixcxa41wrzgph0gw/506/506-SD.mov", + "duration": 3566 + } + }, { + "id": "wwdc2013-704", + "staticContentId": 1114, + "eventContentId": 704, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/704", + "description": "Apps on OS X must share a common pool of system resources. Learn the tips and tools for making the best use of these shared resources to improve both your performance and the performance of your user’s systems. See how to investigate your app’s impact on system memory use and disk I/O, and learn techniques for doing work in the background without impacting performance.", + "title": "Building Efficient OS X Apps", + "platforms": ["macOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/704xcx2xrmodatdtgs6nf5w4/704/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/704xcx2xrmodatdtgs6nf5w4/704/704.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/704xcx2xrmodatdtgs6nf5w4/704/704-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/704xcx2xrmodatdtgs6nf5w4/704/704-SD.mov", + "duration": 3410 + } + }, { + "id": "wwdc2013-701", + "staticContentId": 1115, + "eventContentId": 701, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/701", + "description": "Helping users get the most out of their battery is a cornerstone of modern application development. Join Vice President of Software Technology, Bud Tribble, and get a rare tour through the latest energy-efficient Apple hardware, learn about new features and API in OS X that help prolong battery life, and discover how your app can become even more energy efficient by adopting the latest best practices and API.", + "title": "Maximizing Battery Life on OS X", + "platforms": ["macOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/701xbx2xqblo39z6tpbdrcz/701/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/701xbx2xqblo39z6tpbdrcz/701/701.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/701xbx2xqblo39z6tpbdrcz/701/701-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/701xbx2xqblo39z6tpbdrcz/701/701-SD.mov", + "duration": 2741 + } + }, { + "id": "wwdc2013-228", + "staticContentId": 1142, + "eventContentId": 228, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/228", + "description": "Learn from the experts about the Cocoa and Cocoa Touch classes you may not even know exist, as well as some very obscure but extremely valuable classes that are favorites of the presenters.", + "title": "Hidden Gems in Cocoa and Cocoa Touch", + "platforms": ["iOS", "macOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/228xax5xif2s7s53df5ffjfao2/228/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/228xax5xif2s7s53df5ffjfao2/228/228.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/228xax5xif2s7s53df5ffjfao2/228/228-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/228xax5xif2s7s53df5ffjfao2/228/228-SD.mov", + "duration": 3237 + } + }, { + "id": "wwdc2013-611", + "staticContentId": 1006, + "eventContentId": 611, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/611", + "description": "iAd Producer’s visual design approach belies its advanced customization and development capabilities. We’ll go beyond drag-and-drop to discover powerful iAd JS classes, show you how to create dynamic data-driven objects, and demonstrate debugging and performance optimization techniques you can use right away.", + "title": "Building Advanced iBooks HTML 5 Widgets and iAd Rich Media Ads", + "platforms": ["iOS", "macOS"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/611xfx3x2l2zzkb2oaovson/611/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/611xfx3x2l2zzkb2oaovson/611/611.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/611xfx3x2l2zzkb2oaovson/611/611-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/611xfx3x2l2zzkb2oaovson/611/611-SD.mov", + "duration": 2993 + } + }, { + "id": "wwdc2013-607", + "staticContentId": 1007, + "eventContentId": 607, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/607", + "description": "People want a great web experience that doesn’t drain their battery and provides the ultimate in scrolling responsiveness. Find out how you can tune your content for optimum performance and efficiency. Learn how to work with Safari techniques and web features that help you save power. Discover how to get the smoothest possible scrolling for your content.", + "title": "Power and Performance: Optimizing Your Website for Great Battery Life and Responsive Scrolling", + "platforms": ["iOS", "macOS"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/607xfx3xox1jscc7z24fl2jf4mf/607/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/607xfx3xox1jscc7z24fl2jf4mf/607/607.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/607xfx3xox1jscc7z24fl2jf4mf/607/607-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/607xfx3xox1jscc7z24fl2jf4mf/607/607-SD.mov", + "duration": 2880 + } + }, { + "id": "wwdc2013-213", + "staticContentId": 988, + "eventContentId": 213, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/213", + "description": "Smooth animations and great performance are key to developing a state of the art app. Learn best practices when using animations with Auto Layout, see unique animations in OS X and understand how to create similar effects in your apps, and gain insight into common pitfalls.", + "title": "Best Practices for Cocoa Animation", + "platforms": ["macOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/213xax3xr33a8oxfsxg8bha/213/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/213xax3xr33a8oxfsxg8bha/213/213.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/213xax3xr33a8oxfsxg8bha/213/213-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/213xax3xr33a8oxfsxg8bha/213/213-SD.mov", + "duration": 2859 + } + }, { + "id": "wwdc2013-219", + "staticContentId": 983, + "eventContentId": 219, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/219", + "description": "Making your app support users in multiple countries and languages is easy with the built-in power of iOS and OS X. Walk through the basics of internationalization and localization, gain insight into common pitfalls, and learn best practices when targeting an international audience.", + "title": "Making Your App World-Ready", + "platforms": ["iOS", "macOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/219xax4xjor8i6b9h77lafay32/219/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/219xax4xjor8i6b9h77lafay32/219/219.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/219xax4xjor8i6b9h77lafay32/219/219-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/219xax4xjor8i6b9h77lafay32/219/219-SD.mov", + "duration": 3510 + } + }, { + "id": "wwdc2013-215", + "staticContentId": 985, + "eventContentId": 215, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/215", + "description": "Creating a responsive app requires fast drawing and smooth scrolling. Discover techniques to optimize drawing, find out best practices for handling layers, and learn how to combine those techniques with new features to achieve smooth scrolling.", + "title": "Optimizing Drawing and Scrolling on OS X", + "platforms": ["macOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/215xax3xz5pbbxeaxxe7z1mk3q/215/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/215xax3xz5pbbxeaxxe7z1mk3q/215/215.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/215xax3xz5pbbxeaxxe7z1mk3q/215/215-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/215xax3xz5pbbxeaxxe7z1mk3q/215/215-SD.mov", + "duration": 2909 + } + }, { + "id": "wwdc2013-612", + "staticContentId": 1029, + "eventContentId": 612, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/612", + "description": "AV Foundation provides powerful services for editing video and audio in your iOS or OS X apps. See the tremendous control and flexibility AV Foundation offers. Learn how custom compositors create new possibilities for advanced transitions and effects. Gain expert insight into best practices for integrating compositions into your app and working with audio mixes.", + "title": "Advanced Editing with AV Foundation", + "platforms": ["iOS", "macOS"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/612xax4xx65z1ervy5np1qb/612/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/612xax4xx65z1ervy5np1qb/612/612.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/612xax4xx65z1ervy5np1qb/612/612-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/612xax4xx65z1ervy5np1qb/612/612-SD.mov", + "duration": 1907 + } + }, { + "id": "wwdc2013-614", + "staticContentId": 1037, + "eventContentId": 614, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/614", + "description": "Learn how to prepare your website for push notifications. See how to sign up your users to receive notifications even when your site is not running in Safari. Find out about best practices for managing notifications across both the web and your applications.", + "title": "Implementing OS X Push Notifications for Websites", + "platforms": ["iOS", "macOS"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/614xax5x602jmihlq4c4edtrl/614/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/614xax5x602jmihlq4c4edtrl/614/614.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/614xax5x602jmihlq4c4edtrl/614/614-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/614xax5x602jmihlq4c4edtrl/614/614-SD.mov", + "duration": 2764 + } + }, { + "id": "wwdc2013-615", + "staticContentId": 1052, + "eventContentId": 615, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/615", + "description": "Introducing a new Objective-C API to JavaScriptCore. iOS developers can now integrate scripting into their apps without having to bundle custom language interpreters. This API builds on top of the existing C API to JavaScriptCore available on Mac, and makes programming with JavaScript much easier and less error-prone.", + "title": "Integrating JavaScript into Native Apps", + "platforms": ["iOS", "macOS"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/615xax5xpcdns8jyhaiszkz2p/615/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/615xax5xpcdns8jyhaiszkz2p/615/615.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/615xax5xpcdns8jyhaiszkz2p/615/615-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/615xax5xpcdns8jyhaiszkz2p/615/615-SD.mov", + "duration": 2427 + } + }, { + "id": "wwdc2013-227", + "staticContentId": 1126, + "eventContentId": 227, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/227", + "description": "Working with dates and times can be tricky and yet it’s vital that they’re handled correctly. Simple date calculations can be surprisingly challenging and getting the calculations right in every case isn’t easy. Hear about new APIs that simplify common operations and best practices for handling common tasks correctly.", + "title": "Solutions to Common Date and Time Challenges", + "platforms": ["macOS"], + "trackId": 6, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/227xax5xif2s7s531dsmfs1afo2/227/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/227xax5xif2s7s531dsmfs1afo2/227/227.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/227xax5xif2s7s531dsmfs1afo2/227/227-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/227xax5xif2s7s531dsmfs1afo2/227/227-SD.mov", + "duration": 3355 + } + }, { + "id": "wwdc2013-609", + "staticContentId": 1013, + "eventContentId": 609, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/609", + "description": "iAd Producer’s drag-and-drop interface makes it easy to deliver highly interactive iAd rich media ads, iBooks Author HTML5 widgets, and more. Discover how the refined environment for actions and objects, an expanded library of customizable interactive objects, integration of iAd Blueprints, and widget templates increase your efficiencies and creative possibilities.", + "title": "Introduction to iBooks Author Widget and iAd Rich Media Ad Development with iAd Producer 4", + "platforms": ["iOS", "macOS"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/609xfx3xpwcil5bz8h6ot4f871/609/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/609xfx3xpwcil5bz8h6ot4f871/609/609.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/609xfx3xpwcil5bz8h6ot4f871/609/609-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/609xfx3xpwcil5bz8h6ot4f871/609/609-SD.mov", + "duration": 2665 + } + }, { + "id": "wwdc2013-710", + "staticContentId": 1018, + "eventContentId": 710, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/710", + "description": "Discover how you can use App Sandbox to protect your app’s users from unintentional bugs or deliberate attempts to compromise security. Understand sandboxing’s security goals, how applications and their data are isolated from each other, and how to express the resources your application needs. Learn about App Sandbox-related APIs and entitlements, and how to adopt them for your app to meet the Mac App Store Guidelines.", + "title": "A Practical Guide to the App Sandbox", + "platforms": ["macOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/710xfx3xn8197k4i9s2rvyb/710/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/710xfx3xn8197k4i9s2rvyb/710/710.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/710xfx3xn8197k4i9s2rvyb/710/710-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/710xfx3xn8197k4i9s2rvyb/710/710-SD.mov" + } + }, { + "id": "wwdc2013-707", + "staticContentId": 1021, + "eventContentId": 707, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/707", + "description": "OS X Kernel Extensions are used to deliver device drivers and other kernel-level support software. Learn what is new with Kext development, including how to sign your kext, how to use lldb for kernel debugging, and how to build and deploy kexts for multiple releases of OS X.", + "title": "What’s New in Kext Development", + "platforms": ["macOS"], + "trackId": 7, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/707xfx3xysb4yyrvtxbbu6t9fono/707/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/707xfx3xysb4yyrvtxbbu6t9fono/707/707.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/707xfx3xysb4yyrvtxbbu6t9fono/707/707-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/707xfx3xysb4yyrvtxbbu6t9fono/707/707-SD.mov", + "duration": 3143 + } + }, { + "id": "wwdc2013-604", + "staticContentId": 1014, + "eventContentId": 604, + "eventId": "wwdc2013", + "webPermalink": "https://developer.apple.com/wwdc13/604", + "description": "Powered by iAd, iAd Workbench makes it easy to create and manage mobile campaigns optimized to drive downloads of your app. Learn the entire workflow for promoting app downloads from selection of an Apple designed or custom banner to reviewing an active campaign and optimizing for performance.", + "title": "Introducing iAd Workbench, The Best Way to Market Your App", + "platforms": ["iOS", "macOS"], + "trackId": 1, + "type": "Session", + "images": ["square", "wide"], + "media": { + "hls": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/604xfx2xl2ujhx7vffbjmtqu2t/604/ref.mov", + "slides": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/604xfx2xl2ujhx7vffbjmtqu2t/604/604.pdf", + "downloadHD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/604xfx2xl2ujhx7vffbjmtqu2t/604/604-HD.mov", + "downloadSD": "https://devstreaming-cdn.apple.com/videos/wwdc/2013/604xfx2xl2ujhx7vffbjmtqu2t/604/604-SD.mov", + "duration": 2238 + } + }], + "rooms": [{ + "name": "Hall 3", + "ordinal": 0, + "id": 63, + "regionId": 273 + }, { + "name": "Hall 2", + "ordinal": 1, + "id": 62, + "regionId": 272 + }, { + "name": "Executive Ballroom", + "ordinal": 2, + "id": 66, + "regionId": 271 + }, { + "name": "Grand Ballroom A", + "ordinal": 3, + "id": 64, + "regionId": 277 + }, { + "name": "Grand Ballroom B", + "ordinal": 4, + "id": 65, + "regionId": 276 + }, { + "name": "Technology Lab A", + "ordinal": 5, + "id": 67, + "regionId": 214 + }, { + "name": "Technology Lab B", + "ordinal": 6, + "id": 68, + "regionId": 215 + }, { + "name": "Technology Lab C", + "ordinal": 7, + "id": 69, + "regionId": 216 + }, { + "name": "Technology Lab D", + "ordinal": 8, + "id": 70, + "regionId": 217 + }, { + "name": "Technology Lab E", + "ordinal": 9, + "id": 71, + "regionId": 218 + }, { + "name": "Technology Lab F", + "ordinal": 10, + "id": 72, + "regionId": 213 + }, { + "name": "Technology Lab G", + "ordinal": 11, + "id": 73, + "regionId": 212 + }, { + "name": "Technology Lab H", + "ordinal": 12, + "id": 74, + "regionId": 211 + }, { + "name": "Technology Lab I", + "ordinal": 13, + "id": 75, + "regionId": 209 + }, { + "name": "Technology Lab J", + "ordinal": 14, + "id": 76, + "regionId": 210 + }, { + "name": "Technology Lab K", + "ordinal": 15, + "id": 77, + "regionId": 208 + }, { + "name": "User Interface Design Lab A", + "ordinal": 16, + "id": 7, + "regionId": 283 + }, { + "name": "User Interface Design Lab B", + "ordinal": 17, + "id": 27, + "regionId": 283 + }, { + "name": "App Store Lab A", + "ordinal": 18, + "id": 8, + "regionId": 275 + }, { + "name": "App Store Lab B", + "ordinal": 19, + "id": 24, + "regionId": 275 + }, { + "name": "App Store Lab C", + "ordinal": 20, + "id": 25, + "regionId": 275 + }, { + "name": "App Store Lab D", + "ordinal": 21, + "id": 26, + "regionId": 275 + }, { + "name": "App Store Lab E", + "ordinal": 22, + "id": 28, + "regionId": 275 + }, { + "name": "App Store Lab F", + "ordinal": 23, + "id": 29, + "regionId": 275 + }, { + "name": "Hall 1", + "ordinal": 24, + "id": 61, + "regionId": 274 + }, { + "name": "Hall 1", + "ordinal": 25, + "id": 86, + "regionId": 274 + }, { + "name": "The Hub", + "ordinal": 26, + "id": 78, + "regionId": 219 + }, { + "name": "The Hub", + "ordinal": 27, + "id": 87, + "regionId": 219 + }, { + "name": "Market Terrace", + "ordinal": 28, + "id": 79, + "regionId": 280 + }, { + "name": "Discovery Meadow", + "ordinal": 30, + "id": 81, + "regionId": 142 + }, { + "name": "Front Patio", + "ordinal": 31, + "id": 84, + "regionId": 222 + }, { + "name": "Hilton, Market Room", + "ordinal": 32, + "id": 85 + }, { + "name": "Podcast Studio", + "ordinal": 33, + "id": 60 + }, { + "name": "The Tech Museum", + "ordinal": 34, + "id": 82 + }, { + "name": "San Pedro Square", + "ordinal": 35, + "id": 83 + }], + "tracks": [{ + "name": "Featured", + "ordinal": 0, + "id": 4, + "color": "#3C5B72", + "darkColor": "#223340", + "titleColor": "#223B4D", + "lightBGColor": "#d8dee3" + }, { + "name": "Media", + "ordinal": 1, + "id": 1, + "color": "#DB2D45", + "darkColor": "#400D14", + "titleColor": "#A10F23", + "lightBGColor": "#F8D5DA" + }, { + "name": "Developer Tools", + "ordinal": 2, + "id": 5, + "color": "#E4753E", + "darkColor": "#402112", + "titleColor": "#A04010", + "lightBGColor": "#FAE3D8" + }, { + "name": "Graphics and Games", + "ordinal": 3, + "id": 8, + "color": "#E2AE0C", + "darkColor": "#403103", + "titleColor": "#AD6503", + "lightBGColor": "#F9EFCE" + }, { + "name": "System Frameworks", + "ordinal": 4, + "id": 7, + "color": "#AFC06C", + "darkColor": "#3A4024", + "titleColor": "#566420", + "lightBGColor": "#EFF2E2" + }, { + "name": "App Frameworks", + "ordinal": 5, + "id": 6, + "color": "#00AA96", + "darkColor": "#004038", + "titleColor": "#077360", + "lightBGColor": "#CCEEEA" + }, { + "name": "Design", + "ordinal": 6, + "id": 9, + "color": "#1FAFD0", + "darkColor": "#0A3640", + "titleColor": "#0F697E", + "lightBGColor": "#D2EFF6" + }, { + "name": "Distribution", + "ordinal": 7, + "id": 3, + "color": "#8C61A6", + "darkColor": "#35243E", + "titleColor": "#4C2B5F", + "lightBGColor": "#E8DFED" + }], + "resources": [{ + "title": "Apple Design Site", + "id": 17, + "url": "https://developer.apple.com/design/", + "resource_type": "guide", + "description": "Guidelines for designing great apps." + }, { + "title": "UserNotifications", + "id": 16, + "url": "https://developer.apple.com/reference/usernotifications", + "resource_type": "documentation" + }, { + "title": "Human Interface Guidelines for CarPlay Apps", + "id": 15, + "url": "https://developer.apple.com/carplay/human-interface-guidelines/", + "resource_type": "guide", + "description": "Guidelines for designing great CarPlay apps." + }, { + "title": "Human Interface Guidelines for watchOS", + "id": 14, + "url": "https://developer.apple.com/watchos/human-interface-guidelines/", + "resource_type": "guide", + "description": "Guidelines for designing great watchOS apps." + }, { + "title": "Human Interface Guidelines for tvOS", + "id": 13, + "url": "https://developer.apple.com/tvos/human-interface-guidelines/", + "resource_type": "guide", + "description": "Guidelines for designing great tvOS apps." + }, { + "title": "SiriKit Reference", + "id": 12, + "url": "https://developer.apple.com/reference/sirikit", + "resource_type": "documentation" + }, { + "title": "Human Interface Guidelines for macOS", + "id": 11, + "url": "https://developer.apple.com/macos/human-interface-guidelines/", + "resource_type": "guide", + "description": "Guidelines for designing great macOS apps." + }, { + "title": "Human Interface Guidelines for iOS", + "id": 10, + "url": "https://developer.apple.com/ios/human-interface-guidelines/", + "resource_type": "guide", + "description": "Guidance for designing great iOS apps." + }, { + "title": "WatchKit", + "id": 9, + "url": "https://developer.apple.com/reference/watchkit", + "resource_type": "documentation", + "description": "Construct and manage your app’s user interface for watchOS. Respond to events generated by interface objects, gestures, and the system." + }, { + "title": "ClockKit", + "id": 5, + "url": "https://developer.apple.com/reference/clockkit", + "resource_type": "documentation", + "description": "Implement complications for the clock face." + }, { + "title": "UserNotificationsUI", + "id": 4, + "url": "https://developer.apple.com/reference/usernotificationsui", + "resource_type": "documentation", + "description": "Customize the interface used to display local and remote notifications." + }, { + "title": "UIKit", + "id": 3, + "url": "https://developer.apple.com/reference/uikit", + "resource_type": "documentation", + "description": "Construct and manage your app’s user interface for iOS and tvOS. Respond to user interactions and system events, access various device features, enable accessibility, and work with animations, text, and images. In watchOS apps, enable accessibility and work with fonts and images." + }], + "imageTypes": [{ + "name": "square", + "variants": [{ + "width": 162, + "height": 162 + }] + }, { + "name": "wide", + "variants": [{ + "width": 85, + "height": 48 + }, { + "width": 162, + "height": 91 + }, { + "width": 217, + "height": 122 + }, { + "width": 250, + "height": 141 + }, { + "width": 304, + "height": 171 + }, { + "width": 375, + "height": 211 + }, { + "width": 414, + "height": 233 + }, { + "width": 900, + "height": 506 + }] + }], + "maps": [{ + "name": "The Bash", + "id": 3, + "ordinal": 0, + "levels": [{ + "name": "Discovery Meadow", + "id": 4, + "ordinal": 0, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.89335882663728, 37.32837831636366], + [-121.89367532730101, 37.32822688593188], + [-121.89378261566162, 37.32809251782843], + [-121.89376384019853, 37.32803493142481], + [-121.89374506473541, 37.327977344977064], + [-121.89336955547333, 37.327619028310444], + [-121.89306914806365, 37.327322562633775], + [-121.89301818609238, 37.32727137419708], + [-121.89298063516617, 37.3272244514328], + [-121.89273923635483, 37.32733535973752], + [-121.89269632101059, 37.3272692413448], + [-121.8922108411789, 37.32749958904186], + [-121.89227789640427, 37.32760196556941], + [-121.89206600189208, 37.32770220911749], + [-121.89191579818726, 37.32749532335016], + [-121.89150542020799, 37.3276936777569], + [-121.89158856868745, 37.32775339726066], + [-121.89168781042099, 37.32781524955381], + [-121.89178705215453, 37.32787923463108], + [-121.89188629388809, 37.32794321965384], + [-121.8919801712036, 37.32803706425536], + [-121.89207673072815, 37.32812877591178], + [-121.89222425222395, 37.32826740959848], + [-121.89245223999023, 37.32839111328759], + [-121.8927901983261, 37.328576668439354], + [-121.8928411602974, 37.32861932473131], + [-121.89335882663728, 37.32837831636366] + ] + ] + ] + }, + "regions": [{ + "name": "Stage", + "id": 149, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.89221636427192, 37.3275016144089], + [-121.89228073728829, 37.32760079166942], + [-121.89247653854635, 37.32750694652303], + [-121.89241082442548, 37.32740883556281], + [-121.89221636427192, 37.3275016144089] + ] + ] + ] + } + }, { + "name": "Food \u0026 Drinks", + "id": 148, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.89313888549805, 37.32782378090061], + [-121.8926292657852, 37.328058392557544], + [-121.89288675785065, 37.32844016814237], + [-121.8934178352356, 37.32818422941714], + [-121.89313888549805, 37.32782378090061] + ] + ] + ] + } + }, { + "name": "Restroom", + "id": 147, + "category": "Restroom", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.89283110201359, 37.32729376914242], + [-121.89298667013647, 37.327490524446745], + [-121.89315631985664, 37.32740947625371], + [-121.89302958548069, 37.32728310488359], + [-121.89298063516617, 37.3272255178596], + [-121.89283110201359, 37.32729376914242] + ] + ] + ] + } + }, { + "name": "Restrooms", + "id": 146, + "category": "Restroom", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.89197748899458, 37.32758276998112], + [-121.89191579818726, 37.32749958904186], + [-121.89164087176322, 37.32763289178468], + [-121.89170122146605, 37.32771074047712], + [-121.89197748899458, 37.32758276998112] + ] + ] + ] + } + }, { + "name": "Games Lounge", + "id": 145, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.8929873406887, 37.327489991235225], + [-121.89330518245696, 37.327913359983356], + [-121.89355731010436, 37.327800319694624], + [-121.89315631985664, 37.327410009465794], + [-121.8929873406887, 37.327489991235225] + ] + ] + ] + } + }, { + "name": "First Aid", + "id": 144, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.8918527662754, 37.32791655923433], + [-121.89189568161964, 37.32787710179606], + [-121.89176023006439, 37.32779605402002], + [-121.89171999692917, 37.32783337866458], + [-121.8918527662754, 37.32791655923433] + ] + ] + ] + } + }, { + "name": "Games Lounge", + "id": 143, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.89270704984663, 37.32852761367367], + [-121.89241737127304, 37.328141572878174], + [-121.89191043376924, 37.32796241515007], + [-121.89222693443297, 37.32826314395037], + [-121.89270704984663, 37.32852761367367] + ] + ] + ] + } + }, { + "name": "The Bash", + "id": 142, + "category": "COMBINED", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.8927, 37.3279], + [-121.8927, 37.3279], + [-121.8927, 37.3279], + [-121.8927, 37.3279] + ] + ] + ] + } + }] + }] + }, { + "name": "SJCC", + "id": 4, + "ordinal": 1, + "levels": [{ + "name": "Parkway \u0026 Labs", + "id": 5, + "ordinal": 0, + "clFloors": [-1, 0], + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88977412172792, 37.329275355422155], + [-121.88974145615268, 37.32929138570155], + [-121.88981299113561, 37.32938357385239], + [-121.88985759277858, 37.32936169109645], + [-121.8901096079884, 37.32969449870833], + [-121.8900241543049, 37.32976395568108], + [-121.88945305270585, 37.330037263194576], + [-121.88945127965943, 37.33003492453035], + [-121.88939609884862, 37.329962101268784], + [-121.889147292164, 37.329792803956096], + [-121.88912355115303, 37.329761437004485], + [-121.88905894031255, 37.32979232153012], + [-121.88904686935408, 37.32979809154846], + [-121.8890400712484, 37.32980134504336], + [-121.88895950329693, 37.329839903924295], + [-121.88897444220662, 37.32985963960496], + [-121.88896573938793, 37.32986380477525], + [-121.88879766681563, 37.32994424428747], + [-121.88878892936853, 37.329948426026206], + [-121.88877396626619, 37.32992870174322], + [-121.88868664722641, 37.329970582365775], + [-121.88863105625875, 37.32989714154908], + [-121.88858938128473, 37.32984208500173], + [-121.88857072658996, 37.32981744038813], + [-121.888552913974, 37.32979390823262], + [-121.88853654656751, 37.329801741627186], + [-121.88848773383538, 37.32982510325817], + [-121.88829473236109, 37.329917473128724], + [-121.88832739446121, 37.3299606226913], + [-121.88833250847962, 37.329967378765886], + [-121.88788235725293, 37.33018118354276], + [-121.88780936052413, 37.33008474813014], + [-121.88780590953313, 37.33008018904963], + [-121.88780521845676, 37.33007927607334], + [-121.88778296359746, 37.330049875324434], + [-121.88778178760136, 37.33004832172339], + [-121.88777880617099, 37.33004438297427], + [-121.88776749702066, 37.33002944252432], + [-121.88768252200762, 37.32991718245465], + [-121.88767044667948, 37.32990122978473], + [-121.88756508182172, 37.3299516571171], + [-121.88756053511192, 37.32994797484249], + [-121.8875411778241, 37.329932297822744], + [-121.88744913920812, 37.32985775783149], + [-121.88717095895586, 37.32963246549384], + [-121.88705672597813, 37.32953995041119], + [-121.8870924260268, 37.32951070686776], + [-121.88693930772845, 37.329386710379545], + [-121.88708027465005, 37.329282793963195], + [-121.88731861184374, 37.32910709889332], + [-121.88740899519009, 37.329064449122264], + [-121.88766864917544, 37.328940177386606], + [-121.8876395953898, 37.32890179344712], + [-121.88781629705568, 37.32881722345475], + [-121.88779768484464, 37.32879263427991], + [-121.88797438763768, 37.32870806326746], + [-121.8879295218111, 37.32865385452081], + [-121.88809063512277, 37.32853477845086], + [-121.88809208098355, 37.32853668882751], + [-121.88817335704626, 37.32864540222669], + [-121.8882611655488, 37.32860451593586], + [-121.88832215270835, 37.328685179583644], + [-121.88911289590375, 37.32830672461403], + [-121.88894449997868, 37.32808425124394], + [-121.88929790556527, 37.32791510842589], + [-121.88926304463497, 37.32786905280552], + [-121.88935833850654, 37.32782344373795], + [-121.88939319943741, 37.32786950028302], + [-121.8897028926996, 37.32772130322522], + [-121.88998008140818, 37.32808867757686], + [-121.8899924989763, 37.32810513526167], + [-121.89008486864537, 37.328227557742075], + [-121.89034306871193, 37.32856976309121], + [-121.89029889188518, 37.328590904771694], + [-121.8904671438849, 37.32881299221566], + [-121.89053982057618, 37.32890892300089], + [-121.8904115271173, 37.328970318860854], + [-121.89034479829832, 37.32900225245054], + [-121.89032414440415, 37.32901213652779], + [-121.89030602172629, 37.329020809271185], + [-121.89028926383303, 37.329028828885825], + [-121.89021864978358, 37.32906262175577], + [-121.89009495360739, 37.3291218174291], + [-121.88977412172792, 37.329275355422155] + ] + ] + ] + }, + "regions": [{ + "name": "The Hub", + "id": 219, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88889026641846, 37.32956415538882], + [-121.88876420259474, 37.32939993059718], + [-121.88837260007858, 37.32958335047089], + [-121.88843697309493, 37.32966652910326], + [-121.88845574855804, 37.329657997965704], + [-121.88852012157439, 37.329741176515455], + [-121.88889026641846, 37.32956415538882] + ] + ] + ] + } + }, { + "name": "", + "id": 166, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.8889414727807, 37.32953958955981], + [-121.88888953499351, 37.32956444659746], + [-121.88885506585045, 37.32951890882447], + [-121.88890700342671, 37.329494051872686], + [-121.88890817702638, 37.32949560232325], + [-121.8889137476129, 37.32950296166293], + [-121.8889414727807, 37.32953958955981] + ] + ] + ] + } + }, { + "name": "", + "id": 187, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88837819380844, 37.329652304694], + [-121.8883398169877, 37.329601605595954], + [-121.88833764771768, 37.32959873794421], + [-121.88837289551847, 37.32958186851154], + [-121.88838980361412, 37.329604205963996], + [-121.88840026176307, 37.32961802232473], + [-121.88841344201438, 37.329635434877346], + [-121.88837819380844, 37.329652304694] + ] + ] + ] + } + }, { + "name": "", + "id": 196, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88882021761034, 37.32947287019189], + [-121.88887215467375, 37.32944801293104], + [-121.88890700342671, 37.329494051872686], + [-121.88885506585045, 37.32951890882447], + [-121.88885380688319, 37.32951724558082], + [-121.88884318939272, 37.329503218627146], + [-121.88884283413371, 37.32950274928816], + [-121.88882021761034, 37.32947287019189] + ] + ] + ] + } + }, { + "name": "", + "id": 220, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88843517475279, 37.32966414619146], + [-121.88844950981037, 37.32965729955249], + [-121.88845354429729, 37.329655369667194], + [-121.88845765180375, 37.32966079672777], + [-121.88847254304552, 37.32968046982922], + [-121.88848339658595, 37.329694808643694], + [-121.88851617812144, 37.32973811692442], + [-121.88851824625225, 37.32974084879105], + [-121.8885142125377, 37.329742779255454], + [-121.88848173768791, 37.32975832185583], + [-121.88846417975229, 37.32976672515665], + [-121.88843595422583, 37.329780234008815], + [-121.88842236358748, 37.32976227981232], + [-121.88837123113962, 37.329694728426034], + [-121.88838861009623, 37.32968641661468], + [-121.88839760491456, 37.32968211467409], + [-121.88839992140473, 37.32968100676917], + [-121.88843517475279, 37.32966414619146] + ] + ] + ] + } + }, { + "name": "Front Patio", + "id": 222, + "category": "COMBINED", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88901633024216, 37.33009095197311], + [-121.88896536827086, 37.33009095197311], + [-121.88896536827086, 37.330108014148905], + [-121.88901633024216, 37.330108014148905], + [-121.88901633024216, 37.33009095197311] + ] + ] + ] + } + }, { + "name": "Escalator", + "id": 150, + "category": "Escalator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88899105552495, 37.32965279625852], + [-121.88899399048239, 37.32965139125691], + [-121.88899737847252, 37.329655868582314], + [-121.88906064654816, 37.32973945639441], + [-121.88904425640932, 37.329747295482775], + [-121.88897763374887, 37.32965922027948], + [-121.88899105552495, 37.32965279625852] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 151, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88767044667948, 37.32990122978473], + [-121.88756508182172, 37.3299516571171], + [-121.88756053511192, 37.32994797484249], + [-121.8875411778241, 37.329932297822744], + [-121.88744913920812, 37.32985775783149], + [-121.88749024166292, 37.32982700720505], + [-121.88752009303535, 37.32985118134599], + [-121.88756155409857, 37.32988475719594], + [-121.88763233653937, 37.32985088088005], + [-121.88767044667948, 37.32990122978473] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 152, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88705672597813, 37.32953995041119], + [-121.8870924260268, 37.32951070686776], + [-121.88720657534368, 37.32960314593963], + [-121.88717452394557, 37.3296295309747], + [-121.88717095895586, 37.32963246549384], + [-121.88705672597813, 37.32953995041119] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 153, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88911656283484, 37.32959209554011], + [-121.88910049442708, 37.32964563292202], + [-121.88905665041224, 37.32963700683568], + [-121.88903993521853, 37.32963371813957], + [-121.88905643940166, 37.329580684941675], + [-121.88907343536172, 37.32958391075468], + [-121.88911656283484, 37.32959209554011] + ] + ] + ] + } + }, { + "name": "Elevator", + "id": 154, + "category": "Elevator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88909737098608, 37.32957242553306], + [-121.88907581880461, 37.32954402531686], + [-121.88909692004796, 37.3295339272953], + [-121.88910851544057, 37.32952837830773], + [-121.88912776762938, 37.32951916515125], + [-121.88914918020885, 37.32954756496336], + [-121.88909737098608, 37.32957242553306] + ] + ] + ] + } + }, { + "name": "Escalator", + "id": 155, + "category": "Escalator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88906064654816, 37.32973945639441], + [-121.88899737847252, 37.329655868582314], + [-121.88901100086815, 37.32964934935101], + [-121.88907418657244, 37.32973298875087], + [-121.88906064654816, 37.32973945639441] + ] + ] + ] + } + }, { + "name": "Escalator", + "id": 156, + "category": "Escalator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88902400169077, 37.32964312758358], + [-121.88904564565915, 37.329671645790626], + [-121.88908741073189, 37.32972667198556], + [-121.88907418657244, 37.32973298875087], + [-121.88901100086815, 37.32964934935101], + [-121.88902400169077, 37.32964312758358] + ] + ] + ] + } + }, { + "name": "Escalator", + "id": 157, + "category": "Escalator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.889030011167, 37.32975410870773], + [-121.88896335093823, 37.329666056414005], + [-121.88897763374887, 37.32965922027948], + [-121.88904425640932, 37.329747295482775], + [-121.889030011167, 37.32975410870773] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 159, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88892142333187, 37.329684367108264], + [-121.88896243227478, 37.32973854529369], + [-121.88890696254178, 37.32976535857429], + [-121.88890346286216, 37.329760813049255], + [-121.88886528939409, 37.329711231791876], + [-121.88892142333187, 37.329684367108264] + ] + ] + ] + } + }, { + "name": "Escalator", + "id": 160, + "category": "Escalator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88892142333187, 37.329684367108264], + [-121.88894359109476, 37.32967375789356], + [-121.88898455086016, 37.32972792387568], + [-121.88896243227478, 37.32973854529369], + [-121.88892142333187, 37.329684367108264] + ] + ] + ] + } + }, { + "name": "Escalator", + "id": 161, + "category": "Escalator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.888656369585, 37.32987857271807], + [-121.88865995546021, 37.32988330993319], + [-121.88863105625875, 37.32989714154908], + [-121.88858938128473, 37.32984208500173], + [-121.88861828058748, 37.329828254224225], + [-121.888656369585, 37.32987857271807] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 162, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.888656369585, 37.32987857271807], + [-121.88861828058748, 37.329828254224225], + [-121.8886749236313, 37.32980114479055], + [-121.88871266721758, 37.32985196843436], + [-121.888656369585, 37.32987857271807] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 163, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88780521845676, 37.33007927607334], + [-121.88778296359746, 37.330049875324434], + [-121.88778178760136, 37.33004832172339], + [-121.88778927285753, 37.33004473959994], + [-121.88787075280456, 37.33000574366288], + [-121.88787763669394, 37.33000244860312], + [-121.88790185169934, 37.330034271291595], + [-121.88780590953313, 37.33008018904963], + [-121.88780521845676, 37.33007927607334] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 164, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88798588136999, 37.33011980897994], + [-121.88791168999272, 37.330155293902635], + [-121.88789721332778, 37.33013616992818], + [-121.88797162383078, 37.33010055520921], + [-121.88798588136999, 37.33011980897994] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 165, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88817583792569, 37.3300028209548], + [-121.88819035180771, 37.33002194763828], + [-121.88812724270119, 37.33005215175899], + [-121.88811279665529, 37.33003306677485], + [-121.88817583792569, 37.3300028209548] + ] + ] + ] + } + }, { + "name": "", + "id": 158, + "category": "Walkway", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88905432058986, 37.32934946645788], + [-121.88906569849284, 37.32934402169453], + [-121.88908382565022, 37.32933534715305], + [-121.88912697753175, 37.32931469731525], + [-121.88914580995723, 37.32930568527236], + [-121.88933019549859, 37.329217466789885], + [-121.88934887975333, 37.329208524103976], + [-121.88939204079958, 37.32918786724855], + [-121.88941069235973, 37.32917893981691], + [-121.88941855039306, 37.32917519288463], + [-121.88944483182937, 37.32916259161331], + [-121.88948189415338, 37.32914485582293], + [-121.8894908001402, 37.3291405939548], + [-121.88949896456936, 37.32913668695122], + [-121.88950937422156, 37.329131705518954], + [-121.88952096920563, 37.32912615685788], + [-121.88953140570274, 37.32912116257853], + [-121.88953462862115, 37.32911962028373], + [-121.88954339773134, 37.32911542391507], + [-121.8895918122719, 37.32909225562397], + [-121.88961755941754, 37.32912627492076], + [-121.88965561976855, 37.329176563433066], + [-121.88974732086965, 37.329132675068145], + [-121.88976599919489, 37.32912373557414], + [-121.88980931146844, 37.329103006205706], + [-121.88982796510373, 37.32909407852484], + [-121.88992420057053, 37.32904801995047], + [-121.88993481483713, 37.329042939929856], + [-121.88994380684683, 37.329038636326125], + [-121.88996773124347, 37.3290271860345], + [-121.89003651908278, 37.32899426394803], + [-121.89007677143802, 37.32897499903157], + [-121.89008550428447, 37.32897081946039], + [-121.89009302267486, 37.32896722113199], + [-121.89016318404772, 37.32893364164093], + [-121.8901728716892, 37.32892900509889], + [-121.8901812482688, 37.32892499603585], + [-121.8902765383848, 37.32887938980663], + [-121.89025893469393, 37.32885613305555], + [-121.8903411897094, 37.32881680770934], + [-121.89034731145652, 37.328813880959025], + [-121.89029863002715, 37.32874949793218], + [-121.8902692868303, 37.32871069042074], + [-121.89021146416795, 37.328738334678974], + [-121.89018084884003, 37.328752971462514], + [-121.8901222160948, 37.328675509868965], + [-121.89012873730087, 37.328672387047355], + [-121.89014033000217, 37.328666835629484], + [-121.89014905609088, 37.32866265695125], + [-121.89029889188518, 37.328590904771694], + [-121.8904671438849, 37.32881299221566], + [-121.89042580515793, 37.32883277658241], + [-121.89040420772338, 37.32884311224045], + [-121.89043989614393, 37.32889026474042], + [-121.89036324015156, 37.328926952676476], + [-121.89030786269413, 37.32895345683378], + [-121.89029559104048, 37.32895933009135], + [-121.8902933754081, 37.32895640223805], + [-121.89028850169481, 37.328949962932995], + [-121.89025352889085, 37.32896670046068], + [-121.89025852661784, 37.328973081425765], + [-121.89026074225022, 37.328976009278406], + [-121.89025247886616, 37.32897997225819], + [-121.89019353399125, 37.32900824122109], + [-121.89020943394377, 37.329029247160314], + [-121.8901976538328, 37.32903488526642], + [-121.89021864978358, 37.32906262175577], + [-121.89009495360739, 37.3291218174291], + [-121.88977412172792, 37.329275355422155], + [-121.88974145615268, 37.32929138570155], + [-121.88970393420573, 37.329243030589204], + [-121.88912776762938, 37.32951916515125], + [-121.88910851544057, 37.32952837830773], + [-121.88909692004796, 37.3295339272953], + [-121.88907581880461, 37.32954402531686], + [-121.88909737098608, 37.32957242553306], + [-121.88907343536172, 37.32958391075468], + [-121.88905643940166, 37.329580684941675], + [-121.88903993521853, 37.32963371813957], + [-121.88905665041224, 37.32963700683568], + [-121.88904564565915, 37.329671645790626], + [-121.88902400169077, 37.32964312758358], + [-121.88901100086815, 37.32964934935101], + [-121.88899737847252, 37.329655868582314], + [-121.88899399048239, 37.32965139125691], + [-121.88899105552495, 37.32965279625852], + [-121.88897763374887, 37.32965922027948], + [-121.88896335093823, 37.329666056414005], + [-121.8889500290061, 37.32964845930207], + [-121.88893125004441, 37.329657437843416], + [-121.88892445037726, 37.329648445675204], + [-121.8888461738125, 37.32968611909844], + [-121.88886528939409, 37.329711231791876], + [-121.88890346286216, 37.329760813049255], + [-121.88890696254178, 37.32976535857429], + [-121.88896243227478, 37.32973854529369], + [-121.88898455086016, 37.32972792387568], + [-121.8890400712484, 37.32980134504336], + [-121.88895950329693, 37.329839903924295], + [-121.88897444220662, 37.32985963960496], + [-121.88896573938793, 37.32986380477525], + [-121.88879766681563, 37.32994424428747], + [-121.88878892936853, 37.329948426026206], + [-121.88877396626619, 37.32992870174322], + [-121.88868664722641, 37.329970582365775], + [-121.88863105625875, 37.32989714154908], + [-121.88865995546021, 37.32988330993319], + [-121.888656369585, 37.32987857271807], + [-121.88871266721758, 37.32985196843436], + [-121.8886749236313, 37.32980114479055], + [-121.88865681386856, 37.32977675906884], + [-121.88857072658996, 37.32981744038813], + [-121.888552913974, 37.32979390823262], + [-121.88853654656751, 37.329801741627186], + [-121.88848773383538, 37.32982510325817], + [-121.88829473236109, 37.329917473128724], + [-121.88832739446121, 37.3299606226913], + [-121.88833250847962, 37.329967378765886], + [-121.88788235725293, 37.33018118354276], + [-121.88780936052413, 37.33008474813014], + [-121.88780590953313, 37.33008018904963], + [-121.88790185169934, 37.330034271291595], + [-121.88787763669394, 37.33000244860312], + [-121.88787075280456, 37.33000574366288], + [-121.88778927285753, 37.33004473959994], + [-121.88778178760136, 37.33004832172339], + [-121.88777880617099, 37.33004438297427], + [-121.88776749702066, 37.33002944252432], + [-121.88785824026864, 37.329986011767], + [-121.88784181481898, 37.329964312553344], + [-121.88783390469916, 37.329953862707455], + [-121.88777326496192, 37.329873753138656], + [-121.88768252200762, 37.32991718245465], + [-121.88767044667948, 37.32990122978473], + [-121.88775883084443, 37.32985892930624], + [-121.88782169868226, 37.32982884087461], + [-121.8878303851301, 37.329824683555714], + [-121.88784737972084, 37.32981654997333], + [-121.88785575066561, 37.32981254365296], + [-121.88786469627662, 37.32980826229805], + [-121.88794347598484, 37.32977055844719], + [-121.88796182322896, 37.32976177748029], + [-121.88803133701612, 37.32972850826379], + [-121.8880211567533, 37.32971505810732], + [-121.88801582282866, 37.32970801092865], + [-121.88801257832006, 37.32970372428511], + [-121.88799322693237, 37.329678159317815], + [-121.88807515538885, 37.329638948434855], + [-121.88809707889348, 37.32966771094104], + [-121.88811346273089, 37.329689203123486], + [-121.88812332072662, 37.329684485112566], + [-121.8881349149864, 37.32967893612985], + [-121.88814447653476, 37.32967435999724], + [-121.88814717969076, 37.32967306627362], + [-121.8881558441091, 37.32966891950485], + [-121.88816484606886, 37.329664611189344], + [-121.88820349996192, 37.329715677176054], + [-121.88825068180132, 37.329692985654404], + [-121.88825951716679, 37.32968875756012], + [-121.88826674738532, 37.32968529716578], + [-121.8883173140059, 37.329661095894515], + [-121.88832614937138, 37.32965686779848], + [-121.88833989504083, 37.329650289457504], + [-121.88830129986715, 37.329599304096405], + [-121.88831062564753, 37.32959484085356], + [-121.88832829847398, 37.329586382649644], + [-121.88833764771768, 37.32959873794421], + [-121.8883398169877, 37.329601605595954], + [-121.88837819380844, 37.329652304694], + [-121.88839992140473, 37.32968100676917], + [-121.88839760491456, 37.32968211467409], + [-121.88838861009623, 37.32968641661468], + [-121.88837123113962, 37.329694728426034], + [-121.88832756740823, 37.3297156209623], + [-121.8883098069855, 37.32972411909546], + [-121.88827955656319, 37.32973859353008], + [-121.8882364565195, 37.32975921633701], + [-121.88825637834275, 37.329785535198255], + [-121.88826873297508, 37.3298018569856], + [-121.88828759749389, 37.32982677902055], + [-121.8883306942817, 37.32980615285406], + [-121.88836084418686, 37.32979172307547], + [-121.88837868865431, 37.329783182691926], + [-121.88842236358748, 37.32976227981232], + [-121.88843595422583, 37.329780234008815], + [-121.88846417975229, 37.32976672515665], + [-121.88848173768791, 37.32975832185583], + [-121.8885142125377, 37.329742779255454], + [-121.88851824625225, 37.32974084879105], + [-121.88851617812144, 37.32973811692442], + [-121.88848339658595, 37.329694808643694], + [-121.88847254304552, 37.32968046982922], + [-121.88845765180375, 37.32966079672777], + [-121.88845354429729, 37.329655369667194], + [-121.88844950981037, 37.32965729955249], + [-121.88843517475279, 37.32966414619146], + [-121.88841344201438, 37.329635434877346], + [-121.88840026176307, 37.32961802232473], + [-121.88838980361412, 37.329604205963996], + [-121.88837289551847, 37.32958186851154], + [-121.88841506107777, 37.32956168743197], + [-121.88840633737993, 37.32955016257613], + [-121.88841263403475, 37.329547149017216], + [-121.88843021591713, 37.32953873438366], + [-121.88846635949879, 37.329521436176336], + [-121.88865091482646, 37.32943310850044], + [-121.88869733995689, 37.32941088954344], + [-121.88870603420833, 37.32940672849466], + [-121.88871107348704, 37.329404316707326], + [-121.88871979718486, 37.32941584158553], + [-121.88876182520279, 37.329395726875696], + [-121.88880825667678, 37.32945706838232], + [-121.88886019366699, 37.329432211151286], + [-121.8888044106089, 37.32935851567226], + [-121.88880897744056, 37.32935632996008], + [-121.8888178749751, 37.32935207154808], + [-121.88882703515209, 37.329347687433646], + [-121.88883308471313, 37.32934479207808], + [-121.88884467893205, 37.329339243016314], + [-121.88885133265364, 37.3293360585056], + [-121.88886189967013, 37.32933100107484], + [-121.88891092155676, 37.329307538896366], + [-121.8889623882181, 37.32937553611666], + [-121.88897235017645, 37.3293886924357], + [-121.88898606941386, 37.32938212725732], + [-121.88899497589848, 37.32937786516443], + [-121.88903097236687, 37.32936063947763], + [-121.88905432058986, 37.32934946645788] + ], + [ + [-121.88812724270119, 37.33005215175899], + [-121.88819035180771, 37.33002194763828], + [-121.88817583792569, 37.3300028209548], + [-121.88811279665529, 37.33003306677485], + [-121.88812724270119, 37.33005215175899] + ], + [ + [-121.88789721332778, 37.33013616992818], + [-121.88791168999272, 37.330155293902635], + [-121.88798588136999, 37.33011980897994], + [-121.88797162383078, 37.33010055520921], + [-121.88789721332778, 37.33013616992818] + ], + [ + [-121.88882021761034, 37.32947287019189], + [-121.88884283413371, 37.32950274928816], + [-121.88884318939272, 37.329503218627146], + [-121.88885380688319, 37.32951724558082], + [-121.88885506585045, 37.32951890882447], + [-121.88888953499351, 37.32956444659746], + [-121.8889414727807, 37.32953958955981], + [-121.8889137476129, 37.32950296166293], + [-121.88890817702638, 37.32949560232325], + [-121.88890700342671, 37.329494051872686], + [-121.88887215467375, 37.32944801293104], + [-121.88882021761034, 37.32947287019189] + ], + [ + [-121.88785234179217, 37.32994503726743], + [-121.88785764842204, 37.329942496471624], + [-121.88787531915297, 37.329934040310974], + [-121.8879239774235, 37.32991075229682], + [-121.8879725047869, 37.3298875269281], + [-121.88799017551725, 37.329879069864496], + [-121.88799548327543, 37.32987652996273], + [-121.88793484516717, 37.32979642193572], + [-121.8878633397141, 37.32983064393727], + [-121.88779170368333, 37.329864928416754], + [-121.88785234179217, 37.32994503726743] + ], + [ + [-121.88812846633144, 37.32985682530316], + [-121.88804341236687, 37.329744460959596], + [-121.88795349093027, 37.32978749795338], + [-121.88801397996687, 37.329867677302964], + [-121.88802177916122, 37.3298780152748], + [-121.88803241557486, 37.32989211402924], + [-121.88803825646445, 37.32989985623061], + [-121.88812846633144, 37.32985682530316] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 167, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88814267844624, 37.32987560083666], + [-121.88816679982392, 37.32990746742282], + [-121.88807157607853, 37.32995304142287], + [-121.88804745524588, 37.329921174184285], + [-121.88805432704733, 37.32991788560807], + [-121.88813580699438, 37.32987888960516], + [-121.88814267844624, 37.32987560083666] + ] + ] + ] + } + }, { + "name": "Restroom (Female)", + "id": 168, + "category": "Restroom (Female)", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88794081795272, 37.329767045306255], + [-121.88794347598484, 37.32977055844719], + [-121.88786469627662, 37.32980826229805], + [-121.88785575066561, 37.32981254365296], + [-121.88784737972084, 37.32981654997333], + [-121.88780926828171, 37.32976620168206], + [-121.8879053667144, 37.32972020911351], + [-121.88790802479488, 37.32972372232052], + [-121.88794081795272, 37.329767045306255] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 169, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88905432058986, 37.32934946645788], + [-121.88901623192923, 37.32929914143532], + [-121.8891077192906, 37.329255355476676], + [-121.88914580995723, 37.32930568527236], + [-121.88912697753175, 37.32931469731525], + [-121.88908382565022, 37.32933534715305], + [-121.88906569849284, 37.32934402169453], + [-121.88905432058986, 37.32934946645788] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 170, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88929210130718, 37.32916710688072], + [-121.88938043232253, 37.32912483000904], + [-121.88941855039306, 37.32917519288463], + [-121.88941069235973, 37.32917893981691], + [-121.88939204079958, 37.32918786724855], + [-121.88934887975333, 37.329208524103976], + [-121.88933019549859, 37.329217466789885], + [-121.88929210130718, 37.32916710688072] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 171, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88902102622946, 37.32934749013038], + [-121.88903097236687, 37.32936063947763], + [-121.88899497589848, 37.32937786516443], + [-121.88898606941386, 37.32938212725732], + [-121.88897235017645, 37.3293886924357], + [-121.8889623882181, 37.32937553611666], + [-121.88902102622946, 37.32934749013038] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 172, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88883183326672, 37.329310299592], + [-121.88888357037771, 37.32928553760589], + [-121.88889142349566, 37.329281779019574], + [-121.88891092155676, 37.329307538896366], + [-121.88886189967013, 37.32933100107484], + [-121.88885133265364, 37.3293360585056], + [-121.8888349938923, 37.32931447481521], + [-121.88883183326672, 37.329310299592] + ] + ] + ] + } + }, { + "name": "Elevator", + "id": 177, + "category": "Elevator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.8888349938923, 37.32931447481521], + [-121.88885133265364, 37.3293360585056], + [-121.88884467893205, 37.329339243016314], + [-121.88883308471313, 37.32934479207808], + [-121.88882703515209, 37.329347687433646], + [-121.88881683067737, 37.32933425800444], + [-121.88881067581761, 37.32932615800245], + [-121.8888349938923, 37.32931447481521] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 178, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.8888044106089, 37.32935851567226], + [-121.88877201502149, 37.32937401994685], + [-121.88876183931964, 37.32936057598019], + [-121.88881683067737, 37.32933425800444], + [-121.88882703515209, 37.329347687433646], + [-121.8888178749751, 37.32935207154808], + [-121.88880897744056, 37.32935632996008], + [-121.8888044106089, 37.32935851567226] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 179, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88869266912157, 37.329343406279264], + [-121.88872812598707, 37.329390240001445], + [-121.8887314139142, 37.32939458159897], + [-121.88871107348704, 37.329404316707326], + [-121.88870603420833, 37.32940672849466], + [-121.88869733995689, 37.32941088954344], + [-121.88865091482646, 37.32943310850044], + [-121.88864762799818, 37.329428766866535], + [-121.88861483484035, 37.32938544368576], + [-121.88861217567471, 37.32938193051965], + [-121.88869266912157, 37.329343406279264] + ] + ] + ] + } + }, { + "name": "", + "id": 173, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88785234179217, 37.32994503726743], + [-121.88779170368333, 37.329864928416754], + [-121.8878633397141, 37.32983064393727], + [-121.8879239774235, 37.32991075229682], + [-121.88787531915297, 37.329934040310974], + [-121.88785764842204, 37.329942496471624], + [-121.88785234179217, 37.32994503726743] + ] + ] + ] + } + }, { + "name": "", + "id": 174, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88793484516717, 37.32979642193572], + [-121.88799548327543, 37.32987652996273], + [-121.88799017551725, 37.329879069864496], + [-121.8879725047869, 37.3298875269281], + [-121.8879239774235, 37.32991075229682], + [-121.8878633397141, 37.32983064393727], + [-121.88793484516717, 37.32979642193572] + ] + ] + ] + } + }, { + "name": "", + "id": 175, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88804341236687, 37.329744460959596], + [-121.88812846633144, 37.32985682530316], + [-121.88803825646445, 37.32989985623061], + [-121.88803241557486, 37.32989211402924], + [-121.88802177916122, 37.3298780152748], + [-121.88801397996687, 37.329867677302964], + [-121.88795349093027, 37.32978749795338], + [-121.88804341236687, 37.329744460959596] + ] + ] + ] + } + }, { + "name": "", + "id": 176, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88785824026864, 37.329986011767], + [-121.88776749702066, 37.33002944252432], + [-121.88768252200762, 37.32991718245465], + [-121.88777326496192, 37.329873753138656], + [-121.88783390469916, 37.329953862707455], + [-121.88784181481898, 37.329964312553344], + [-121.88785824026864, 37.329986011767] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 180, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88843027863945, 37.329473771754415], + [-121.88844844840075, 37.32949777531897], + [-121.88846635949879, 37.329521436176336], + [-121.88843021591713, 37.32953873438366], + [-121.88841263403475, 37.329547149017216], + [-121.88840633737993, 37.32955016257613], + [-121.8883858597507, 37.32955996272363], + [-121.88838257380839, 37.329555621684285], + [-121.88834978065053, 37.32951229857666], + [-121.88834712239716, 37.32950878513133], + [-121.88842762064992, 37.329470258655846], + [-121.88843027863945, 37.329473771754415] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 181, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88831062564753, 37.32959484085356], + [-121.88830129986715, 37.329599304096405], + [-121.8882918820219, 37.32958686396431], + [-121.88833419646161, 37.329566712417744], + [-121.88834352432768, 37.329579095564604], + [-121.88832829847398, 37.329586382649644], + [-121.88831062564753, 37.32959484085356] + ] + ] + ] + } + }, { + "name": "Restroom (Male)", + "id": 182, + "category": "Restroom (Male)", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88820349996192, 37.329715677176054], + [-121.88816484606886, 37.329664611189344], + [-121.88820067800624, 37.32964746194951], + [-121.88822815375937, 37.32963431199419], + [-121.88826674738532, 37.32968529716578], + [-121.88825951716679, 37.32968875756012], + [-121.88825068180132, 37.329692985654404], + [-121.88820349996192, 37.329715677176054] + ] + ] + ] + } + }, { + "name": "Restroom (Female)", + "id": 183, + "category": "Restroom (Female)", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88832614937138, 37.32965686779848], + [-121.8883173140059, 37.329661095894515], + [-121.88826674738532, 37.32968529716578], + [-121.88822815375937, 37.32963431199419], + [-121.88830129986715, 37.329599304096405], + [-121.88833989504083, 37.329650289457504], + [-121.88832614937138, 37.32965686779848] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 184, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88812506052135, 37.32964871036956], + [-121.88818126210207, 37.32962181245696], + [-121.88820067800624, 37.32964746194951], + [-121.88816484606886, 37.329664611189344], + [-121.8881558441091, 37.32966891950485], + [-121.88814717969076, 37.32967306627362], + [-121.88814447653476, 37.32967435999724], + [-121.88812811772932, 37.32965274911097], + [-121.88812506052135, 37.32964871036956] + ] + ] + ] + } + }, { + "name": "Elevator", + "id": 185, + "category": "Elevator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88812811772932, 37.32965274911097], + [-121.88814447653476, 37.32967435999724], + [-121.8881349149864, 37.32967893612985], + [-121.88812332072662, 37.329684485112566], + [-121.88811346273089, 37.329689203123486], + [-121.88809707889348, 37.32966771094104], + [-121.88810484772969, 37.32966396661742], + [-121.88812811772932, 37.32965274911097] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 186, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88799959520104, 37.329724226721666], + [-121.8879916548192, 37.329713737297006], + [-121.88801257832006, 37.32970372428511], + [-121.88801582282866, 37.32970801092865], + [-121.8880211567533, 37.32971505810732], + [-121.88803133701612, 37.32972850826379], + [-121.88796182322896, 37.32976177748029], + [-121.88795100238407, 37.32974748346725], + [-121.88799959520104, 37.329724226721666] + ] + ] + ] + } + }, { + "name": "Restroom (Male)", + "id": 188, + "category": "Restroom (Male)", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88775883084443, 37.32985892930624], + [-121.88772072021995, 37.32980858062926], + [-121.88780926828171, 37.32976620168206], + [-121.88784737972084, 37.32981654997333], + [-121.8878303851301, 37.329824683555714], + [-121.88782169868226, 37.32982884087461], + [-121.88775883084443, 37.32985892930624] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 189, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88943486562341, 37.329149426416954], + [-121.88948899618619, 37.329123519166686], + [-121.88949896456936, 37.32913668695122], + [-121.8894908001402, 37.3291405939548], + [-121.88948189415338, 37.32914485582293], + [-121.88944483182937, 37.32916259161331], + [-121.88943486562341, 37.329149426416954] + ] + ] + ] + } + }, { + "name": "Elevator", + "id": 190, + "category": "Elevator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88949896456936, 37.32913668695122], + [-121.88948899618619, 37.329123519166686], + [-121.88948354796626, 37.32911632146834], + [-121.88949139911958, 37.32911256452985], + [-121.8895159909057, 37.32910079649677], + [-121.88953140570274, 37.32912116257853], + [-121.88952096920563, 37.32912615685788], + [-121.88950937422156, 37.329131705518954], + [-121.88949896456936, 37.32913668695122] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 191, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88953140570274, 37.32912116257853], + [-121.8895159909057, 37.32910079649677], + [-121.88951185536024, 37.32909533255572], + [-121.88957226232677, 37.32906642357934], + [-121.8895918122719, 37.32909225562397], + [-121.88954339773134, 37.32911542391507], + [-121.88953462862115, 37.32911962028373], + [-121.88953140570274, 37.32912116257853] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 192, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88974732086965, 37.329132675068145], + [-121.88970925079444, 37.32908237868552], + [-121.8897898889327, 37.32904377404516], + [-121.88982796510373, 37.32909407852484], + [-121.88980931146844, 37.329103006205706], + [-121.88976599919489, 37.32912373557414], + [-121.88974732086965, 37.329132675068145] + ] + ] + ] + } + }, { + "name": "Restroom", + "id": 193, + "category": "Restroom", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88994989545027, 37.32900338846709], + [-121.88996773124347, 37.3290271860345], + [-121.88994380684683, 37.329038636326125], + [-121.88993481483713, 37.329042939929856], + [-121.88992420057053, 37.32904801995047], + [-121.88990622937004, 37.32902434508957], + [-121.88994989545027, 37.32900338846709] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 194, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.8900834921175, 37.328954734431655], + [-121.89009302267486, 37.32896722113199], + [-121.89008550428447, 37.32897081946039], + [-121.89007677143802, 37.32897499903157], + [-121.89003651908278, 37.32899426394803], + [-121.8900270458932, 37.328981750155485], + [-121.8900834921175, 37.328954734431655] + ] + ] + ] + } + }, { + "name": "Elevator", + "id": 195, + "category": "Elevator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.8901222160948, 37.328675509868965], + [-121.89012032020916, 37.32867641775507], + [-121.89010301052953, 37.32865355602506], + [-121.89013173501604, 37.32863980404552], + [-121.89014905609088, 37.32866265695125], + [-121.89014033000217, 37.328666835629484], + [-121.89012873730087, 37.328672387047355], + [-121.8901222160948, 37.328675509868965] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 199, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.89023843277647, 37.32882904736349], + [-121.89018084884003, 37.328752971462514], + [-121.89021146416795, 37.328738334678974], + [-121.89024091621049, 37.32877717212472], + [-121.89029863002715, 37.32874949793218], + [-121.89034731145652, 37.328813880959025], + [-121.8903411897094, 37.32881680770934], + [-121.89025893469393, 37.32885613305555], + [-121.89023843277647, 37.32882904736349] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 200, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.89040420772338, 37.32884311224045], + [-121.89042580515793, 37.32883277658241], + [-121.8904614956801, 37.32887992709264], + [-121.89043989614393, 37.32889026474042], + [-121.89040420772338, 37.32884311224045] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 201, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.89028850169481, 37.328949962932995], + [-121.8902933754081, 37.32895640223805], + [-121.89029559104048, 37.32895933009135], + [-121.89026074225022, 37.328976009278406], + [-121.89025852661784, 37.328973081425765], + [-121.89025352889085, 37.32896670046068], + [-121.89028850169481, 37.328949962932995] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 202, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.89020943394377, 37.329029247160314], + [-121.89019353399125, 37.32900824122109], + [-121.89025247886616, 37.32897997225819], + [-121.89026838754789, 37.3290011274443], + [-121.89020943394377, 37.329029247160314] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 203, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.8901976538328, 37.32903488526642], + [-121.89020943394377, 37.329029247160314], + [-121.89026838754789, 37.3290011274443], + [-121.89028926383303, 37.329028828885825], + [-121.89021864978358, 37.32906262175577], + [-121.8901976538328, 37.32903488526642] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 204, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.89036324015156, 37.328926952676476], + [-121.89037888163303, 37.32894761798211], + [-121.89034853677003, 37.32896214047394], + [-121.89032350417503, 37.328974121235376], + [-121.89030786269413, 37.32895345683378], + [-121.89036324015156, 37.328926952676476] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 205, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.89034853677003, 37.32896214047394], + [-121.89037888163303, 37.32894761798211], + [-121.89039023250965, 37.328942185796286], + [-121.8904115271173, 37.328970318860854], + [-121.89034479829832, 37.32900225245054], + [-121.89032350417503, 37.328974121235376], + [-121.89034853677003, 37.32896214047394] + ] + ] + ] + } + }, { + "name": "", + "id": 197, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88828759749389, 37.32982677902055], + [-121.88826873297508, 37.3298018569856], + [-121.88825637834275, 37.329785535198255], + [-121.8882364565195, 37.32975921633701], + [-121.88827955656319, 37.32973859353008], + [-121.8883306942817, 37.32980615285406], + [-121.88828759749389, 37.32982677902055] + ] + ] + ] + } + }, { + "name": "", + "id": 198, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88837123113962, 37.329694728426034], + [-121.88842236358748, 37.32976227981232], + [-121.88837868865431, 37.329783182691926], + [-121.88836084418686, 37.32979172307547], + [-121.8883306942817, 37.32980615285406], + [-121.88827955656319, 37.32973859353008], + [-121.8883098069855, 37.32972411909546], + [-121.88832756740823, 37.3297156209623], + [-121.88837123113962, 37.329694728426034] + ] + ] + ] + } + }, { + "name": "", + "id": 206, + "category": "Walkway", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.89025247886616, 37.32897997225819], + [-121.89026074225022, 37.328976009278406], + [-121.89029559104048, 37.32895933009135], + [-121.89030786269413, 37.32895345683378], + [-121.89032350417503, 37.328974121235376], + [-121.89034479829832, 37.32900225245054], + [-121.89032414440415, 37.32901213652779], + [-121.89030602172629, 37.329020809271185], + [-121.89028926383303, 37.329028828885825], + [-121.89026838754789, 37.3290011274443], + [-121.89025247886616, 37.32897997225819] + ] + ] + ] + } + }, { + "name": "", + "id": 207, + "category": "Walkway", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.89039023250965, 37.328942185796286], + [-121.89037888163303, 37.32894761798211], + [-121.89036324015156, 37.328926952676476], + [-121.89043989614393, 37.32889026474042], + [-121.8904614956801, 37.32887992709264], + [-121.89042580515793, 37.32883277658241], + [-121.8904671438849, 37.32881299221566], + [-121.89053982057618, 37.32890892300089], + [-121.8904115271173, 37.328970318860854], + [-121.89039023250965, 37.328942185796286] + ] + ] + ] + } + }, { + "name": "Technology Lab K", + "id": 208, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.8897539108853, 37.32982336811125], + [-121.88975125167605, 37.329819855803976], + [-121.88974061709335, 37.329805804778786], + [-121.88973795788354, 37.32980229157394], + [-121.8897260748738, 37.329786592008126], + [-121.88992121904639, 37.329693167688305], + [-121.88998109650895, 37.3297723318502], + [-121.88997944087178, 37.329773124994155], + [-121.88978789709698, 37.32986479217815], + [-121.88978596406112, 37.32986571692386], + [-121.8897539108853, 37.32982336811125] + ] + ] + ] + } + }, { + "name": "Technology Lab I", + "id": 209, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88965583276857, 37.329693789132314], + [-121.88965317355876, 37.32969027592224], + [-121.88964253897663, 37.329676225769575], + [-121.88963987976679, 37.32967271255864], + [-121.88960203276041, 37.32962270944363], + [-121.88979726764501, 37.32952929092647], + [-121.88985926133816, 37.32961125314002], + [-121.88966403769999, 37.329704629406194], + [-121.88965583276857, 37.329693789132314] + ] + ] + ] + } + }, { + "name": "Technology Lab J", + "id": 210, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88970413535245, 37.32975760599617], + [-121.88970059011544, 37.32975292201879], + [-121.88968641029633, 37.32973418789924], + [-121.88968286505934, 37.32972950392038], + [-121.88966403769999, 37.329704629406194], + [-121.88985926133816, 37.32961125314002], + [-121.88992121904639, 37.329693167688305], + [-121.8897260748738, 37.329786592008126], + [-121.88970413535245, 37.32975760599617] + ] + ] + ] + } + }, { + "name": "Technology Lab H", + "id": 211, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88956454827826, 37.329573185259555], + [-121.88956188906901, 37.32956967294056], + [-121.88955125448634, 37.32955562186858], + [-121.88954859527652, 37.32955210865205], + [-121.88953998299345, 37.329540730072495], + [-121.88973527395184, 37.32944732862353], + [-121.88979726764501, 37.32952929092647], + [-121.88960203276041, 37.32962270944363], + [-121.88956454827826, 37.329573185259555] + ] + ] + ] + } + }, { + "name": "Technology Lab G", + "id": 212, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.8895197943175, 37.3295140567139], + [-121.88951624908104, 37.329509373618066], + [-121.88950206926138, 37.329490638541046], + [-121.88949852402496, 37.32948595544371], + [-121.88947797549898, 37.329458806487466], + [-121.88967325603636, 37.329365334206585], + [-121.88973527395184, 37.32944732862353], + [-121.88953998299345, 37.329540730072495], + [-121.8895197943175, 37.3295140567139] + ] + ] + ] + } + }, { + "name": "Technology Lab F", + "id": 213, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88946159531933, 37.32943716479279], + [-121.88945893610949, 37.32943365157071], + [-121.88944830152684, 37.329419600473294], + [-121.88944562766159, 37.32941609532695], + [-121.88942298725465, 37.32938625770155], + [-121.88961839731952, 37.329292804952885], + [-121.88967325603636, 37.329365334206585], + [-121.88947797549898, 37.329458806487466], + [-121.88946159531933, 37.32943716479279] + ] + ] + ] + } + }, { + "name": "Technology Lab A", + "id": 214, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88925499925861, 37.32961272519541], + [-121.88925935648481, 37.32961848166466], + [-121.88944760907582, 37.32952838585465], + [-121.8894432544339, 37.329522632808185], + [-121.8894377881555, 37.329515411840774], + [-121.8893909260544, 37.32945349746821], + [-121.8892026714585, 37.329543589660986], + [-121.8892495341079, 37.32960550423624], + [-121.88925499925861, 37.32961272519541] + ] + ] + ] + } + }, { + "name": "Technology Lab B", + "id": 215, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88931669006597, 37.32969377101177], + [-121.88932104729217, 37.329699527474844], + [-121.88950929988317, 37.32960943176198], + [-121.88950494524126, 37.32960367872172], + [-121.88949947896286, 37.32959645776214], + [-121.88945261686176, 37.329534543456376], + [-121.88926436226586, 37.32962463555196], + [-121.88931122491526, 37.329686550060366], + [-121.88931669006597, 37.32969377101177] + ] + ] + ] + } + }, { + "name": "Technology Lab C", + "id": 216, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.8893783808733, 37.32977481674071], + [-121.8893827380995, 37.329780573197546], + [-121.8895709906905, 37.3296904775819], + [-121.88956663604858, 37.3296847245479], + [-121.88956116977019, 37.32967750359604], + [-121.88951430766909, 37.32961558935708], + [-121.88932605307319, 37.32970568135547], + [-121.88937291572259, 37.329767595797115], + [-121.8893783808733, 37.32977481674071] + ] + ] + ] + } + }, { + "name": "Technology Lab D", + "id": 217, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88944007168064, 37.32985586238227], + [-121.88944442890684, 37.32986161883292], + [-121.88963268149786, 37.32977152331443], + [-121.88962832685594, 37.329765770286585], + [-121.88962286057755, 37.329758549342586], + [-121.88957599847645, 37.32969663517037], + [-121.88938774388053, 37.32978672707158], + [-121.88943460652995, 37.32984864144646], + [-121.88944007168064, 37.32985586238227] + ] + ] + ] + } + }, { + "name": "Technology Lab E", + "id": 218, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.889501762488, 37.32993690793635], + [-121.8895061197142, 37.329942664380816], + [-121.88969437230521, 37.329852568959495], + [-121.8896900176633, 37.32984681593791], + [-121.8896845513849, 37.32983959500165], + [-121.8896376892838, 37.32977768089623], + [-121.88944943468789, 37.32986777270029], + [-121.8894962973373, 37.32992968700835], + [-121.889501762488, 37.32993690793635] + ] + ] + ] + } + }, { + "name": "Parking", + "id": 221, + "category": "COMBINED", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88869178295135, 37.32890298845673], + [-121.88853353261948, 37.32890298845673], + [-121.88853353261948, 37.329035222308605], + [-121.88869178295135, 37.329035222308605], + [-121.88869178295135, 37.32890298845673] + ] + ] + ] + } + }] + }, { + "name": "Concourse", + "id": 6, + "ordinal": 1, + "clFloors": [1], + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88833250847962, 37.329967378765886], + [-121.88813457202903, 37.330061391155205], + [-121.88799267412047, 37.330128787266766], + [-121.88788235725293, 37.33018118354276], + [-121.88784526375981, 37.33013217963196], + [-121.88780582994292, 37.33008008390352], + [-121.88778218854299, 37.330048851404825], + [-121.88767044667948, 37.32990122978473], + [-121.88761469831044, 37.32992791130142], + [-121.88756155409857, 37.32988475719594], + [-121.88752009303535, 37.32985118134599], + [-121.88749268606361, 37.32982898672195], + [-121.88750470924404, 37.32982323236764], + [-121.88749779146156, 37.329814093913434], + [-121.8874696045154, 37.32977685608972], + [-121.88744840871816, 37.32974885532142], + [-121.88742632086925, 37.32975942689301], + [-121.88741752606398, 37.32974780883639], + [-121.88738655800915, 37.329706897305186], + [-121.88737125836208, 37.32968668381605], + [-121.88734842793745, 37.3296979445942], + [-121.88728993096802, 37.3296206664907], + [-121.8872672681498, 37.32963151361089], + [-121.8872265438965, 37.32957771407053], + [-121.88722452381643, 37.329575045180405], + [-121.8872138600284, 37.32956095639156], + [-121.88721253234371, 37.32955920228026], + [-121.88717446425707, 37.32957703626995], + [-121.8870924260268, 37.32951070686776], + [-121.88693930772845, 37.329386710379545], + [-121.88731861184374, 37.32910709889332], + [-121.88777569823588, 37.328767979074144], + [-121.8879295218111, 37.32865385452081], + [-121.88809063512277, 37.32853477845086], + [-121.88809208098355, 37.32853668882751], + [-121.88817335704626, 37.32864540222669], + [-121.8882611655488, 37.32860451593586], + [-121.88832215270835, 37.328685179583644], + [-121.88837041035484, 37.32874603066688], + [-121.88915659626325, 37.32836559610752], + [-121.88911289590375, 37.32830672461403], + [-121.88894449997868, 37.32808425124394], + [-121.88929790556527, 37.32791510842589], + [-121.88926304463497, 37.32786905280552], + [-121.88935833850654, 37.32782344373795], + [-121.88939319943741, 37.32786950028302], + [-121.8897028926996, 37.32772130322522], + [-121.8899420524811, 37.32803827572961], + [-121.88998008140818, 37.32808867757686], + [-121.88993800338676, 37.32810881639541], + [-121.88993498993963, 37.328110257894465], + [-121.89001617874533, 37.32821749349289], + [-121.89009576969276, 37.32832261846354], + [-121.89017245949697, 37.32842391141956], + [-121.89025100442481, 37.328527654507035], + [-121.89029889188518, 37.328590904771694], + [-121.89050140827759, 37.32885822007546], + [-121.89053982057618, 37.32890892300089], + [-121.89034531580984, 37.329002004791484], + [-121.89028494046663, 37.32903089786489], + [-121.89009495360739, 37.3291218174291], + [-121.89006521742476, 37.32913604805366], + [-121.89003951427291, 37.329148348618446], + [-121.88979967275885, 37.32926312767744], + [-121.88977412172792, 37.329275355422155], + [-121.88984072742755, 37.32936010577241], + [-121.88985227986866, 37.329354674929185], + [-121.88986504984318, 37.32934859792979], + [-121.8899232792594, 37.32942542896236], + [-121.88997205927822, 37.32948987088369], + [-121.8901226770951, 37.32968884667677], + [-121.89012521214825, 37.3296921958355], + [-121.89001498546354, 37.329763441994686], + [-121.89001767989697, 37.329767054092144], + [-121.89007094018903, 37.32983846481254], + [-121.89002748933683, 37.32985931606225], + [-121.88962169751876, 37.33005404767204], + [-121.88954797990144, 37.330089423270245], + [-121.88949370107301, 37.33001781046425], + [-121.88948526715843, 37.33002184660872], + [-121.88946640121219, 37.330030875118254], + [-121.88945305270585, 37.330037263194576], + [-121.88945127965943, 37.33003492453035], + [-121.88939609884862, 37.329962101268784], + [-121.889147292164, 37.329792803956096], + [-121.88912355115303, 37.329761437004485], + [-121.88911721979261, 37.3297644634486], + [-121.88909955145806, 37.32977290906218], + [-121.88905889091626, 37.329792345141946], + [-121.88904686935408, 37.32979809154846], + [-121.88903840954457, 37.32980214031564], + [-121.88895950329693, 37.329839903924295], + [-121.88897444220662, 37.32985963960496], + [-121.88878892936853, 37.329948426026206], + [-121.88877396626619, 37.32992870174322], + [-121.88868664722641, 37.329970582365775], + [-121.88863098763963, 37.329897050896804], + [-121.88856383187645, 37.32980833181841], + [-121.888552913974, 37.32979390823262], + [-121.88843409244153, 37.329850775864166], + [-121.88841081080257, 37.32986191838219], + [-121.88829473236109, 37.329917473128724], + [-121.88833250847962, 37.329967378765886] + ] + ] + ] + }, + "regions": [{ + "name": "UI Design Lab", + "id": 283, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88759475946425, 37.32984568276788], + [-121.88780397176743, 37.3297454420796], + [-121.88769936561584, 37.32960681112011], + [-121.88748210668564, 37.32970491921022], + [-121.88759475946425, 37.32984568276788] + ] + ] + ] + } + }, { + "name": "The Company Store", + "id": 282, + "category": "COMBINED", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88800245523454, 37.32909707354652], + [-121.88797563314438, 37.32909707354652], + [-121.88797563314438, 37.32912053434762], + [-121.88800245523454, 37.32912053434762], + [-121.88800245523454, 37.32909707354652] + ] + ] + ] + } + }, { + "name": "East Terrace", + "id": 281, + "category": "COMBINED", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88741236925125, 37.329713450342425], + [-121.88740164041519, 37.329713450342425], + [-121.88740164041519, 37.32972837982147], + [-121.88741236925125, 37.32972837982147], + [-121.88741236925125, 37.329713450342425] + ] + ] + ] + } + }, { + "name": "Market Terrace", + "id": 280, + "category": "COMBINED", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88776910305023, 37.32995871997932], + [-121.88775032758711, 37.32995871997932], + [-121.88775032758711, 37.32997578218516], + [-121.88776910305023, 37.32997578218516], + [-121.88776910305023, 37.32995871997932] + ] + ] + ] + } + }, { + "name": "Scholarship Lounge", + "id": 279, + "category": "COMBINED", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88850402832031, 37.32886459794001], + [-121.8884664773941, 37.32886459794001], + [-121.8884664773941, 37.328896590038624], + [-121.88850402832031, 37.328896590038624], + [-121.88850402832031, 37.32886459794001] + ] + ] + ] + } + }, { + "name": "Plaza Terrace", + "id": 278, + "category": "COMBINED", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88932746648787, 37.32985208110516], + [-121.88933014869691, 37.329843549988674], + [-121.88931673765181, 37.32984568276788], + [-121.88932746648787, 37.32985208110516] + ] + ] + ] + } + }, { + "name": "Grand Ballroom A", + "id": 277, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88978612422943, 37.329510835690634], + [-121.88936233520506, 37.32971558312532], + [-121.88933283090593, 37.32973264538638], + [-121.88953131437303, 37.32999071161207], + [-121.88998192548752, 37.32977103545955], + [-121.88978612422943, 37.329510835690634] + ] + ] + ] + } + }, { + "name": "Grand Ballroom B", + "id": 276, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.8891853094101, 37.329502304535396], + [-121.88930869102478, 37.32966226353461], + [-121.88931941986083, 37.3296558651812], + [-121.88936501741408, 37.32970918477645], + [-121.88978344202042, 37.329510835690634], + [-121.88962250947952, 37.329295423724695], + [-121.8891853094101, 37.329502304535396] + ] + ] + ] + } + }, { + "name": "App Store Lab", + "id": 275, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.8874579668045, 37.3296686618875], + [-121.88767254352568, 37.32956628817595], + [-121.88755720853807, 37.32941912572123], + [-121.88734531402586, 37.329521499633294], + [-121.8874579668045, 37.3296686618875] + ] + ] + ] + } + }, { + "name": "Hall 1", + "id": 274, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88842762882018, 37.329470267977186], + [-121.88842715720814, 37.32947049366629], + [-121.88840948760556, 37.32947895077541], + [-121.88835721272909, 37.32950397027898], + [-121.88834837849137, 37.32950819838319], + [-121.88833929735515, 37.32951254495634], + [-121.88837803648703, 37.329563721925986], + [-121.88830292970671, 37.32959966933139], + [-121.88828517685482, 37.329608166151154], + [-121.88789162389023, 37.329088240851604], + [-121.88798447679513, 37.329043799957184], + [-121.88805932885211, 37.32900797443451], + [-121.88806816421754, 37.32900374630168], + [-121.88808068061428, 37.328997755606665], + [-121.88833800918411, 37.32887482826811], + [-121.8883462228623, 37.32887066188066], + [-121.88835505822775, 37.32886643374014], + [-121.88843408583837, 37.32882861483955], + [-121.88851797082047, 37.32878846312544], + [-121.888872811574, 37.32925718985823], + [-121.88878104982471, 37.329301116135895], + [-121.88880285281286, 37.329329916377205], + [-121.88881913918875, 37.32935142954752], + [-121.88873848199746, 37.32938965519507], + [-121.88870055296356, 37.329339643046225], + [-121.88869220914134, 37.32934363691227], + [-121.888674538411, 37.32935209403613], + [-121.88863036384033, 37.32937323639229], + [-121.88861217567471, 37.32938193051965], + [-121.88861158983623, 37.32938221170354], + [-121.88860385887284, 37.3293859225206], + [-121.88859502350739, 37.32939015063189], + [-121.8885884283263, 37.32939330720671], + [-121.88851948937011, 37.32942630264949], + [-121.88845010533358, 37.329459511101234], + [-121.888444871907, 37.32946201591303], + [-121.88843554612663, 37.32946647916379], + [-121.88842762882018, 37.329470267977186] + ] + ] + ] + } + }, { + "name": "Hall 3", + "id": 273, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88931748060628, 37.32840580206368], + [-121.88940592820288, 37.32836347062175], + [-121.88947713709801, 37.328329389687234], + [-121.8894863804958, 37.32832496574956], + [-121.88949460281528, 37.32832103050497], + [-121.88958259090887, 37.32827891893589], + [-121.88966610710217, 37.32823894762021], + [-121.89019811313715, 37.32894185505483], + [-121.89011472319196, 37.32898178134016], + [-121.89006272626074, 37.32891312424378], + [-121.88996582564133, 37.3289595257163], + [-121.88995632425895, 37.32896407551161], + [-121.88995055321315, 37.32896683901221], + [-121.88981364048405, 37.32903240048044], + [-121.88980667122425, 37.32903573775008], + [-121.88979816260937, 37.32903981214849], + [-121.8897898889327, 37.32904377404516], + [-121.88970925079444, 37.32908237868552], + [-121.88973657266733, 37.32911847505507], + [-121.88972883590657, 37.32912217878868], + [-121.8896620988558, 37.32915412083073], + [-121.88965275616457, 37.32915859217729], + [-121.88964487367468, 37.329162364800396], + [-121.88963697588584, 37.32915192958343], + [-121.8895918122719, 37.32909225562397], + [-121.88957226232677, 37.32906642357934], + [-121.8895537065101, 37.3290419051041], + [-121.88913747097445, 37.32849195545917], + [-121.88922133349305, 37.32845181850402], + [-121.88930050421814, 37.328413927041396], + [-121.88930942167254, 37.32840965910667], + [-121.88931748060628, 37.32840580206368] + ] + ] + ] + } + }, { + "name": "Hall 2", + "id": 272, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88901623192923, 37.32929914143532], + [-121.88904437359172, 37.32933632389063], + [-121.88902102622946, 37.32934749013038], + [-121.88898058147447, 37.32936683446155], + [-121.88897161144727, 37.329371124737236], + [-121.8889623882181, 37.32937553611666], + [-121.88891092155676, 37.329307538896366], + [-121.88889142349566, 37.329281779019574], + [-121.888872811574, 37.32925718985823], + [-121.88851797082047, 37.32878846312544], + [-121.88860293170528, 37.32874779640649], + [-121.88868170968945, 37.32871009201633], + [-121.88869054505491, 37.32870586386678], + [-121.88869888887714, 37.32870186996684], + [-121.88887552768928, 37.328617323466425], + [-121.88883772360849, 37.32856683110588], + [-121.88886363569529, 37.32855442951585], + [-121.88886836627034, 37.3285606790156], + [-121.88887534488015, 37.32856989836315], + [-121.88888137128536, 37.32857785976509], + [-121.88888742013184, 37.328585850813056], + [-121.88889439924006, 37.32859507081595], + [-121.88890174477433, 37.328604774898], + [-121.88893704374424, 37.3285878806901], + [-121.88896423257664, 37.32857486801918], + [-121.88897369404388, 37.32857033972712], + [-121.8890447569531, 37.32853632875588], + [-121.88913747097445, 37.32849195545917], + [-121.8895537065101, 37.3290419051041], + [-121.88946085785304, 37.32908634027439], + [-121.88948354796626, 37.32911632146834], + [-121.88949898964185, 37.329136681015804], + [-121.88941855039306, 37.32917519288463], + [-121.88938045786686, 37.3291248232066], + [-121.88937211404405, 37.32912881618736], + [-121.88935444331374, 37.329137273335384], + [-121.88931026874364, 37.32915841664872], + [-121.88929210130718, 37.32916710688072], + [-121.88928377153069, 37.329171093665884], + [-121.88927512940371, 37.32917522994758], + [-121.88926863562872, 37.32917833798816], + [-121.88913018726521, 37.3292446018998], + [-121.88912470809586, 37.32924722432897], + [-121.88911594285044, 37.32925141953316], + [-121.8891077192906, 37.329255355476676], + [-121.88908923251645, 37.329264203270554], + [-121.88904525194268, 37.32928525242555], + [-121.88902706111784, 37.32929395857425], + [-121.88901623192923, 37.32929914143532] + ] + ] + ] + } + }, { + "name": "Executive Ballroom", + "id": 271, + "category": "Room", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88815534114836, 37.32957908489754], + [-121.88782274723053, 37.32914186234222], + [-121.88755452632903, 37.329267697387195], + [-121.88788443803787, 37.329707051993374], + [-121.88815534114836, 37.32957908489754] + ] + ] + ] + } + }, { + "name": "Restroom (Female)", + "id": 270, + "category": "Restroom (Female)", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.8877249190886, 37.32980659415552], + [-121.88776300805566, 37.32985704378327], + [-121.88767044667948, 37.32990122978473], + [-121.88763233653937, 37.32985088088005], + [-121.88771271473085, 37.32981243547334], + [-121.887721548968, 37.329808206489545], + [-121.8877249190886, 37.32980659415552] + ] + ] + ] + } + }, { + "name": "Restroom (Male)", + "id": 269, + "category": "Restroom (Male)", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88773038433347, 37.329803978401806], + [-121.88773921969833, 37.329799749417035], + [-121.88781824418645, 37.32976192727486], + [-121.88785647181635, 37.32981242698437], + [-121.88776300805566, 37.32985704378327], + [-121.8877249190886, 37.32980659415552], + [-121.88773038433347, 37.329803978401806] + ] + ] + ] + } + }, { + "name": "Elevator", + "id": 268, + "category": "Elevator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.89014905609088, 37.32866265695125], + [-121.89014033000217, 37.328666835629484], + [-121.89012873730087, 37.328672387047355], + [-121.89012032020916, 37.32867641775507], + [-121.89010301052953, 37.32865355602506], + [-121.89013182537198, 37.32863981315021], + [-121.89014905609088, 37.32866265695125] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 267, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.8896620988558, 37.32915412083073], + [-121.88972883590657, 37.32912217878868], + [-121.88973657266733, 37.32911847505507], + [-121.88974732086965, 37.329132675068145], + [-121.88966427241331, 37.32917242225782], + [-121.88965561976855, 37.329176563433066], + [-121.88964487367468, 37.329162364800396], + [-121.88965275616457, 37.32915859217729], + [-121.8896620988558, 37.32915412083073] + ] + ] + ] + } + }, { + "name": "Restroom (Male)", + "id": 266, + "category": "Restroom (Male)", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88996036943703, 37.32897989320965], + [-121.88995055321315, 37.32896683901221], + [-121.88995632425895, 37.32896407551161], + [-121.88996582564133, 37.3289595257163], + [-121.8900039295406, 37.329009863026634], + [-121.88992034275377, 37.32904986716096], + [-121.88989208030992, 37.32901252782469], + [-121.88996036943703, 37.32897989320965] + ] + ] + ] + } + }, { + "name": "Restroom (Female)", + "id": 265, + "category": "Restroom (Female)", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88982796510373, 37.32909407852484], + [-121.8897898889327, 37.32904377404516], + [-121.88979816260937, 37.32903981214849], + [-121.88980667122425, 37.32903573775008], + [-121.88981364048405, 37.32903240048044], + [-121.88982341952347, 37.32904534003728], + [-121.88989208030992, 37.32901252782469], + [-121.88992034275377, 37.32904986716096], + [-121.88982796510373, 37.32909407852484] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 264, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88976599919489, 37.32912373557414], + [-121.88974732086965, 37.329132675068145], + [-121.88973657266733, 37.32911847505507], + [-121.88970925079444, 37.32908237868552], + [-121.8897898889327, 37.32904377404516], + [-121.88982796510373, 37.32909407852484], + [-121.88980931146844, 37.329103006205706], + [-121.88976599919489, 37.32912373557414] + ] + ] + ] + } + }, { + "name": "Restroom (Male)", + "id": 263, + "category": "Restroom (Male)", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88927512940371, 37.32917522994758], + [-121.88928377153069, 37.329171093665884], + [-121.88932171198985, 37.3292215093041], + [-121.88923782495962, 37.32926165252448], + [-121.88921104039397, 37.329226268551544], + [-121.8892801809607, 37.3291939190695], + [-121.88926863562872, 37.32917833798816], + [-121.88927512940371, 37.32917522994758] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 262, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88928377153069, 37.329171093665884], + [-121.88929210130718, 37.32916710688072], + [-121.88931026874364, 37.32915841664872], + [-121.88935444331374, 37.329137273335384], + [-121.88937211404405, 37.32912881618736], + [-121.88938045786686, 37.3291248232066], + [-121.88941855039306, 37.32917519288463], + [-121.88933020021919, 37.32921744735364], + [-121.88932171198985, 37.3292215093041], + [-121.88928377153069, 37.329171093665884] + ] + ] + ] + } + }, { + "name": "Restroom (Female)", + "id": 261, + "category": "Restroom (Female)", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88923782495962, 37.32926165252448], + [-121.88914580995723, 37.32930568527236], + [-121.8891077192906, 37.329255355476676], + [-121.88911594285044, 37.32925141953316], + [-121.88912470809586, 37.32924722432897], + [-121.88913018726521, 37.3292446018998], + [-121.8891409032146, 37.3292590841849], + [-121.88921104039397, 37.329226268551544], + [-121.88923782495962, 37.32926165252448] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 260, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88905432058986, 37.32934946645788], + [-121.88903097236687, 37.32936063947763], + [-121.88897238975098, 37.32938878573791], + [-121.8889623882181, 37.32937553611666], + [-121.88897161144727, 37.329371124737236], + [-121.88898058147447, 37.32936683446155], + [-121.88902102622946, 37.32934749013038], + [-121.88904437359172, 37.32933632389063], + [-121.88905432058986, 37.32934946645788] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 259, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.8891077192906, 37.329255355476676], + [-121.88914580995723, 37.32930568527236], + [-121.88905432058986, 37.32934946645788], + [-121.88904437359172, 37.32933632389063], + [-121.88901623192923, 37.32929914143532], + [-121.88902706111784, 37.32929395857425], + [-121.88904525194268, 37.32928525242555], + [-121.88908923251645, 37.329264203270554], + [-121.8891077192906, 37.329255355476676] + ] + ] + ] + } + }, { + "name": "Elevator", + "id": 258, + "category": "Elevator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88953140570274, 37.32912116257853], + [-121.88952096920563, 37.32912615685788], + [-121.88950937422156, 37.329131705518954], + [-121.88949898964185, 37.329136681015804], + [-121.88948354796626, 37.32911632146834], + [-121.88949139911958, 37.32911256452985], + [-121.8895159909057, 37.32910079649677], + [-121.88953140570274, 37.32912116257853] + ] + ] + ] + } + }, { + "name": "Elevator", + "id": 257, + "category": "Elevator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88881067581761, 37.32932615800245], + [-121.8888349938923, 37.32931447481521], + [-121.88885133265364, 37.3293360585056], + [-121.88884467893205, 37.329339243016314], + [-121.88883308471313, 37.32934479207808], + [-121.88882703515209, 37.329347687433646], + [-121.88881913918875, 37.32935142954752], + [-121.88880285281286, 37.329329916377205], + [-121.88881067581761, 37.32932615800245] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 256, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88883183326672, 37.329310299592], + [-121.88888357037771, 37.32928553760589], + [-121.88889142349566, 37.329281779019574], + [-121.88891092155676, 37.329307538896366], + [-121.88886247464464, 37.32933073361383], + [-121.88885363927976, 37.329334962624955], + [-121.88885133265364, 37.3293360585056], + [-121.8888349938923, 37.32931447481521], + [-121.88883183326672, 37.329310299592] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 255, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88870055296356, 37.329339643046225], + [-121.88873848199746, 37.32938965519507], + [-121.8886499374478, 37.32943181680062], + [-121.88864946753839, 37.32943204055384], + [-121.88861158983623, 37.32938221170354], + [-121.88861217567471, 37.32938193051965], + [-121.88863036384033, 37.32937323639229], + [-121.888674538411, 37.32935209403613], + [-121.88869220914134, 37.32934363691227], + [-121.88870055296356, 37.329339643046225] + ] + ] + ] + } + }, { + "name": "Restroom (Male)", + "id": 254, + "category": "Restroom (Male)", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88859502350739, 37.32939015063189], + [-121.88860385887284, 37.3293859225206], + [-121.88861158983623, 37.32938221170354], + [-121.88864946753839, 37.32943204055384], + [-121.88855758287363, 37.329476617272974], + [-121.88853532277933, 37.32944721620474], + [-121.88853106820532, 37.32944159655214], + [-121.88853542947064, 37.32943950962461], + [-121.88860000531268, 37.329408602517915], + [-121.8885884283263, 37.32939330720671], + [-121.88859502350739, 37.32939015063189] + ] + ] + ] + } + }, { + "name": "Restroom (Female)", + "id": 253, + "category": "Restroom (Female)", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88843554612663, 37.32946647916379], + [-121.888444871907, 37.32946201591303], + [-121.88845010533358, 37.329459511101234], + [-121.88845276333907, 37.32946302422138], + [-121.88845766526946, 37.32946950023709], + [-121.88846168243293, 37.32947480565223], + [-121.88853106820532, 37.32944159655214], + [-121.88853532277933, 37.32944721620474], + [-121.88855758287363, 37.329476617272974], + [-121.88846604824116, 37.329521024151994], + [-121.88844844840075, 37.32949777531897], + [-121.88842762882018, 37.329470267977186], + [-121.88843554612663, 37.32946647916379] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 252, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88833929735515, 37.32951254495634], + [-121.88834837849137, 37.32950819838319], + [-121.88835721272909, 37.32950397027898], + [-121.88840948760556, 37.32947895077541], + [-121.88842715720814, 37.32947049366629], + [-121.88842762882018, 37.329470267977186], + [-121.88844844840075, 37.32949777531897], + [-121.88846604824116, 37.329521024151994], + [-121.88837803648703, 37.329563721925986], + [-121.88833929735515, 37.32951254495634] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 251, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.89020281959519, 37.328732555825155], + [-121.89024373819903, 37.328786545523094], + [-121.89021577101506, 37.32879994704845], + [-121.89017487946003, 37.328745928655444], + [-121.89017643889828, 37.32874518227033], + [-121.89020281959519, 37.328732555825155] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 250, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.89027122512465, 37.32877338989802], + [-121.89023033370621, 37.32871938689803], + [-121.89025832106672, 37.3287059914598], + [-121.89029920099067, 37.328759995703074], + [-121.89027122512465, 37.32877338989802] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 249, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88763233653937, 37.32985088088005], + [-121.88767044667948, 37.32990122978473], + [-121.88761469831044, 37.32992791130142], + [-121.88756155409857, 37.32988475719594], + [-121.8875680457784, 37.329881650293295], + [-121.8875767209596, 37.329877498371864], + [-121.88763233653937, 37.32985088088005] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 248, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88953140570274, 37.32912116257853], + [-121.8895159909057, 37.32910079649677], + [-121.88951185536024, 37.32909533255572], + [-121.88957226232677, 37.32906642357934], + [-121.8895918122719, 37.32909225562397], + [-121.88954339773134, 37.32911542391507], + [-121.88953462862115, 37.32911962028373], + [-121.88953140570274, 37.32912116257853] + ] + ] + ] + } + }, { + "name": "Elevator", + "id": 247, + "category": "Elevator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88893704374424, 37.3285878806901], + [-121.88890174477433, 37.328604774898], + [-121.88889439924006, 37.32859507081595], + [-121.88888742013184, 37.328585850813056], + [-121.88888137128536, 37.32857785976509], + [-121.88891666963855, 37.328560965215374], + [-121.88893704374424, 37.3285878806901] + ] + ] + ] + } + }, { + "name": "Elevator", + "id": 246, + "category": "Elevator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88886363569529, 37.32855442951585], + [-121.88889893408934, 37.32853753543186], + [-121.88891666963855, 37.328560965215374], + [-121.88888137128536, 37.32857785976509], + [-121.88887534488015, 37.32856989836315], + [-121.88886836627034, 37.3285606790156], + [-121.88886363569529, 37.32855442951585] + ] + ] + ] + } + }, { + "name": "Restroom (Female)", + "id": 245, + "category": "Restroom (Female)", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88812182052884, 37.32968634956456], + [-121.88804193893402, 37.329724580283695], + [-121.88803246402358, 37.32972911490196], + [-121.88802827464156, 37.32973111990742], + [-121.88798953867598, 37.32967994365988], + [-121.88808307993294, 37.329635173689354], + [-121.88810487930866, 37.329663970191525], + [-121.88812182052884, 37.32968634956456] + ] + ] + ] + } + }, { + "name": "Restroom (Male)", + "id": 244, + "category": "Restroom (Male)", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88799312762949, 37.329747940990444], + [-121.88793557621389, 37.32977548521895], + [-121.88789788197543, 37.32972381163317], + [-121.88798953867598, 37.32967994365988], + [-121.88802827464156, 37.32973111990742], + [-121.88802430631164, 37.32973301911903], + [-121.88801536149536, 37.329737300037905], + [-121.88799312762949, 37.329747940990444] + ] + ] + ] + } + }, { + "name": "Elevator", + "id": 243, + "category": "Elevator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88812182052884, 37.32968634956456], + [-121.88810487930866, 37.329663970191525], + [-121.88812982004998, 37.329652031979194], + [-121.88814676119581, 37.329674413543124], + [-121.88813981871142, 37.32967773605441], + [-121.88812822481582, 37.329683284622384], + [-121.88812182052884, 37.32968634956456] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 242, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88812671839861, 37.32964793427407], + [-121.88818129255272, 37.329621815134814], + [-121.88818914729185, 37.32961805580002], + [-121.88820918935797, 37.329644535061135], + [-121.88815648260521, 37.32966976082075], + [-121.88814676119581, 37.329674413543124], + [-121.88812982004998, 37.329652031979194], + [-121.88812671839861, 37.32964793427407] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 241, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88778218854299, 37.330048851404825], + [-121.8879133283317, 37.32998649423099], + [-121.88793663263661, 37.33001748070531], + [-121.88781304803678, 37.330076629211234], + [-121.88780582994292, 37.33008008390352], + [-121.88778218854299, 37.330048851404825] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 240, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88798588136999, 37.33011980897994], + [-121.88791168999272, 37.330155293902635], + [-121.88789721332778, 37.33013616992818], + [-121.88797162383078, 37.33010055520921], + [-121.88798588136999, 37.33011980897994] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 239, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88812724270119, 37.33005215175899], + [-121.88811279665529, 37.33003306677485], + [-121.88817583792569, 37.3300028209548], + [-121.88819035180771, 37.33002194763828], + [-121.88812724270119, 37.33005215175899] + ] + ] + ] + } + }, { + "name": "Escalator", + "id": 238, + "category": "Escalator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88865998929062, 37.32988330722923], + [-121.88863098763963, 37.329897050896804], + [-121.88856383187645, 37.32980833181841], + [-121.88859324594362, 37.3297942553351], + [-121.88865998929062, 37.32988330722923] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 237, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88871624628382, 37.32985664790821], + [-121.88865998929062, 37.32988330722923], + [-121.88859324594362, 37.3297942553351], + [-121.88864945507859, 37.32976753110941], + [-121.88871624628382, 37.32985664790821] + ] + ] + ] + } + }, { + "name": "Escalator", + "id": 236, + "category": "Escalator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88898270512375, 37.32972855504507], + [-121.88896460119089, 37.32973721994024], + [-121.88889753289797, 37.32964861873916], + [-121.88891563438219, 37.32963995482418], + [-121.88898270512375, 37.32972855504507] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 235, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88889753289797, 37.32964861873916], + [-121.88896460119089, 37.32973721994024], + [-121.88890699524329, 37.32976535407732], + [-121.88883903923652, 37.32967661504756], + [-121.88889753289797, 37.32964861873916] + ] + ] + ] + } + }, { + "name": "Escalator", + "id": 234, + "category": "Escalator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88902997996868, 37.32975413275855], + [-121.8889500290061, 37.32964845930207], + [-121.88896457815375, 37.32964149765174], + [-121.88904455308165, 37.32974715838105], + [-121.88902997996868, 37.32975413275855] + ] + ] + ] + } + }, { + "name": "Escalator", + "id": 233, + "category": "Escalator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88899737847252, 37.329655868582314], + [-121.88906064654816, 37.32973945639441], + [-121.88904455308165, 37.32974715838105], + [-121.88896457815375, 37.32964149765174], + [-121.88898067266251, 37.32963379655775], + [-121.88899737847252, 37.329655868582314] + ] + ] + ] + } + }, { + "name": "Restroom (Female)", + "id": 232, + "category": "Restroom (Female)", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88916797040228, 37.32961218576344], + [-121.88919220593165, 37.32960058653918], + [-121.88924074053578, 37.329577352530876], + [-121.88929322619, 37.32964668981072], + [-121.8892295332682, 37.32967717401719], + [-121.88919393684387, 37.32963014751915], + [-121.8891676771184, 37.32964271538858], + [-121.88915066931568, 37.32962024724779], + [-121.88915244833889, 37.3296193955255], + [-121.88916797040228, 37.32961218576344] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 231, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88815889220277, 37.329909343904234], + [-121.88807754168153, 37.32994792913703], + [-121.88805561126283, 37.329919206864375], + [-121.88813649885809, 37.329879760944834], + [-121.88815889220277, 37.329909343904234] + ] + ] + ] + } + }, { + "name": "Elevator", + "id": 230, + "category": "Elevator", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88909388813482, 37.329543744937986], + [-121.8891008227896, 37.32954042609317], + [-121.88910286893434, 37.32953944683216], + [-121.8891132536004, 37.32953447685187], + [-121.88912217325381, 37.32953020800928], + [-121.88914006655297, 37.32955384410013], + [-121.8891117805886, 37.32956738229401], + [-121.88909388813482, 37.329543744937986] + ] + ] + ] + } + }, { + "name": "Restroom (Male)", + "id": 229, + "category": "Restroom (Male)", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88911095273204, 37.329567778521685], + [-121.8891117805886, 37.32956738229401], + [-121.88914006655297, 37.32955384410013], + [-121.8891617044824, 37.32954348777899], + [-121.88920090430787, 37.32952472599953], + [-121.88922379976373, 37.329554972553176], + [-121.88917703870146, 37.32957734849353], + [-121.88917349797889, 37.32957266988345], + [-121.88914748342629, 37.32958512083475], + [-121.8891582669955, 37.329599366431616], + [-121.88914070856617, 37.32960708816029], + [-121.88911095273204, 37.329567778521685] + ] + ] + ] + } + }, { + "name": "Restroom (Male)", + "id": 228, + "category": "Restroom (Male)", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.8897412301707, 37.32929109447518], + [-121.88974145615268, 37.32929138570155], + [-121.88977087385851, 37.329329296731515], + [-121.88970343202804, 37.3293616314665], + [-121.88967719194737, 37.3293269263181], + [-121.88969027985452, 37.32932066214808], + [-121.88969916040465, 37.329316411714494], + [-121.8897004545492, 37.3293157923074], + [-121.88969755050809, 37.329311955950864], + [-121.8897412301707, 37.32929109447518] + ] + ] + ] + } + }, { + "name": "Restroom (Female)", + "id": 227, + "category": "Restroom (Female)", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88970211974704, 37.32924069143665], + [-121.88970393420573, 37.329243030589204], + [-121.8897412301707, 37.32929109447518], + [-121.88969755050809, 37.329311955950864], + [-121.8896843988374, 37.32929458205573], + [-121.88968307652938, 37.329295214953646], + [-121.88967440927992, 37.329299363369714], + [-121.8896655634021, 37.32930359728269], + [-121.88966449237888, 37.329302181917406], + [-121.88964064521927, 37.329270595103615], + [-121.88970211974704, 37.32924069143665] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 226, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.89034078166739, 37.32899601619011], + [-121.89032431059522, 37.328974257212046], + [-121.89039057414251, 37.32894254305812], + [-121.8904071185805, 37.328964399760224], + [-121.89034078166739, 37.32899601619011] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 225, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.89026393766784, 37.329003153195025], + [-121.89028040874004, 37.32902491216471], + [-121.89021421968626, 37.32905672399819], + [-121.89019767524827, 37.329034867322925], + [-121.89026393766784, 37.329003153195025] + ] + ] + ] + } + }, { + "name": "Stairs", + "id": 224, + "category": "Stairs", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88954797990144, 37.330089423270245], + [-121.88949370107301, 37.33001781046425], + [-121.88948750132829, 37.330009621622395], + [-121.88952965077925, 37.329989451888906], + [-121.88956127861299, 37.32997431481529], + [-121.88956608680797, 37.32998058368086], + [-121.8895767225178, 37.32999463377615], + [-121.88960283266093, 37.33002912655642], + [-121.88961346837137, 37.330043177539366], + [-121.88962169751876, 37.33005404767204], + [-121.88954797990144, 37.330089423270245] + ] + ] + ] + } + }, { + "name": "", + "id": 223, + "category": "Walkway", + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [-121.88905432058986, 37.32934946645788], + [-121.88914580995723, 37.32930568527236], + [-121.88923782495962, 37.32926165252448], + [-121.88932171198985, 37.3292215093041], + [-121.88933670555288, 37.3292414357198], + [-121.88943374473573, 37.32919526778292], + [-121.88941855039306, 37.32917519288463], + [-121.88949898964185, 37.329136681015804], + [-121.88950937422156, 37.329131705518954], + [-121.88952096920563, 37.32912615685788], + [-121.88953140570274, 37.32912116257853], + [-121.88953462862115, 37.32911962028373], + [-121.88954339773134, 37.32911542391507], + [-121.8895918122719, 37.32909225562397], + [-121.88963697588584, 37.32915192958343], + [-121.88962703524493, 37.32915668654244], + [-121.88965469107328, 37.32919322250571], + [-121.88967322200294, 37.32918435341173], + [-121.88966427241331, 37.32917242225782], + [-121.88974732086965, 37.329132675068145], + [-121.88976599919489, 37.32912373557414], + [-121.88980931146844, 37.329103006205706], + [-121.88982796510373, 37.32909407852484], + [-121.88992034275377, 37.32904986716096], + [-121.8900039295406, 37.329009863026634], + [-121.89001779220146, 37.32902817634249], + [-121.89011472319196, 37.32898178134016], + [-121.89019811313715, 37.32894185505483], + [-121.88966610710217, 37.32823894762021], + [-121.88970211600501, 37.32822171274615], + [-121.88971023889674, 37.32823243831031], + [-121.88974469872093, 37.32827793807919], + [-121.88978333822602, 37.328328959135725], + [-121.88979602719161, 37.328345714115834], + [-121.88984499931412, 37.32841037736698], + [-121.8898560312845, 37.32842494407671], + [-121.88989650785079, 37.32847838966317], + [-121.88992781926285, 37.32851973347951], + [-121.88993967610415, 37.32853538804032], + [-121.88995779219178, 37.32855930882412], + [-121.88996852347532, 37.32857347858603], + [-121.88997443010109, 37.32858127778993], + [-121.8899812002861, 37.3285902172504], + [-121.88999211944707, 37.32860463508275], + [-121.89000656568162, 37.3286237101145], + [-121.89009589036819, 37.32858095720513], + [-121.89011355997079, 37.32857249999495], + [-121.89011739875828, 37.328570662824276], + [-121.89011840775319, 37.328570179938495], + [-121.89013564781968, 37.32856192825634], + [-121.89021338369953, 37.328524722079024], + [-121.89019844652492, 37.32850498719284], + [-121.89018780968736, 37.328490936819406], + [-121.89018120371998, 37.32848220827956], + [-121.89017481048579, 37.328473763140266], + [-121.89016388018557, 37.32845932279567], + [-121.89014676318831, 37.32843621702053], + [-121.8901667551157, 37.328426643167724], + [-121.89017245949697, 37.32842391141956], + [-121.89025100442481, 37.328527654507035], + [-121.89021827652832, 37.32854331682682], + [-121.89021495521054, 37.328544906282296], + [-121.89020611984508, 37.328549134440934], + [-121.89013327012236, 37.328584001760696], + [-121.89005388369795, 37.32862199765691], + [-121.89004504833306, 37.32862622670793], + [-121.89004273318722, 37.32862733452396], + [-121.89001820252983, 37.32863907558543], + [-121.89006613402046, 37.32870236501997], + [-121.89009064393544, 37.328690628018514], + [-121.89012032020916, 37.32867641775507], + [-121.89012873730087, 37.328672387047355], + [-121.89014033000217, 37.328666835629484], + [-121.89014905609088, 37.32866265695125], + [-121.89018116871975, 37.328647279115415], + [-121.89026615828419, 37.32860657998537], + [-121.89029889188518, 37.328590904771694], + [-121.89050140827759, 37.32885822007546], + [-121.89030691784245, 37.32895127965047], + [-121.89032431059522, 37.328974257212046], + [-121.89034078166739, 37.32899601619011], + [-121.89034531580984, 37.329002004791484], + [-121.89028494046663, 37.32903089786489], + [-121.89028040874004, 37.32902491216471], + [-121.89026393766784, 37.329003153195025], + [-121.89024654017452, 37.32898016906888], + [-121.89002662872765, 37.329085391883076], + [-121.89006521742476, 37.32913604805366], + [-121.89003951427291, 37.329148348618446], + [-121.89000110459, 37.329097607770194], + [-121.88976127014432, 37.32921239626272], + [-121.88979967275885, 37.32926312767744], + [-121.88977412172792, 37.329275355422155], + [-121.8897357471344, 37.32922461212872], + [-121.88970211974704, 37.32924069143665], + [-121.88964064521927, 37.329270595103615], + [-121.88966449237888, 37.329302181917406], + [-121.8896655634021, 37.32930359728269], + [-121.88967440927992, 37.329299363369714], + [-121.88968307652938, 37.329295214953646], + [-121.8896843988374, 37.32929458205573], + [-121.88969755050809, 37.329311955950864], + [-121.8897004545492, 37.3293157923074], + [-121.88969916040465, 37.329316411714494], + [-121.88969027985452, 37.32932066214808], + [-121.88967719194737, 37.3293269263181], + [-121.88965329842004, 37.32933835307777], + [-121.88963057376765, 37.3293083321682], + [-121.88961928135828, 37.32929341407417], + [-121.88962814039871, 37.32928917429023], + [-121.8896175408076, 37.329275172472094], + [-121.88958188566747, 37.329228069177596], + [-121.88957925507181, 37.32922932801737], + [-121.88948403222639, 37.32927490302344], + [-121.88947734679633, 37.32927810260692], + [-121.88951300120145, 37.32932520711886], + [-121.88952243597888, 37.32933767239602], + [-121.88952359958927, 37.3293392088283], + [-121.88950114417955, 37.32934995632586], + [-121.88947802181097, 37.32936102303837], + [-121.88945543416884, 37.329371833821234], + [-121.88944454002747, 37.32935744211127], + [-121.88941095226764, 37.329313070031134], + [-121.8894091802748, 37.32931072766205], + [-121.88940255340712, 37.32931389933934], + [-121.88930733168944, 37.329359474293604], + [-121.88930021475939, 37.32936288068266], + [-121.8893019865233, 37.329365222747704], + [-121.88933557428254, 37.329409593900316], + [-121.88934646971424, 37.32942398581466], + [-121.88932389035789, 37.32943479262277], + [-121.8893007562236, 37.329445864954046], + [-121.88927873462725, 37.32945640480704], + [-121.88926778418407, 37.32944193977882], + [-121.88923425173125, 37.32939764215511], + [-121.88923247964243, 37.329395299661854], + [-121.88922585287074, 37.329398471462376], + [-121.88913063002532, 37.32944404636583], + [-121.88912498640059, 37.32944674742754], + [-121.88917124030066, 37.329507853117875], + [-121.88918364061173, 37.32950191815474], + [-121.88919667579695, 37.32951913982935], + [-121.88919735252246, 37.329520033832964], + [-121.88919979401949, 37.32952325922792], + [-121.88920090430787, 37.32952472599953], + [-121.8891617044824, 37.32954348777899], + [-121.88915810734204, 37.32953872940747], + [-121.8891437695595, 37.329519870652774], + [-121.88912217325381, 37.32953020800928], + [-121.8891132536004, 37.32953447685187], + [-121.88910286893434, 37.32953944683216], + [-121.8891008227896, 37.32954042609317], + [-121.88909085068333, 37.329527254347816], + [-121.88907184624959, 37.32953635046737], + [-121.88909970925938, 37.32957315990359], + [-121.88911095273204, 37.329567778521685], + [-121.88914070856617, 37.32960708816029], + [-121.8891582669955, 37.329599366431616], + [-121.88917176525084, 37.32959290626222], + [-121.88918109103064, 37.32958844212224], + [-121.88918250139713, 37.32958776720581], + [-121.88918589764532, 37.329592253076136], + [-121.88919122509435, 37.329599291159155], + [-121.88919220593165, 37.32960058653918], + [-121.88916797040228, 37.32961218576344], + [-121.88915244833889, 37.3296193955255], + [-121.88915066931568, 37.32962024724779], + [-121.8891676771184, 37.32964271538858], + [-121.88917693634757, 37.32965494728126], + [-121.88918225363834, 37.329661971911534], + [-121.8891861578004, 37.32966712922314], + [-121.88920131897063, 37.32967743368241], + [-121.88920917258767, 37.329682771424004], + [-121.88926069551854, 37.32971778757192], + [-121.88926946156478, 37.32972374437192], + [-121.88925964968615, 37.32973292212934], + [-121.88928730334052, 37.32975161433592], + [-121.88928909060849, 37.32975075869486], + [-121.88933332162578, 37.329729589621806], + [-121.88936842216458, 37.32977596169271], + [-121.88937453365689, 37.32978403571272], + [-121.88951073011582, 37.329963961114366], + [-121.88951812791449, 37.32997423102622], + [-121.88952876475209, 37.329988281122255], + [-121.88952965077925, 37.329989451888906], + [-121.88948750132829, 37.330009621622395], + [-121.88949370107301, 37.33001781046425], + [-121.88948526715843, 37.33002184660872], + [-121.88946640121219, 37.330030875118254], + [-121.88945305270585, 37.330037263194576], + [-121.88945127965943, 37.33003492453035], + [-121.88939609884862, 37.329962101268784], + [-121.889147292164, 37.329792803956096], + [-121.88912355115303, 37.329761437004485], + [-121.88911721979261, 37.3297644634486], + [-121.88909955145806, 37.32977290906218], + [-121.88905889091626, 37.329792345141946], + [-121.88902997996868, 37.32975413275855], + [-121.88904455308165, 37.32974715838105], + [-121.88906064654816, 37.32973945639441], + [-121.88899737847252, 37.329655868582314], + [-121.88898067266251, 37.32963379655775], + [-121.88896457815375, 37.32964149765174], + [-121.8889500290061, 37.32964845930207], + [-121.88892013208424, 37.32960896232536], + [-121.88889960905462, 37.32961878540565], + [-121.88891563438219, 37.32963995482418], + [-121.88889753289797, 37.32964861873916], + [-121.88883903923652, 37.32967661504756], + [-121.88882207360957, 37.32965420211328], + [-121.88881780258527, 37.32966560924944], + [-121.88881283103058, 37.32967888738508], + [-121.88880580547895, 37.32969156554315], + [-121.8887968363202, 37.32970344370803], + [-121.8887860666559, 37.329714333508264], + [-121.88877366441002, 37.32972406539393], + [-121.888759826837, 37.32973248415075], + [-121.8887447715049, 37.32973945697454], + [-121.8887287351683, 37.329744874368295], + [-121.88871197151401, 37.3297486519365], + [-121.88869474552071, 37.329750727697274], + [-121.88867732669809, 37.32975107105229], + [-121.8886599924656, 37.329749675611765], + [-121.88864301349484, 37.32974656368381], + [-121.88863222030068, 37.32974458568204], + [-121.88864945507859, 37.32976753110941], + [-121.88859324594362, 37.3297942553351], + [-121.88856383187645, 37.32980833181841], + [-121.888552913974, 37.32979390823262], + [-121.88851399573177, 37.32974249243545], + [-121.88839516713409, 37.32979923885588], + [-121.88843409244153, 37.329850775864166], + [-121.88841081080257, 37.32986191838219], + [-121.88837160691213, 37.329810514952115], + [-121.88825597699334, 37.32986627329855], + [-121.88829473236109, 37.329917473128724], + [-121.88809617363304, 37.33001199189243], + [-121.88811279665529, 37.33003306677485], + [-121.88812724270119, 37.33005215175899], + [-121.88813457202903, 37.330061391155205], + [-121.88799267412047, 37.330128787266766], + [-121.88798588136999, 37.33011980897994], + [-121.88797162383078, 37.33010055520921], + [-121.88795575136791, 37.33007912059564], + [-121.88784526375981, 37.33013217963196], + [-121.88780582994292, 37.33008008390352], + [-121.88781304803678, 37.330076629211234], + [-121.88793663263661, 37.33001748070531], + [-121.8879133283317, 37.32998649423099], + [-121.88778218854299, 37.330048851404825], + [-121.88767044667948, 37.32990122978473], + [-121.88776300805566, 37.32985704378327], + [-121.88785647181635, 37.32981242698437], + [-121.88781824418645, 37.32976192727486], + [-121.88773921969833, 37.329799749417035], + [-121.88773038433347, 37.329803978401806], + [-121.8877249190886, 37.32980659415552], + [-121.887721548968, 37.329808206489545], + [-121.88771271473085, 37.32981243547334], + [-121.88763233653937, 37.32985088088005], + [-121.8875767209596, 37.329877498371864], + [-121.8875680457784, 37.329881650293295], + [-121.88756155409857, 37.32988475719594], + [-121.88752009303535, 37.32985118134599], + [-121.88749268606361, 37.32982898672195], + [-121.88750470924404, 37.32982323236764], + [-121.88749779146156, 37.329814093913434], + [-121.8874696045154, 37.32977685608972], + [-121.88744840871816, 37.32974885532142], + [-121.88742632086925, 37.32975942689301], + [-121.88741752606398, 37.32974780883639], + [-121.88738655800915, 37.329706897305186], + [-121.88737125836208, 37.32968668381605], + [-121.88738916030647, 37.32967785393867], + [-121.88741998391357, 37.32966265063396], + [-121.88737382798611, 37.32960167552088], + [-121.88736324412595, 37.329587693516196], + [-121.88736206840784, 37.32958614031186], + [-121.88733421032232, 37.32954933785843], + [-121.88732348533205, 37.32953516940137], + [-121.88732134484184, 37.3295323416648], + [-121.8872904183523, 37.32954714330534], + [-121.8872265438965, 37.32957771407053], + [-121.88722452381643, 37.329575045180405], + [-121.8872138600284, 37.32956095639156], + [-121.88721253234371, 37.32955920228026], + [-121.88727678848466, 37.32952909980274], + [-121.88754485189281, 37.32940351832591], + [-121.88746188972101, 37.32929391927391], + [-121.88744822323608, 37.32927586449619], + [-121.88752905137378, 37.329237168607314], + [-121.8875317229629, 37.32924069792699], + [-121.88753704138198, 37.32924772349232], + [-121.88754272437, 37.329255230456425], + [-121.88763107494295, 37.32921294428082], + [-121.88770960871109, 37.32917535658485], + [-121.88771844294821, 37.3291711275652], + [-121.887723282042, 37.32916881155511], + [-121.88779795897958, 37.32913307085803], + [-121.88780679434444, 37.329128841835505], + [-121.88781562891297, 37.329124613251004], + [-121.88789162389023, 37.329088240851604], + [-121.88828517685482, 37.329608166151154], + [-121.88830292970671, 37.32959966933139], + [-121.88837803648703, 37.329563721925986], + [-121.88842779903192, 37.329628577619644], + [-121.88869972241424, 37.32949843180955], + [-121.88866299408754, 37.32944991035971], + [-121.88875165827515, 37.32940743250439], + [-121.88873848199746, 37.32938965519507], + [-121.88881913918875, 37.32935142954752], + [-121.88882703515209, 37.329347687433646], + [-121.88883308471313, 37.32934479207808], + [-121.88884467893205, 37.329339243016314], + [-121.88885133265364, 37.3293360585056], + [-121.88885363927976, 37.329334962624955], + [-121.88886247464464, 37.32933073361383], + [-121.88891092155676, 37.329307538896366], + [-121.8889623882181, 37.32937553611666], + [-121.88897238975098, 37.32938878573791], + [-121.88903097236687, 37.32936063947763], + [-121.88905432058986, 37.32934946645788] + ], + [ + [-121.88800189508768, 37.329986246599816], + [-121.88797874560053, 37.329955795944976], + [-121.88796174027726, 37.32996396965787], + [-121.8879847959446, 37.32999442991695], + [-121.88800189508768, 37.329986246599816] + ], + [ + [-121.88815889220277, 37.329909343904234], + [-121.88813649885809, 37.329879760944834], + [-121.88805561126283, 37.329919206864375], + [-121.88807754168153, 37.32994792913703], + [-121.88815889220277, 37.329909343904234] + ], + [ + [-121.89025832106672, 37.3287059914598], + [-121.89023033370621, 37.32871938689803], + [-121.89020281959519, 37.328732555825155], + [-121.89017643889828, 37.32874518227033], + [-121.89017487946003, 37.328745928655444], + [-121.89021577101506, 37.32879994704845], + [-121.89025742751865, 37.32885493370673], + [-121.8903408459266, 37.3288149977834], + [-121.89029920099067, 37.328759995703074], + [-121.89025832106672, 37.3287059914598] + ], + [ + [-121.88756309934394, 37.32981146684757], + [-121.88757373505437, 37.32982551787121], + [-121.88759084271204, 37.3298481183732], + [-121.88771925602269, 37.32978665818458], + [-121.8878038350998, 37.329746177571366], + [-121.88780268044331, 37.32974465270139], + [-121.88779204473346, 37.32973060255934], + [-121.88775106401236, 37.32967646435077], + [-121.88771227634379, 37.32962522327182], + [-121.88770164063338, 37.329611172210704], + [-121.887696055841, 37.32960379347501], + [-121.88762247322688, 37.3296390111103], + [-121.88760149706172, 37.32964905058388], + [-121.88748306345322, 37.329705734470046], + [-121.88750814761151, 37.32973887283944], + [-121.88751878332134, 37.32975292297995], + [-121.88752529788724, 37.3297615290774], + [-121.88756132648007, 37.32980912479917], + [-121.88756309934394, 37.32981146684757] + ], + [ + [-121.88766870492277, 37.329567137187006], + [-121.8876634147208, 37.329560148406166], + [-121.88765248329229, 37.329545707374066], + [-121.88761768129476, 37.32949973116952], + [-121.88757350950458, 37.32944137668365], + [-121.88756313226638, 37.329427668035756], + [-121.88755699219885, 37.32941955603611], + [-121.88747146167607, 37.329460492848575], + [-121.88734370890177, 37.32952163812912], + [-121.88736445434878, 37.3295490437343], + [-121.88737509005861, 37.329563093910274], + [-121.88737617949941, 37.32956453314455], + [-121.88741576179956, 37.32961682435947], + [-121.88742049527414, 37.32962307763531], + [-121.887431130984, 37.3296371277975], + [-121.88745542166802, 37.329669217343444], + [-121.88757385182777, 37.329612535136505], + [-121.88759478292691, 37.32960251723714], + [-121.88766870492277, 37.329567137187006] + ], + [ + [-121.88794893526865, 37.32979313327808], + [-121.88800648633644, 37.32976558922252], + [-121.88799312762949, 37.329747940990444], + [-121.88801536149536, 37.329737300037905], + [-121.88802430631164, 37.32973301911903], + [-121.88802827464156, 37.32973111990742], + [-121.88803246402358, 37.32972911490196], + [-121.88804193893402, 37.329724580283695], + [-121.88812182052884, 37.32968634956456], + [-121.88812822481582, 37.329683284622384], + [-121.88813981871142, 37.32967773605441], + [-121.88814676119581, 37.329674413543124], + [-121.88815648260521, 37.32966976082075], + [-121.88820918935797, 37.329644535061135], + [-121.88818914729185, 37.32961805580002], + [-121.88817020445418, 37.32959347482174], + [-121.88817019507925, 37.32959346243625], + [-121.88815965226728, 37.329579534018876], + [-121.8881563522677, 37.3295811134443], + [-121.88812023564257, 37.329533400903905], + [-121.88810768533256, 37.329516821075956], + [-121.88807459804208, 37.329473110458295], + [-121.8880420301908, 37.32943008603121], + [-121.88802972114806, 37.329413824911704], + [-121.88799073661264, 37.32936232354896], + [-121.88795709966259, 37.32931788670113], + [-121.88794494770866, 37.32930183308315], + [-121.8879077415125, 37.32925268096145], + [-121.8878723648219, 37.32920594572138], + [-121.88785971926114, 37.329189239987784], + [-121.88782250755463, 37.329140080512815], + [-121.88769663444138, 37.329200325363296], + [-121.8875717126361, 37.32926011485501], + [-121.88755348497448, 37.32926883854545], + [-121.8875803416494, 37.32930431808322], + [-121.88760831300513, 37.32934127017416], + [-121.88766427446708, 37.32941519907224], + [-121.8876922198565, 37.32945211758563], + [-121.88774742592362, 37.32952504875907], + [-121.88777536407895, 37.32956195703869], + [-121.88783135249487, 37.329635921642385], + [-121.88785916777228, 37.32967266753735], + [-121.88789788197543, 37.32972381163317], + [-121.88793557621389, 37.32977548521895], + [-121.88794893526865, 37.32979313327808] + ] + ] + ] + } + }] + }] + }] +} \ No newline at end of file diff --git a/WWDC.xcodeproj/xcshareddata/xcschemes/WWDC with iCloud.xcscheme b/WWDC.xcodeproj/xcshareddata/xcschemes/WWDC with iCloud.xcscheme index f435cb4..5053654 100644 --- a/WWDC.xcodeproj/xcshareddata/xcschemes/WWDC with iCloud.xcscheme +++ b/WWDC.xcodeproj/xcshareddata/xcschemes/WWDC with iCloud.xcscheme @@ -74,11 +74,11 @@ + isEnabled = "YES"> + isEnabled = "NO"> CFBundlePackageType APPL CFBundleShortVersionString - 5.0.2 + 5.0.3 CFBundleURLTypes @@ -38,7 +38,7 @@ CFBundleVersion - 15 + 16 Fabric APIKey