ä»æ¥ãç§ã¯ãã€ãŠã©ã®ããã«Swiftããã°ã©ãã³ã°èšèªã«ç²ŸéããOSXã®äžã§VKontakteãœãŒã·ã£ã«ãããã¯ãŒã¯çšã®ã¢ããªã±ãŒã·ã§ã³ãäœæããããšã«æ±ºãããã«ã€ããŠã話ããããšæããŸãïŒæ®å¿µãªãããŸã çµäºããŠããŸããïŒã åœæãæ°ããèšèªãæå¶ããVK.APIã§ãããè¶ãããšãã«çŽé¢ããªããã°ãªããªãã£ãèœãšãç©Žã ãã®ãã¹ãŠã®çµæãæ£ç¢ºã«äžè¬ã«å
¬éããVK.APIãæäœããããã«ã©ã€ãã©ãªã®åœ¢ã§æ¬¡ã®èªè»¢è»ãèãåºããªããã°ãªããªãã£ãçç±ãæ£åœåããããã«ããŠãã ããã
誰ããèå³ãæã£ãŠãããªããç«ãžããããã
ããŒã1ïŒããã«ã¡ã¯ãSwiftïŒ
2014幎6æ2æ¥ã®å€æ¹ã§ããã Apple補åã®ãŠãŒã¶ãŒã§ããããªããžã§ã¯ãéçºè
ã§ããªãåå¿è
ãšããŠãç§ã¯ã©ãããããã®ç»é¢ã«éã蟌ããããããã§WWDC 2014ãã¬ãŒã³ããŒã·ã§ã³ã®ã·ã§ããã次ã
ãšç¹æ»
ããŠããŸããã ä»åãäŸå€ã§ã¯ãããŸããã§ããã äºæ³éããè¶
èªç¶çãªãã®ã¯äœãæ瀺ããããæ°ããOSXã€ã³ã¿ãŒãã§ã€ã¹ã¯å°ããã©ã¹ãã¬ãŒã·ã§ã³ãæ®ããŸããã æ®ãã®15åéã調ã¹ãŠãäžä¿çãªäºæã«åããããã€ããã§ããã ããããããã§ã¯ãæåãªããã1ã€ãããªããŠãã次ã®Xcodeã¢ããããŒããè£
ã£ãŠãCraig FederigiãSwiftãšããååã®æ°ããããã°ã©ãã³ã°èšèªã玹ä»ããŸãã
ããã¯ãŸãã«ç§ãåŸ
ã£ãŠãããã®ã§ããã objcæ§æã«æ
£ããããšã¯ããªãã£ãããå€ãã®ç¹ãéåžžã«äžäŸ¿ã§ããã ããã¯ãã³ãŒããæžãéçšã§èªåèªèº«ãå®æçã«æãåºãããèŽåœçãªããã¿ã®ããã§ããã ãã®æ¥ã®æ°é±éåã«ãobjcããã人éçã§èªã¿ããããã®ã«ãªãããšã倢èŠãŠããããšãèŠããŠããŸãã ç§
ã¯ããã«é¢ããhabrã®èšäºã«åºããããŸãããã解決çã¯æçšä»¥äžã®ãã®ã劚害ããæŸèæã§ããããšãããããŸããã ãããŠãããã§å®äºã§ãã ä¿¡ããããŸããã§ããã ããããå€æ¹ã®æ®ãã¯ééããªã倱ãããŸããã ãã¹ãŠã®èšç»ã¯èæ¯ã«æ¶ããŠãããŸããã æåã®ã¿ã¹ã¯ã¯ãæ°ããXcodeããã°ãããŸãšããŠããã®å¥åŠãªé³¥ãäœã§ãããã調ã¹ãããšã§ããã 倢ã®çåœãç§ã«ææãããããŸã§ãç§ã¯ããã«ãã£ã§éã³ãŸãããæµæããåã¯ãããããŸããã§ããã ããããThe Swift Programming Languageã®åšåº«ãå¢ãããŠãååäžã«æ°ãããªãªãŒã¹ãããswiftã®è€éãããã¹ãŠå匷ããããšã«è¿ã¥ããŠããããšãèªããŸããã
ããã«èšã£ãŠãã£ãã ç§ã¯èªåã«å²ãåœãŠãããã¿ã¹ã¯ãç±å¿ã«åãäžããŸããã ç§ã¯åè¿°ã®æ¬å
šäœãèªã¿çŽããäœãèµ·ãã£ãŠããã®ããç解ããããã«ããããã³ãŒãäŸã解æããããšéåžžã«ç±å¿ã«è©Šã¿ãŸããã ãããŠããããå®æãããšãã圌ã¯åºæ¬æ§é ã®ææã«æåãããã®èšèªã«å€¢äžã«ãªããŸããã ç°¡ç¥åãããèªã¿åãå¯èœãªæ§æãéçåä»ãããªãã·ã§ã³å€ããžã§ããªãã¯ããã³ãã®ä»ã®å€ãã®Swiftã®ããšã¯ãç§ãç¡é¢å¿ã«ãããŸããã§ããã 絶察ã«ããè人ãªããžã§ã¯ãã«æ»ããããããŸããã§ããïŒããããæéããããã§ãããïŒã
ããŒã2ïŒæ²ã転éããŠ
ã ããã èšèªãã¬ãŒãã³ã°è³æãåŠç¿ãããåºæ¬ãå解ãããã®ã§ãããŒã¿ç¶æ
ã®ãŸãŸã®èšèªã§ã¢ããªã±ãŒã·ã§ã³ãäœæãããšããå°ãç¡è¬ãªæ±ºå®ãäžãããã»ã©ã埮åŠãªãšãããŸã§æ·±ãå
¥ããããšæããŸããã
ãã®åã«ãæ¥åžžçãªåäœãèªååããããã®å°ããªããã°ã©ã ã®ã¿ãäœæããããšã¯èšã䟡å€ããããŸãã ããããåãªãã¹ã¯ãªããã®äžçš®ã§ãããšã¯èšããŸããã ãããããããã¯ãOOPããã«ãã¹ã¬ãããã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ãããã«ã¯æ£åžžã«åäœããæ¥åžžç掻ã楜ã«ãããã¶ã€ã³ãã¿ãŒã³ã䜿çšããå°ããªãªããžã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã§ããã ä»ã ã圌ãã¯ç§ã®ããã«ç¹å®ã®ã¿ã¹ã¯ã解決ãããã®çç±ã®ããã«åœŒãã誰ãã«ãšã£ãŠéåžžã«æçšã«ãªãããšã¯ããããã«ãªãïŒåœŒããé©åãªç¶æ
ã«æã£ãŠè¡ã£ãŠèã«çœ®ãã¢ã€ãã¢ãããããçªç¶ç§ã¯ééã£ãŠããïŒã
ç§ã®ãã¹ãŠã®é è³ã®åæ©ã¯äžã€ã®èãã§ãã-ãã®ããšããªãããç§ãã¡ãæãããã«å®è£
ãããŠããªããªããç§ã¯ãããã©ã®ããã«èŠãããç¥ã£ãŠããŸãããããŠç§ã¯ãããèªåã§ããå¿
èŠããããŸãã ä»åã¯åãããžãã¯ã«åŸããŸããã ãã°ããã®éãOSXã§VKontakteãœãŒã·ã£ã«ãããã¯ãŒã¯çšã®ã¢ããªã±ãŒã·ã§ã³ãäœæãããšããã¢ã€ãã¢ãé ã«ãããŸãããã¢ããã°ã¯ãŸã£ããç§ã«åããªãã£ãããã§ãïŒãªãªãŒã¹ã«ã¯ãŸã çšé ããããã©ã®ãããªã¢ããªã±ãŒã·ã§ã³ãã¯èšããŸãããããã¯èšäºã®æ¬è³ªã§ã¯ãããŸããïŒ ã ãã®ãããžã§ã¯ãã¯ãç§ãæ®æ®µãã£ãŠãããããã¯ããã«å€§ãããªããéåžžãããå€ãã®åŽåãšé è³ãå¿
èŠãšããŸããã Swiftã®éçºãããã«æ·±ãæãäžããä¿çäžã®ã¢ã€ãã¢ãå®çŸããè¯ãæ©äŒã ãšæããŸããã ããã«ãç§ã®å人ã®1人ã¯ãã§ã«VK.APIã®äœæ¥ã«ç²ŸéããŠãããSwiftã®åŠç¿ãæãã§ããŸããã ããã¯ç§ã«ããã«ã€ã³ã¹ãã¬ãŒã·ã§ã³ãäžããŸããã
ããã§ãä»äºã®åŸã«èŠãããã®ã®ããæ確ãªæŠå¿µãé ã®äžã«äœã蟌ãããšããŸããã ç§ã®å人ããã®èããæã£ãŠããã®ã§ããã£ã1ã€ã ãããããã»ã©çºç«ããªãã£ãã ããããAPIã䜿çšããŠã圌ã¯ãŸã ç§ãå©ããŠãããŸããã
æåã«æãã€ããã®ã¯ãObjective-Cã®VK.APIãæäœããããã®ã©ã€ãã©ãªãèŠã€ããããšã§ããïŒSwiftã®å©ç¹ã«ããããããžã§ã¯ãã§objcã³ãŒãã䜿çšã§ããŸãïŒã ããã«ãããéçºã倧å¹
ã«ç°¡çŽ åããããªã¯ãšã¹ã/ã¬ã¹ãã³ã¹ã®ããžãã¯ã«ç
©ããããããšãªããããŒã¿ãåä¿¡ããŠââã¢ãã«ã«åæ£ããæ°ããããŒã¿ããµãŒããŒã«éä¿¡ããã ãã§æžã¿ãŸãã
VKã®å
¬åŒããã¥ã¡ã³ãã詳ãã調ã¹ããšããŸã
å
¬åŒSDKã«æ³šç®ããŸããã iOSçšã«äœæãããŸããããã©ããããããOSXã«ããžæ¢ãã§ããŸããïŒ ããããšããããšãå€æããŸããã ãªã¯ãšã¹ãèªäœã«å ããŠãUIKitã«ã¯å€ãã®é¢é£æ§ããããAppKitã§ãããããããããšã¯ã»ãšãã©äžå¯èœã§ããã å¿
æ»ã®ã°ãŒã°ã«æ€çŽ¢ã§ãäœãåŸãããŸããã§ããã ãã¹ãŠã®ã©ã€ãã©ãªã¯iOSå°çšã«éçºãããããæ°å¹Žåã«èè
ãæªå®æã®äœåãã»ããã ããã®æ£ã«æãæšãŠãŸããã ç§ã«åã£ãéžæè¢ã¯äžã€ããããŸããã ãã¡ãããããã¯ç§ãæ²ããŸããŸããããç§ã¯ã¢ã€ãã¢ã®å®çŸãåãäžããã®ã§ãç§ã¯åæ¢ããŸããã§ããã ã©ã€ãã©ãªããããŸãããïŒ ç§ãã¡ã¯åœŒå¥³ãªãã§ã§ããïŒ
ããŒã3ïŒç§ãã¡ã¯ç§ãã¡ã®ãã®ã§ãæ°ãã家ã建ãŠãŸã
æåã«è¡ãããšã¯ãæ¿èªããã»ã¹ãææ¡ããããšã§ããã ããã¯ãã¹ãŠãoAuthãããã³ã«ãééãããšããçç±ã ãã§å€æããŸããã å°ãªããšããAPIã«ãã¹ããªã¯ãšã¹ããéä¿¡ããããšããããã«ããã©ãŠã¶ãŒã®ã¢ãã¬ã¹ããŒããç¹å®ã®æš©éãæã€ããŒã¯ã³ã«ãã°ã€ã³ããŠãã£ã¢ã¢ãŠããããšãããã«å€æããŸããã ããããããå°ãè€éã§ããããããã¢ããªã±ãŒã·ã§ã³èªäœã«å®è£
ããå¿
èŠããããŸããã æ¿èªããŒãžãããŒãããWebViewãäœæããããã®WebFrameLoadDelegateã¯ããŒãžã®URLãèŠãŠããŒã¯ã³ããã£ããããŸããã æåã¯ã3ã€ã®ãªãã·ã§ã³ãããããŸããã§ãããURLã«ããŒã¯ã³ãããå ŽåããããéžæããŠWebViewãåé€ããŸãã ãŠãŒã¶ãŒãèªèšŒãæåŠããå Žåãã¢ããªã±ãŒã·ã§ã³ãå®å
šã«éããŸããçªç¶ä»ã®ããŒãžã«ç§»åããããšã«ããå ŽåããŠãŒã¶ãŒã«èš±å¯ããã«èªèšŒã«æ»ããŸãã
NSURLConnectionã䜿çšããŠãåæçã«ãªã¯ãšã¹ããéä¿¡ããŸããã NSJSONSerializationã䜿çšããParsilã®å¿çãšãæçµçã«æ¬¡ã®æ§æãåŸãããŸããã
(((jsonObject as? NSDictionary)?["phoneNumbers"] as? NSArray)?[0] as? NSDictionary)?["number"] as? NSString
åæãããæã楜ããå
æ¯ã§ã¯ãããŸããã ãã®æç¹ã§ããªãã·ã§ã³ã®æäœã¯å°çã«å€ãããŸãã åé¡ã®è©³çŽ°ã«ã€ããŠã¯ã
ãã¡ããã芧ãã ãã ã
ããã®ã©ããã§ãèµ·ãããã¹ãŠãè¯ãã䟿å©ã§ããªãããšãæããã«ãªãå§ããŸããã ããã«ãAPIã¯ãšã©ãŒãèªèšŒèŠæ±ãèªèšŒããã£ããã£å
¥åãè¿ãå ŽåããããŸãã ãããã®ããšã¯äœããã®åœ¢ã§äºèŠããåŠçãããå¿
èŠããããŸãã å°ãèããŠãããAPIãæäœãããã¹ãŠã®ããžãã¯ãå¥ã®ã©ã€ãã©ãªã«æœè±¡åããããšãæãè«ççã§ãããšå€æãããŸããã 第äžã«ãã¢ããªã±ãŒã·ã§ã³å
ã§VKãšéä¿¡ããããã®ã³ãŒããåºããªãããã«ãã第äºã«ããããåå©çšããŠãããããŒã«ã«ã«ãšã©ãŒãæé€ããããšãå¯èœã«ãªããŸãã iOSãšobjcã«ã¯å€ãã®ã©ã€ãã©ãªãããããïŒå
¬åŒã®SDKã¯1ã€ã§ååã§ããïŒãSwiftãšOSXå°çšã«ç¬èªã®ãã®ãäœæããããšã«ããŸããã
äžè¬ã«ãiOSã§æžããå Žåããã®ãããªåé¡ã¯çºçããŸãããããã¹ã¯ããããŸãã¯ã©ããããããŠãŒã¶ãŒã§ãããiOSãããOSXã倧奜ããªã®ã§ãç§ã¯èªåã§ããããšããã¹ãŠãããŸããç§ãããç©æ¥µçã«äœ¿çšããŠãããã©ââãããã©ãŒã ã ã¯ãããããŠç§ã®è¬èãªæèŠã§ã¯ããã倧ããªå¯èœæ§ããããŸãã ããããå³ãšè²...
ããŒã4ïŒéçºã ãŸãã¯ãSwiftyVKã®ç°¡åãªã¬ãã¥ãŒ
ç°¡æœãªååVKã§æåã«ç»å Žããæ§é -ãšã³ããªãã€ã³ããæ¿èªããªã¯ãšã¹ãäœæãããã³ææ®è
SwiftyVKã æåã¯ãæ¿èªãšèªèšŒè§£é€ã®ããã®ã¡ãœãããšãã¢ããªã±ãŒã·ã§ã³ã䜿çšããŠã¯ã©ã¹ã«å®è£
ããå¿
èŠãããå§ä»»ãããã³ã«ã®ãã©ããã®ã¿ããããŸããã
次ã«ãå®å
šãªæ¿èªãå®è£
ããå¿
èŠããããŸããã æ¢åã®ãœãªã¥ãŒã·ã§ã³ãåºç€ãšããŠæ¡çšãããé ã«æµ®ãã³ãŸããã ã¢ããªã±ãŒã·ã§ã³ã¯ãæ¿èªäžã«ãååŸããæš©å©ãè²æž¡ããå¿
èŠããããŸãã å
¬åŒSDKã§ã¯ãæš©å©ã®ãªã¹ãã¯æååã®é
åãšããŠæž¡ãããŸãã ç§ã¯Swiftéçåä»ãã䜿çšããããšã決å®ããæš©éããåæåãäœæããŸãããããã«ããã次ã®ããã«é
åã転éããæ¿èªãå¯èœã«ãªããŸãã
[.messages,.offline,.friends,.wall,.photos,.audio,.video,.docs]
以åã¯ãèªèšŒåŸã«åãåã£ãããŒã¯ã³ã¯ãããã°ã©ã ãçµäºãããŸã§å€æ°ãšããŠä¿åãããŠããŸããã ä»ã§ã¯ãã¹ãã¬ãŒãžããããã管çããå¿
èŠããããŸããã ããŸã詳ãã説æããªãå Žåãããã¯ããŒã¯ã³ãå«ãæååããã®æ»ãã®ããžãã¯ãããã³é¢é£æ§ã®æ€èšŒãçŽæ¥æ ŒçŽããTokenã¯ã©ã¹ã®ãªããžã§ã¯ãã§ãã ããŒã¯ã³ãå€ãå Žåãæ°ããããŒã¯ã³ãèŠæ±ãããŸãã ããŒã¯ã³ã¯NSCodingãããã³ã«ããµããŒãããNSUserDefaultsãŸãã¯ãã®ä»ã®éžæå Žæã«ä¿åã§ããŸãã ç§ãã¡ã¯åœç¶2ã€ã®ããŒã¯ã³ãå¿
èŠãšããªãããããªããžã§ã¯ãèªäœã¯ã·ã³ã°ã«ãã³ãšããŠååšããŸãã
æ¿èªã¯ãã·ãŒããã¥ãŒã®ä»»æã®ãŠã£ã³ããŠãŸãã¯å¥ã®ãŠã£ã³ããŠã§éå§ã§ããŸãã ãã°ã€ã³åŸãAPIãªã¯ãšã¹ãã®éä¿¡ãéå§ããŸãã å¿çãéä¿¡ããã³åä¿¡ããããžãã¯ãå®è£
ããå¿
èŠããããŸããã ããã¯ãRequest / ConnectionãResponseãNSURLFabricã®ã¯ã©ã¹/æ§é ã®ã°ã«ãŒãã«ãã£ãŠè¡ãããŸãã ã©ã€ãã©ãªèªäœã®å€ã§ã¯ãæåã®ãã®ã ãã衚瀺ãããŸã-èŠæ±ãšãèŠæ±ãæ§æããVKontakteãµãŒããŒãžã®é éãµã€ãã«éä¿¡ã§ããããã«ãããã®ããããã£/ã¡ãœããã®äžéšã æ¥ç¶-èŠæ±ã®éä¿¡ãå¿çã®åŸ
æ©ããšã©ãŒã®åŠçãã³ãŒã«ããã¯ã®åŒã³åºãã®ããžãã¯ã NSURLFabricã¯ãNSURLRequestããæ§æãããéä¿¡æºåãæŽã£ãç¶æ
ã§åéããéçã¡ãœãããæã€ãã¡ã¯ããªã§ãã å¿çã¯ããªã¯ãšã¹ãããšã©ãŒãæåãã£ãŒã«ããããã³ãµãŒããŒããã®å¿çããšã©ãŒãŸãã¯æåããå¿çã«è§£æããããžãã¯ãæã€åçŽãªæ§é ã§ãã
NSJSONSerializationã䜿çšããŠJSONãã©ã®ããã«è§£æãããããäžã«ç€ºãããŸããã å€ãååŸããããã®ãã䟿å©ãªSwiftãã€ãã£ãã®ã¡ãœãããååŸããããã«ãæåã«ãã®åé¡ã«ã€ããŠèª¬æããåãèšäºã®ã©ã€ãã©ãªã䜿çšããŸãããã解æã«çå笊ã䜿çšãããå Žæãå€ãæ®ã£ãŠãããããåŸã§
SwiftyJSONã«åãæ¿ããŸããç§ã«ãšã£ãŠãéåžžã«äŸ¿å©ãªå³æžé€šã§ãã ãã®å©ãã«ãããåé¡ã¯å®å
šã«è§£æ±ºãããŸããã
ãšã©ãŒã¯ãNSErrorã«äŒŒãErrorã¯ã©ã¹ã«å®è£
ãããŸãã ãšã©ãŒãªããžã§ã¯ãã¯NSErrorã§åæåããããšãã§ããŸãããå€ãã®å Žåãããã¯JSONããååŸãããŸãã äžéšã®ãšã©ãŒã¯SwiftyVKã§çŽæ¥åŠçãããŸãã ããšãã°ãã¢ããªã±ãŒã·ã§ã³ãæ¿èªãå¿
èŠãšãããªã¯ãšã¹ããéä¿¡ããããæ¿èªãããŠããªãå Žåããšã©ãŒã¡ãã»ãŒãžãè¿ãããæ¿èªãŠã£ã³ããŠã衚瀺ããããããæž¡ããšãªã¯ãšã¹ãããªãã€ã¬ã¯ããããŸãã captchaã§ãåæ§ã§ãã ãã®æ©èœãç¡å¹ã«ããã«ã¯ããªã¯ãšã¹ããã©ã¡ãŒã¿catchErrorsãfalseã«èšå®ããå¿
èŠããããŸãã 次ã«ãæ¢ç¥ã®SwiftyVKãšã©ãŒãè¿ãããå Žåã§ãããšã©ãŒåŠçãããã¯ãå®è¡ãããŸãã
é·ãéãç§ã¯åæãªã¯ãšã¹ããšéåæãªã¯ãšã¹ãã«æ©ãŸãããŠããŸããã ãã«ãã¹ã¬ãããšéåæã®è€éããšããç¹ã§ã¯ãããŸããã ããã§è€éãªããšã¯ãããŸããã åé¡ã¯ãã¡ã€ã³ã¹ã¬ããã§åæãªã¯ãšã¹ããéä¿¡ããããšãåå ã§ããã ãã®ç¶æ³ã¯å€æããå¯èœæ§ããããŸã-ã¢ããªã±ãŒã·ã§ã³ã¯åæãªã¯ãšã¹ããéä¿¡ããŸãã éä¿¡å
ã®ã¹ããªãŒã ã¯ãå¿çãããã¯ãŸãã¯ãšã©ãŒãåŒã³åºããããŸã§ãããã¯ãããŸãã APIã¯ãšã©ãŒãè¿ããŸããããã¯ããšã©ãŒãããã¯ãåŒã³åºãåã«èªèšŒ/ãã£ããã£å
¥åãå¿
èŠã§ããããšã瀺ããŸãã ãŠã£ã³ããŠã¯ã¡ã€ã³ã¹ã¬ãããã衚瀺ãããå¿
èŠããããæ¢ã«ãããã¯ãããŠå¿çãåŸ
æ©ããŠããŸãã ãã®çµæããããããã¯ãšã¿ã€ããã³ã°ã ç§ããããåé¿ããæŸèæã®æ¹æ³ãèãåºãããšããªãã£ãéããã©ããã§äœããããŸããããŸããã§ããã çµäº-ã¡ã€ã³ã¹ã¬ããããã®ãšã©ãŒãã§ãã¯ã䌎ãåæãªã¯ãšã¹ãã®å Žåãã¢ãµãŒãã¯ãéä¿¡ããŠã¯ãªããªãèšè¿°ãšãšãã«æ©èœããŸãã ãã¡ãããããã¯æåã®æ¹æ³ã§ã¯ãããŸãããããããã«ããŠãããããã³ã°ããã¯ãŸãã§ãã
Swiftã¯åŒ·ãåä»ããããèšèªã§ãããããå°æ¥ééããç¯ãå Žæãã§ããã ãå°ãªããªãããã«ããã¹ãŠã匷ãåä»ããããã£ãã®ã§ãã ãããã誰ãã«ãšã£ãŠæãè°è«ã®äœå°ãããã®ã¯ãã¯ãšãªåŒæ°ãå
¥åããããšã§ãã å
¬åŒSDKã§ã¯ããããã¯æååãšããŠéä¿¡ãããŸãã 亀差ç¹ArgïŒStringãå°å
¥ããããšã«ããŸããããã®åŒæ°ã«ã¯ãçŸåšå¯èœãªãã¹ãŠã®ã¯ãšãªåŒæ°ããªã¹ããããŠããŸãã ãšã©ãŒãæå°éã«æããããšã«å ããŠãããã«ãããåŒæ°ãèšå®ãããšãã«Xcodeã§èªåè£å®ã䜿çšã§ããŸãã
ããã«äŸ¿å©ãªããã«ãç¹å®ã®APIã¡ãœããã®ãªã¯ãšã¹ãããã°ããäœæããããã®ã¡ãœããã®ãµãã°ã«ãŒãã°ã«ãŒããå«ãAPIæ§é ãå°å
¥ãããŸããã ãã®çµæããªã¯ãšã¹ãã®äœæã¯æ¬¡ã®ããã«ãªããŸãã
let req = VK.API.Friends.get([ .count : "1", .fields : "city,domain" ])
ç§ã«ãšã£ãŠã¯ãéåžžã«ã·ã³ãã«ã§èªã¿ããããç°¡æœã§ãã
åçŽãªèŠæ±ã®éä¿¡ã«å ããŠãã«ã¹ã¿ã ã¡ãœããåïŒæååãæž¡ãïŒãå®è¡ããŸãã¯ãªã¢ãŒãããã·ãŒãžã£ã§èŠæ±ãéä¿¡ããããšãã§ããŸãã ããã«ããã¡ã€ã«èªã¿èŸŒã¿ïŒä»ã®ã»ãšãã©ã®ã©ã€ãã©ãªã«ã¯ãªãïŒãšLongPoolã¯ã©ã€ã¢ã³ãïŒããã¯ä»ã®ã©ãã«ããããŸããïŒã®å®è£
ã
ããŒã5 æåŸ
ååãšããŠããããSwiftyVKã®ãã¹ãŠã§ãã é·ãéãç§ã¯ãããã¢ããããŒãããŸããã§ããããªããªããç§ã¯ããããã¹ãããŠé ã«æµ®ããã ããã§ãã ä»ã圌ã¯äžè¬ã®äººã
ãšäŒãæºåãã§ããŠãããšæããŸãã æ°ããèšèªã®å©ç¹ãå©çšããŠãVK.APIãæäœããããã®æãã·ã³ãã«ã§ç解ããããã©ã€ãã©ãªãäœæããããšããŸããã éçºã®æåŸã«ãOSXã§ã®ã¿ãããè¡ããšããèãã«æ»ããiOSã®ãã¢ãµããŒããè¿œå ãããšèšããããšæããŸãã tvOSã§ãããããããã£ãã®ã§ããããŸã WebViewããªããoAuthã䜿çšããŠãã°ã€ã³ããããšã¯ã§ããŸããã ã§ããã ãæ©ã-ããããã«ã watchOSã§ã¯ã誰ããããå¿
èŠãšãããããããªãã®ã§ããããããªãããšã«ããŸããã ç§ä»¥å€ã®äººããã®ã©ã€ãã©ãªãå¿
èŠãšãããã©ããããããããŸããã ããããç§ãééã£ãŠããŠã誰ããSwiftyVKã«èå³ãæã£ãŠããå Žåã¯ããå©çšããã ãããããšãããããŸãã ãã¹ãŠã®é¡ãã«ã€ããŠæžããŠãã ãã-ç§ãã¡ã¯ãããè¡ããŸãã
è±èªçã®ããã¥ã¡ã³ããšãœãŒã¹ã³ãŒãã¯
ãã¡ãã§èªãããšãã§ã
ãŸã ã
PSïŒãã®å Žæãèªãã§ããããªããæéãããããšãããããŸããã