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
230
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
スタートアップにおけるこれからの「データ整備」
shomaekawa
2
490
Adminaで実現するISMS/SOC2運用の効率化 〜 アカウント管理編 〜
shonansurvivors
4
450
物体検出モデルでシイタケの収穫時期を自動判定してみた。 #devio2025
lamaglama39
0
210
Introduction to Bill One Development Engineer
sansan33
PRO
0
300
LLMアプリの地上戦開発計画と運用実践 / 2025.10.15 GPU UNITE 2025
smiyawaki0820
1
600
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.2k
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3k
ニッポンの人に知ってもらいたいGISスポット
sakaik
0
160
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
8.8k
Railsの話をしよう
yahonda
0
160
HR Force における DWH の併用事例 ~ サービス基盤としての BigQuery / 分析基盤としての Snowflake ~@Cross Data Platforms Meetup #2「BigQueryと愉快な仲間たち」
ryo_suzuki
0
230
コンテキストエンジニアリング入門〜AI Coding Agent作りで学ぶ文脈設計〜
kworkdev
PRO
3
1.6k
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
A Tale of Four Properties
chriscoyier
161
23k
The Power of CSS Pseudo Elements
geoffreycrofte
79
6k
Thoughts on Productivity
jonyablonski
70
4.9k
4 Signs Your Business is Dying
shpigford
185
22k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Side Projects
sachag
455
43k
Mobile First: as difficult as doing things right
swwweet
225
10k
Leading Effective Engineering Teams in the AI Era
addyosmani
7
460
Practical Orchestrator
shlominoach
190
11k
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൛ • ΞʔϩϯŋώϨΨε, δϣʔɾίϯΣΠ