Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
iPhoneアプリの通信エラー処理を考える
Search
ninjinkun
January 26, 2012
Technology
3
4.8k
iPhoneアプリの通信エラー処理を考える
iPhoneアプリの通信エラー処理についての考察と実装。サンプルはこちら
https://github.com/ninjinkun/AlertResume
ninjinkun
January 26, 2012
Tweet
Share
More Decks by ninjinkun
See All by ninjinkun
買収から2ヶ月でシステム統合した話
ninjinkun
0
110
Designer's and Engineer's Thinking Styles
ninjinkun
0
220
Launchable Webinar テストを効率化して生産性を上げる方法
ninjinkun
2
560
ディープリンクの 設計と実装 - iOSDC2017
ninjinkun
18
10k
スマートフォンアプリ開発における共創的な開発チーム
ninjinkun
61
19k
ReSwiftでアプリの状態管理 / Reactive Swift Meetup
ninjinkun
9
17k
フリルのアプリ開発今昔物語
ninjinkun
3
2.2k
プロトタイピング合宿によるデザインリニューアル
ninjinkun
1
3.1k
デザイナーが仕事をしやすいアプリエンジニアを考える
ninjinkun
4
680
Other Decks in Technology
See All in Technology
生成AIで「お客様の声」を ストーリーに変える 新潮流「Generative ETL」
ishikawa_satoru
1
270
定期的な価値提供だけじゃない、スクラムが導くチームの共創化 / 20251004 Naoki Takahashi
shift_evolve
PRO
3
220
ユニットテストに対する考え方の変遷 / Everyone should watch his live coding
mdstoy
0
110
ACA でMAGI システムを社内で展開しようとした話
mappie_kochi
0
160
AWSにおけるTrend Vision Oneの効果について
shimak
0
110
AI時代だからこそ考える、僕らが本当につくりたいスクラムチーム / A Scrum Team we really want to create in this AI era
takaking22
6
2.8k
[2025-09-30] Databricks Genie を利用した分析基盤とデータモデリングの IVRy の現在地
wxyzzz
0
440
「AI駆動PO」を考えてみる - 作る速さから価値のスループットへ:検査・適応で未来を開発 / AI-driven product owner. scrummat2025
yosuke_nagai
1
480
組織観点からIAM Identity CenterとIAMの設計を考える
nrinetcom
PRO
1
150
多野優介
tanoyusuke
1
170
成長自己責任時代のあるきかた/How to navigate the era of personal responsibility for growth
kwappa
3
220
“2件同時配達”の開発舞台裏 〜出前館PMが挑んだダブルピック実現に向けた体験設計〜
demaecan
0
180
Featured
See All Featured
How GitHub (no longer) Works
holman
315
140k
Building Applications with DynamoDB
mza
96
6.6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
61k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
890
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
For a Future-Friendly Web
brad_frost
180
9.9k
GraphQLとの向き合い方2022年版
quramy
49
14k
Docker and Python
trallard
46
3.6k
Typedesign – Prime Four
hannesfritz
42
2.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Transcript
iPhoneΞϓϦͷ௨৴Τϥʔॲཧ id:ninjinkun / @ninjinkun
͡Ίʹ • ʹiOS Advent CalendarʹࢀՃ͠·ͨ͠ • 25·ͰຖସΘΓͰهࣄΛॻ͘ • http://atnd.org/events/22792 •
http://ninjinkun.hatenablog.com/entry/2011/12/23/224918
͡Ίʹ • ௨৴Τϥʔॲཧͷઃܭ • έʔεελσΟ • ࣮
௨৴ࣦഊ͢Δ ௨৴Τϥʔॲཧͷઃܭ • ଂIO→͍͍ͩͨޭ͢Δͷͱࢥͬͯઃܭͯ͠Δ • ༰ྔΦʔόʔɺϑΝΠϧ໊ॏෳetc… • ௨৴IO→ࣦഊ͢ΔՄೳੑΛߟྀͯ͠ઃܭ͢Δ • iPhoneϞόΠϧσόΠε
• ௨৴ߴ͍֬Ͱࣦഊ͢Δ • ลڥɺτϯωϧɺetc… • ҟৗܥͰͳ͘ਖ਼ৗܥͷҰ෦ͱͯ͠ଊ͑Δ
ཧతͳΤϥʔॲཧ ௨৴Τϥʔॲཧͷઃܭ • Ғ͍ਓᐌ͘… ΤϥʔϝοηʔδϘοΫεɺϓϩάϥϜ͕όΧͳͷͰॲཧΛఀࢭ ͢Δͱ͍͍ͬͯΔΑ͏ͳͷͰ͋Γɺආ͚ͳ͚ΕͳΒͳ͍ ΤϥʔϝοηʔδʹɺڀۃͷΞΠϩχʔ͕͋ΔɻϢʔβʔ͕Τ ϥʔΛ൜͢ͷΛ͍Ͱ͘Εͳ͍ͷͩɻ
ཧతͳΤϥʔॲཧ ௨৴Τϥʔॲཧͷઃܭ • Ғ͍ਓᐌ͘… ΤϥʔμΠΞϩάɺඞͣྱّਖ਼͘͠ɺΘ͔Γ͘͢Λࣔ ͠ɺʹཱͭͷͰͳ͚ΕͳΒͳ͍ɻ ϢʔβʔʹඞཁͳใΛఏڙ্ͨ͠ͰɺඞͣҰͭղܾࡦΛఏࣔͤ Α
Τϥʔॲཧϓϥϯ ௨৴Τϥʔॲཧͷઃܭ দ Ϣʔβʔͷૢ࡞ΛΠϯλϥϓτͤͣʹϨδϡʔϜ͢Δ Ϣʔβʔͷૢ࡞ΛΠϯλϥϓτͯ͠ϨδϡʔϜ͢Δ ക ΤϥʔϝοηʔδΛදࣔ͢Δ͚ͩ
έʔεελσΟ • Mail • Instagram • Facebook • Path
Mail έʔεελσΟ • ࣦഊͯ͠ϝοηʔδϘοΫεʹೖΔ • ΞϓϦ͕ऴྃͯ͠όοΫάϥϯυͰ উखʹϨδϡʔϜ • OSΈࠐΈ͔ͩΒͰ͖Δ͜ͱ •
Ϣʔβʔ͕ΤϥʔΛҙࣝ͠ͳͯ͘ྑ͘ͳ͍ͬͯΔ • দϓϥϯ
Instagram έʔεελσΟ • ΞοϓϩʔυΩϡʔ͕࣮͞Ε͍ͯΔ • ࣦഊ͢ΔͱϨδϡʔϜͰ͖Δ • ෳͷࣸਅΛϨδϡʔϜՄೳ • Ϣʔβʔ͕ࣗྗͰϨδϡʔϜ͢Δ࡞ۀඞཁ
• ϓϥϯ
Facebook έʔεελσΟ • ௨৴͕ࣦഊͯ͠ԿݴΘͳ͍ • ͻͲ͍
Path έʔεελσΟ • ࣦഊͯ͠ޭͨ͠Α͏ʹݟ͍ͤͯΔ • ޙ͔Β௨৴͕ܨ͕Ε࠶ૹ৴ʢࣗಈʣ • ୯ͳΔPOST / GETͰͳ͘σʔλΛಉظ͍ͯ͠Δ(?)
• ϢʔβʔʹΤϥʔΛҙࣝͤ͞ͳ͍ • দϓϥϯ • ͦͷ໘ૹ৴͕͍ྃͯ͠ͳ͍͜ͱʹؾ͔ͮͳ͍…
࣮ • Τϥʔͷදࣔ • UIAlertView • ϨδϡʔϜॲཧ • UIViewControllerͷ෮ݩ •
Ωϡʔ https://github.com/ninjinkun/AlertResume
Τϥʔͷදࣔ ࣮ • UIAlertView • NSErrorͱڠௐͤ͞Δͱศར • NSAlertViewʹNSErrorΛҾʹऔΔίϯετϥΫλ ͕ଘࡏ͍ͯͨ͠ •
…Ͱ͢ΑͶʁ
Τϥʔͷදࣔ ࣮ • NSErrorʹදࣔ༻ͷύϥϝʔ λ͕ἧ͍ͬͯΔ • શͯuserInfoͷσʔλͷ γϣʔτΧοτ • localizedDiscription
• localizedFailureReason • localizedRecoverySuggestion • localizedRecoveryOptions
Τϥʔͷදࣔ ࣮ NSArray *buttons = [NSArray arrayWithObjects:@"Ωϟϯηϧ", @"࠶ࢼߦ͢Δ", nil]; NSDictionary
*userInfo = [NSDictionary dictionaryWithObjectsAndKeys: @"ωοτϫʔΫΤϥʔ͕ൃੜ͠·ͨ͠", NSLocalizedDescriptionKey, @”ωοτϫʔΫʹଓͰ͖·ͤΜ”, NSLocalizedFailureReasonErrorKey, @"ଓΛ֬ೝͯ͠…", NSLocalizedRecoverySuggestionErrorKey, buttons, NSLocalizedRecoveryOptionsErrorKey, nil]; NSError*error = [NSError errorWithDomain:@"com.hoge.fuga" code:100 userInfo:userInfo];
Τϥʔͷදࣔ ࣮ • UIAlertViewʹ৯Θͤͯදࣔ͢Δ @implementation UIAlertView (NSErrorAddition) -(id)initWithError:(NSError *)error {
self = [super init]; if (self) { self.title = [error localizedDescription]; self.message = [[NSArray arrayWithObjects:[error localizedFailureReason], [error localizedRecoverySuggestion], nil] componentsJoinedByString:@"\n"]; NSArray* optionTitles = [error localizedRecoveryOptions]; for (NSString *title in optionTitles) { [self addButtonWithTitle:title]; } } return self; } @end
ϨδϡʔϜॲཧ ࣮ • ViewController͝ͱϨδϡʔϜ • POSTͷը໘Λ͏Ұ։͖·͢ • ϨδϡʔϜૢ࡞͕ײత • ༧ظ͠ͳ͍ͱ͜ΖͰViewController͕։͍ͯ͠·͏
ϨδϡʔϜॲཧ ࣮ • ΩϡʔͰϨδϡʔϜ • ϦΫΤετΛΩϡʔʹอଘ͓ͯ͘͠ • ޭͨ͠ΒΩϡʔ͔Βআ • ࣦഊͨ͠ΒΩϡʔͷϏϡʔ͔Β࠶ࢼߦૢ࡞Λߦ͏
• ΩϡʔΛϓϨϏϡʔ͢ΔϏϡʔΛ࡞Δඞཁ༗Γ
·ͱΊ • ௨৴Τϥʔॲཧͷํ๏ʹ͍ͭͯߟͨ͠ • ௨৴Τϥʔਖ਼ৗܥͷҰ෦ͱͯ͠ߟ͑Α͏ • ༷ʑͳΞϓϦͷέʔεΛ؍ͨ͠ • Path͕Μ͍ͬͯΔ •
௨৴ΤϥʔॲཧΛ࣮ͯ͠Έͨ • UIAlertView • ϨδϡʔϜॲཧ2छྨ • େม͚ͩͲ͕ΜΓ·͠ΐ͏
࠷ۙग़ͨ͜ͷຊ͕݁ߏྑ͍ͱࢥͬͯ·͢ ͓·͚ • iOSϓϩάϥϛϯά ୈ2൛ • ΞʔϩϯŋώϨΨε, δϣʔɾίϯΣΠ