-
Notifications
You must be signed in to change notification settings - Fork 48
/
302.srt
4361 lines (3193 loc) · 95 KB
/
302.srt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:00:09.956 --> 00:00:10.726 A:middle
>> Good afternoon.
00:00:11.276 --> 00:00:12.326 A:middle
I'm Noah [phonetic].
00:00:12.536 --> 00:00:14.696 A:middle
I'm here with my
colleague Nick [phonetic].
00:00:14.916 --> 00:00:16.015 A:middle
And we're here to talk to you
00:00:16.015 --> 00:00:18.926 A:middle
about what's new in
Passbook in iOS 7.
00:00:20.496 --> 00:00:23.466 A:middle
Now, some of you have been
building really awesome things
00:00:23.466 --> 00:00:26.286 A:middle
on top of Passbook already, and
we've had a bunch of requests
00:00:26.286 --> 00:00:29.156 A:middle
from you for enhancements,
for new features,
00:00:29.696 --> 00:00:31.136 A:middle
and we've addressed
a ton of those,
00:00:31.136 --> 00:00:32.796 A:middle
and we've added some
new stuff as well.
00:00:32.796 --> 00:00:35.596 A:middle
And I'll be going into all
of that in a lot of detail.
00:00:37.186 --> 00:00:39.246 A:middle
Some of you have looked
at Passbook before
00:00:39.246 --> 00:00:40.196 A:middle
and considered using it
00:00:40.196 --> 00:00:42.626 A:middle
but found it didn't quite fit
your use case at the time.
00:00:43.126 --> 00:00:45.066 A:middle
And we've made a couple of
changes that may affect that,
00:00:45.066 --> 00:00:47.196 A:middle
so I'll be calling
those out as well later.
00:00:47.916 --> 00:00:50.806 A:middle
And, finally, some of you
are entirely new to Passbook
00:00:50.806 --> 00:00:52.606 A:middle
and just kind of curious
about what's going on.
00:00:53.106 --> 00:00:56.696 A:middle
So I'll be -- while our
talks last year went
00:00:56.696 --> 00:00:58.526 A:middle
into a bunch more detail
about how to get started,
00:00:58.526 --> 00:01:01.036 A:middle
how to build your first
pass, and that kind of thing,
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:00:58.526 --> 00:01:01.036 A:middle
how to build your first
pass, and that kind of thing,
00:01:01.036 --> 00:01:03.056 A:middle
I'll still be covering some
high level concepts just
00:01:03.386 --> 00:01:05.736 A:middle
so you have some
idea what's going on.
00:01:05.906 --> 00:01:09.746 A:middle
So without further
ado: let's get started.
00:01:10.416 --> 00:01:12.336 A:middle
There's three main topics
I'll be covering today.
00:01:12.976 --> 00:01:16.816 A:middle
First the Passbook
ecosystem: the different parts,
00:01:16.816 --> 00:01:20.576 A:middle
how they fit together, how
they all talk to each other.
00:01:20.856 --> 00:01:22.806 A:middle
Second: what's new,
what we've added
00:01:22.856 --> 00:01:24.926 A:middle
to passes, to our APIs, the app.
00:01:25.076 --> 00:01:29.236 A:middle
And finally a couple
of tips, tricks,
00:01:29.586 --> 00:01:32.236 A:middle
ideas that might help
you with your debugging
00:01:32.236 --> 00:01:34.146 A:middle
and your development of
Passbook integration.
00:01:34.576 --> 00:01:37.506 A:middle
So let's go to the first
of these, the ecosystem.
00:01:38.086 --> 00:01:41.256 A:middle
To start with: what is a pass?
00:01:41.496 --> 00:01:43.756 A:middle
Well, it's just information
like any other,
00:01:43.856 --> 00:01:46.716 A:middle
but what makes a pass more
useful than just a photo
00:01:46.716 --> 00:01:48.306 A:middle
of a ticket, for instance, is --
00:01:48.346 --> 00:01:51.726 A:middle
first, that it can be
relevant to a time and place.
00:01:52.966 --> 00:01:57.016 A:middle
And second, that it can be used
for something in the real world:
00:01:57.076 --> 00:02:00.546 A:middle
to get into something, to buy
something, to do something.
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:01:57.076 --> 00:02:00.546 A:middle
to get into something, to buy
something, to do something.
00:02:01.406 --> 00:02:05.396 A:middle
So how does a pass get
from you to your users?
00:02:05.986 --> 00:02:07.996 A:middle
Well, it starts with
your server,
00:02:08.545 --> 00:02:09.686 A:middle
which generates the pass.
00:02:10.196 --> 00:02:12.696 A:middle
Then it goes through your
website, or an email,
00:02:13.426 --> 00:02:15.836 A:middle
or an app of your own if
you have some existing flow
00:02:15.836 --> 00:02:17.626 A:middle
like buying a boarding pass.
00:02:18.166 --> 00:02:21.536 A:middle
From any of those three,
it goes into Passbook,
00:02:22.606 --> 00:02:23.986 A:middle
into the user's pass library,
00:02:24.686 --> 00:02:26.626 A:middle
and from there they
can interact with it.
00:02:26.626 --> 00:02:28.176 A:middle
There's a couple other
places that it can show
00:02:28.176 --> 00:02:30.406 A:middle
up on the system, and I'll
talk about those more in a bit.
00:02:30.406 --> 00:02:32.576 A:middle
But the core of it is that
it comes from these apps,
00:02:32.616 --> 00:02:36.986 A:middle
goes into your library,
and that's kind of that.
00:02:37.196 --> 00:02:38.636 A:middle
Now, a thing about passes:
00:02:38.666 --> 00:02:40.786 A:middle
since they represent
real-world information,
00:02:41.636 --> 00:02:43.386 A:middle
you expect them to
be up- to-date.
00:02:43.386 --> 00:02:45.436 A:middle
They should always
reflect the current state
00:02:45.856 --> 00:02:47.416 A:middle
of whatever they're
supposed to be used for.
00:02:47.526 --> 00:02:50.706 A:middle
And we could make you go through
that whole flow all over again,
00:02:50.706 --> 00:02:54.236 A:middle
direct your users back to
your app, send them an email,
00:02:54.296 --> 00:02:57.156 A:middle
back through your app, but
that would be a huge pain
00:02:57.156 --> 00:02:58.406 A:middle
and no one would do that.
00:02:58.696 --> 00:03:01.436 A:middle
So we have a better system,
and it's built on top
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:02:58.696 --> 00:03:01.436 A:middle
So we have a better system,
and it's built on top
00:03:01.436 --> 00:03:03.136 A:middle
of the Apple Push
Notification Service.
00:03:03.716 --> 00:03:06.576 A:middle
Your server sends us a
push, we make a request
00:03:06.576 --> 00:03:08.536 A:middle
to your web service,
and you send us
00:03:08.536 --> 00:03:11.216 A:middle
down a new version
of the pass file.
00:03:11.636 --> 00:03:13.666 A:middle
And that seamlessly
replaces the existing pass
00:03:13.666 --> 00:03:14.616 A:middle
in the user's pass library,
00:03:15.066 --> 00:03:19.106 A:middle
and to them the pass is
magically now up-to-date.
00:03:20.806 --> 00:03:23.736 A:middle
So the user has your
pass, it's up-to-date,
00:03:24.216 --> 00:03:25.076 A:middle
how do they then use it?
00:03:25.706 --> 00:03:28.756 A:middle
Well, they bring their
device to your location.
00:03:28.756 --> 00:03:32.396 A:middle
You scan it, the barcode
on it, with some kind
00:03:32.396 --> 00:03:33.396 A:middle
of point of sale system.
00:03:33.976 --> 00:03:35.166 A:middle
That then talks to your server,
00:03:35.166 --> 00:03:38.196 A:middle
which checks whether the pass
is valid, whether it can be used
00:03:38.196 --> 00:03:40.206 A:middle
for whatever transaction
they're trying to complete,
00:03:40.926 --> 00:03:44.016 A:middle
and finds out, okay, the
pass is available to use.
00:03:44.856 --> 00:03:46.246 A:middle
It sends that information
back down,
00:03:46.246 --> 00:03:48.866 A:middle
you complete the
transaction and that's that.
00:03:49.716 --> 00:03:53.506 A:middle
Now, if something changes
about the pass as a result
00:03:54.796 --> 00:03:57.406 A:middle
of this transaction, like
if you've used a coupon
00:03:57.406 --> 00:03:58.346 A:middle
that can no longer be used,
00:03:58.346 --> 00:04:01.266 A:middle
or if you have a store card
whose balance you're updating,
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:03:58.346 --> 00:04:01.266 A:middle
or if you have a store card
whose balance you're updating,
00:04:02.286 --> 00:04:03.666 A:middle
your server might
take that opportunity
00:04:03.936 --> 00:04:06.306 A:middle
to then send an update
notification to the pass
00:04:06.446 --> 00:04:09.286 A:middle
and get it up-to-date.
00:04:09.426 --> 00:04:13.176 A:middle
So that's just a vague
high level overview.
00:04:13.676 --> 00:04:15.406 A:middle
Passes are information
that can be used
00:04:15.406 --> 00:04:16.216 A:middle
for something in the real world.
00:04:16.856 --> 00:04:17.726 A:middle
They come from your server.
00:04:18.555 --> 00:04:21.745 A:middle
They get into the user's
pass library via your apps
00:04:21.745 --> 00:04:22.746 A:middle
or via Mail or Safari.
00:04:23.376 --> 00:04:29.136 A:middle
And they are then used by
scanning the barcode on the pass
00:04:29.696 --> 00:04:32.526 A:middle
and checking its
validity with your server.
00:04:32.526 --> 00:04:37.246 A:middle
And finally they can be
updated via the push system
00:04:37.326 --> 00:04:40.936 A:middle
to make sure the pass has the
most up-to-date information.
00:04:41.716 --> 00:04:43.946 A:middle
So that's the ecosystem.
00:04:44.056 --> 00:04:47.216 A:middle
Let's talk about what's
new in Passbook in iOS 7.
00:04:48.236 --> 00:04:51.716 A:middle
First, we've added ways for
you to enrich the content
00:04:51.716 --> 00:04:53.366 A:middle
of your passes, to
make them more useful,
00:04:53.626 --> 00:04:55.516 A:middle
work better, look better.
00:04:56.446 --> 00:04:58.586 A:middle
We've added easier ways to
get passes into Passbook,
00:04:58.786 --> 00:05:01.626 A:middle
both via APIs and via
some really cool new
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:04:58.786 --> 00:05:01.626 A:middle
both via APIs and via
some really cool new
00:05:01.746 --> 00:05:02.866 A:middle
user-facing features.
00:05:03.766 --> 00:05:06.306 A:middle
We've given you more
control over the relevance
00:05:06.306 --> 00:05:09.006 A:middle
of your passes, over when they
show up on the lock screen
00:05:09.006 --> 00:05:10.126 A:middle
of your user's device.
00:05:10.956 --> 00:05:13.236 A:middle
And, finally, we've
added better support
00:05:13.236 --> 00:05:16.286 A:middle
around the whole
using-passes thing.
00:05:16.716 --> 00:05:19.566 A:middle
I'll be more clear
about that later on.
00:05:19.696 --> 00:05:21.706 A:middle
So let's talk about the first
of these, the pass content.
00:05:22.266 --> 00:05:26.446 A:middle
A pass is kind of
structured like an app bundle:
00:05:26.446 --> 00:05:30.056 A:middle
it's a folder that's zipped up,
and the contents look like this.
00:05:30.416 --> 00:05:34.666 A:middle
You have your pass.json which
defines what the pass is,
00:05:34.736 --> 00:05:36.066 A:middle
how it behaves, how it looks.
00:05:36.776 --> 00:05:38.696 A:middle
You have a couple of
localized string files,
00:05:38.836 --> 00:05:40.796 A:middle
the lproge [phonetic]
folders that you see here
00:05:41.126 --> 00:05:45.476 A:middle
which contain strings that get
substituted into your pass.json
00:05:45.816 --> 00:05:48.556 A:middle
for user-facing strings.
00:05:49.016 --> 00:05:52.566 A:middle
You have a couple of icons
and images that we use
00:05:52.566 --> 00:05:56.556 A:middle
to display the pass in Passbook
and elsewhere in the OS.
00:05:56.686 --> 00:06:01.316 A:middle
All of that is signed and
zipped, and there's your pass.
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:05:56.686 --> 00:06:01.316 A:middle
All of that is signed and
zipped, and there's your pass.
00:06:01.836 --> 00:06:05.246 A:middle
So you may have noticed that
things look at little different
00:06:05.246 --> 00:06:07.656 A:middle
in iOS 7, and Passbook's
no exception to that.
00:06:08.106 --> 00:06:10.806 A:middle
Things have less gradients,
they have less shine,
00:06:11.146 --> 00:06:14.296 A:middle
subtler shadows,
that kind of thing.
00:06:14.516 --> 00:06:16.516 A:middle
And for the most part
that won't affect you.
00:06:16.516 --> 00:06:18.666 A:middle
We already will apply the
new look to your passes.
00:06:19.276 --> 00:06:21.376 A:middle
But if you've been
making a particular effort
00:06:21.996 --> 00:06:24.046 A:middle
to match the iOS6 style,
00:06:24.046 --> 00:06:25.376 A:middle
if you've been creating
your own gloss
00:06:25.686 --> 00:06:27.876 A:middle
or if you've been sizing
images to fit precisely
00:06:27.876 --> 00:06:29.916 A:middle
within the boundary of
the strip or anything,
00:06:30.356 --> 00:06:32.126 A:middle
then that's going
to look wrong now.
00:06:32.126 --> 00:06:33.666 A:middle
Your passes will look
slightly out of place.
00:06:33.666 --> 00:06:35.106 A:middle
It won't be the end
of the world,
00:06:35.106 --> 00:06:36.876 A:middle
but it will look slightly off.
00:06:37.886 --> 00:06:40.826 A:middle
So the rule of thumb for
that is, well, don't do that.
00:06:40.986 --> 00:06:44.646 A:middle
Follow our guidelines, supply
us the images in the style
00:06:44.646 --> 00:06:45.616 A:middle
and format that we expect,
00:06:45.996 --> 00:06:49.076 A:middle
and trust that we'll
do the right thing when
00:06:49.076 --> 00:06:53.136 A:middle
and if the appearance changes of
what we're applying to passes.
00:06:54.206 --> 00:06:56.556 A:middle
So there is one change to
the appearance that's going
00:06:56.556 --> 00:06:58.946 A:middle
to affect your images that you
will probably need to adapt for,
00:06:59.216 --> 00:07:01.456 A:middle
and that's that passes are now
the full width of the screen.
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:06:59.216 --> 00:07:01.456 A:middle
and that's that passes are now
the full width of the screen.
00:07:01.456 --> 00:07:04.806 A:middle
They're 320 points, up from 312,
00:07:05.416 --> 00:07:07.216 A:middle
which means that your
strip images need
00:07:07.216 --> 00:07:08.246 A:middle
to change as well for that.
00:07:08.896 --> 00:07:11.086 A:middle
We'll currently take
your strip image
00:07:11.086 --> 00:07:12.246 A:middle
and scale it up a little bit.
00:07:13.086 --> 00:07:16.216 A:middle
But if you want it to be pixel
perfect, which of course you do,
00:07:16.536 --> 00:07:21.926 A:middle
then you want to change
those images for iOS 7.
00:07:22.736 --> 00:07:26.686 A:middle
And we also no longer expect
you to etch your logos.
00:07:26.686 --> 00:07:27.956 A:middle
You don't need to apply shadow.
00:07:27.956 --> 00:07:29.216 A:middle
Just give those a solid color,
00:07:29.386 --> 00:07:32.666 A:middle
and it will fit right
in, it will look great.
00:07:33.406 --> 00:07:38.036 A:middle
Finally, while iOS 7 Passbook
will only run on Retina devices
00:07:38.036 --> 00:07:41.386 A:middle
because those are the only
ones that support iOS 7 --
00:07:41.746 --> 00:07:45.136 A:middle
we aren't in iPad,
for instance --
00:07:45.136 --> 00:07:47.596 A:middle
you do still need to expect
that your passes are going
00:07:47.596 --> 00:07:48.876 A:middle
to show up on iOS 6 devices.
00:07:48.876 --> 00:07:52.216 A:middle
So you might have them
on the non-Retina screen
00:07:52.336 --> 00:07:53.896 A:middle
on the iPhone 3GS for instance.
00:07:53.986 --> 00:07:56.456 A:middle
So still provide
non-Retina images.
00:07:56.516 --> 00:07:58.916 A:middle
Even though a lot of your
users are going to be
00:07:58.916 --> 00:08:03.146 A:middle
on iOS 7 this fall, be
ready for your passes to end
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:07:58.916 --> 00:08:03.146 A:middle
on iOS 7 this fall, be
ready for your passes to end
00:08:03.146 --> 00:08:03.916 A:middle
up pretty much anywhere.
00:08:04.986 --> 00:08:06.856 A:middle
So let's talk about grouping,
00:08:07.476 --> 00:08:09.476 A:middle
which is a behavior we
haven't gone into a lot
00:08:09.476 --> 00:08:11.596 A:middle
of detail before, but
you've certainly noticed it
00:08:11.596 --> 00:08:13.226 A:middle
if you've been producing
multiple passes.
00:08:13.976 --> 00:08:16.426 A:middle
Passes group automatically.
00:08:17.146 --> 00:08:20.576 A:middle
Based on a couple of rules,
details not very important,
00:08:21.086 --> 00:08:24.706 A:middle
but sometimes the grouping
behavior is not exactly what
00:08:24.706 --> 00:08:25.256 A:middle
you expect.
00:08:25.446 --> 00:08:27.566 A:middle
If you have an itinerary,
for instance,
00:08:27.566 --> 00:08:28.736 A:middle
for a couple different people,
00:08:29.036 --> 00:08:32.385 A:middle
we might be grouping all those
passes together into one morass
00:08:33.086 --> 00:08:35.926 A:middle
which you might want to
have better control over.
00:08:36.706 --> 00:08:39.155 A:middle
So we now have this
grouping identifier key.
00:08:39.635 --> 00:08:40.426 A:middle
It's just a string.
00:08:40.926 --> 00:08:43.256 A:middle
You specify it and
any passes of yours
00:08:43.256 --> 00:08:45.266 A:middle
that have the same grouping
identifier will group together.
00:08:45.266 --> 00:08:47.516 A:middle
Any that have different
ones will group separately.
00:08:48.116 --> 00:08:51.456 A:middle
So you can use this on event
tickets and boarding passes,
00:08:52.176 --> 00:08:55.416 A:middle
which are the passes that are
most likely to be grouping
00:08:55.416 --> 00:08:57.466 A:middle
in these kind of
cases, and that's useful
00:08:57.466 --> 00:08:58.156 A:middle
if you're doing something
00:08:58.156 --> 00:09:00.676 A:middle
that involves an itinerary
or a multi-day event.
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:08:58.156 --> 00:09:00.676 A:middle
that involves an itinerary
or a multi-day event.
00:09:01.936 --> 00:09:03.756 A:middle
So, if you need that, use it.
00:09:04.566 --> 00:09:06.326 A:middle
That's what it's there for.
00:09:06.826 --> 00:09:11.736 A:middle
[ Applause ]
00:09:12.236 --> 00:09:15.386 A:middle
So let's talk about something
different entirely: date fields.
00:09:16.236 --> 00:09:19.026 A:middle
This is a feature that
we added in iOS 6,
00:09:19.476 --> 00:09:23.186 A:middle
basically to make
users' experience
00:09:23.186 --> 00:09:24.856 A:middle
around localization better.
00:09:25.556 --> 00:09:28.206 A:middle
What we do is you give
us an absolute timestamp
00:09:28.496 --> 00:09:30.776 A:middle
and a date style -- short,
medium, long, et cetera --
00:09:31.576 --> 00:09:34.186 A:middle
and we format the
time in a format
00:09:34.186 --> 00:09:35.566 A:middle
that the user will
expect to see.
00:09:35.816 --> 00:09:42.366 A:middle
So if they have their locale set
to show three o'clock or 15.00
00:09:42.366 --> 00:09:44.466 A:middle
or anything like that,
we'll show your time
00:09:44.466 --> 00:09:45.916 A:middle
in the format they
expect it to be,
00:09:45.986 --> 00:09:48.256 A:middle
and it will look
right, it will fit in.
00:09:49.106 --> 00:09:50.636 A:middle
So something that comes
00:09:50.636 --> 00:09:53.576 A:middle
out of our using this
timestamp format is
00:09:53.576 --> 00:09:55.806 A:middle
that we get automatic
time zone adjustment.
00:09:55.806 --> 00:09:58.456 A:middle
So if you have something
like a pass that specifies
00:09:58.456 --> 00:10:02.226 A:middle
that it occurs in in
12 p.m. Pacific time,
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:09:58.456 --> 00:10:02.226 A:middle
that it occurs in in
12 p.m. Pacific time,
00:10:02.626 --> 00:10:04.326 A:middle
then the user will
see that as --
00:10:04.576 --> 00:10:07.976 A:middle
I always get this stuff
wrong -- 3 p.m. Eastern.
00:10:09.156 --> 00:10:11.216 A:middle
So that's great.
00:10:11.216 --> 00:10:13.266 A:middle
It usually works in the way
that the users expect it to,
00:10:13.266 --> 00:10:15.206 A:middle
but sometimes you don't
want that behavior.
00:10:15.206 --> 00:10:17.716 A:middle
Sometimes you want to show a
time in the local time zone
00:10:17.716 --> 00:10:18.536 A:middle
that it's going to happen.
00:10:19.046 --> 00:10:21.276 A:middle
If you have a boarding
pass, for instance,
00:10:21.276 --> 00:10:22.456 A:middle
you want to show
the departure time
00:10:22.836 --> 00:10:24.916 A:middle
as when they get to the gate.
00:10:25.306 --> 00:10:27.436 A:middle
Or, if you have a hotel
check-in, for instance,
00:10:28.256 --> 00:10:31.526 A:middle
then again you want to show that
as the time that it is there.
00:10:31.526 --> 00:10:34.656 A:middle
Because people have trouble
converting between time zones,
00:10:34.656 --> 00:10:39.326 A:middle
like I just did, and you want
to help them out with that.
00:10:39.326 --> 00:10:42.876 A:middle
So what we now allow you to do
is to control how that works.
00:10:43.246 --> 00:10:46.026 A:middle
And the workaround that
some people have been using
00:10:46.026 --> 00:10:48.486 A:middle
for this is to just
use text fields
00:10:48.486 --> 00:10:50.146 A:middle
and say "3 PM" for instance.
00:10:50.356 --> 00:10:52.706 A:middle
And that works, your users
will probably get it,
00:10:52.706 --> 00:10:54.136 A:middle
but it's not the
best experience.
00:10:54.136 --> 00:10:56.586 A:middle
It could be better, and we
like making things better.
00:10:57.236 --> 00:11:02.226 A:middle
So we now allow you to disable
that time zone adjustment.
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:181083,LOCAL:00:00:00.000
00:10:57.236 --> 00:11:02.226 A:middle
So we now allow you to disable
that time zone adjustment.
00:11:02.726 --> 00:11:05.486 A:middle
It's just a key on date fields.
00:11:05.656 --> 00:11:07.896 A:middle
You say "ignore time
zone" and we drop that.
00:11:07.896 --> 00:11:10.426 A:middle
We show it always in the local
time zone that you specify.
00:11:11.006 --> 00:11:13.066 A:middle
The format hasn't changed:
you can't just leave it
00:11:13.066 --> 00:11:15.106 A:middle
out because we're still
validating against it.
00:11:15.786 --> 00:11:18.936 A:middle
But what you should probably do
here is specify the local time
00:11:18.936 --> 00:11:22.766 A:middle
zone that whatever time you're
trying to show is happening in.
00:11:23.936 --> 00:11:27.696 A:middle
So iOS 6 device users will
get the right experience,
00:11:28.066 --> 00:11:31.556 A:middle
more or less, and iOS 7
ones will get this nice new
00:11:31.986 --> 00:11:33.516 A:middle
ignoring-time-zone behavior.
00:11:34.616 --> 00:11:35.626 A:middle
So that's date fields.