@@ -70,22 +70,23 @@ - (void)debug:(DConnectArray*)array
7070- (void )updateDeviceList
7171{
7272 __weak GHDeviceUtil *_self = self;
73- // タイミングによりアクセストークンが保存されない
7473 dispatch_after (dispatch_time (DISPATCH_TIME_NOW, (int64_t )(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue (), ^{
75- [self callRequestAccessTokenAPI ];
76-
77- [ self discoverDevices: ^(DConnectArray *result) {
78- _self. currentDevices = result;
79- _self. recieveDeviceList (result) ;
74+ [self callRequestAccessTokenAPI: ^(DConnectArray *result) {
75+ [ self discoverDevices: ^(DConnectArray *result) {
76+ _self. currentDevices = result;
77+ _self. recieveDeviceList ( result) ;
78+ }] ;
8079 }];
80+
8181 });
8282}
8383
8484- (void )discoverDevices : (DiscoverDeviceCompletion)completion
8585{
8686 NSUserDefaults *def = [NSUserDefaults standardUserDefaults ];
8787 NSString *accessToken = [def stringForKey: ACCESS_TOKEN];
88- if (!accessToken) {
88+ BOOL isLocalOAuth = [def boolForKey: IS_USE_LOCALOAUTH];
89+ if (!accessToken && isLocalOAuth) {
8990 completion (nil );
9091 return ;
9192 }
@@ -105,31 +106,28 @@ - (void)discoverDevices:(DiscoverDeviceCompletion)completion
105106 return ;
106107 }
107108 }
108- NSUserDefaults *def = [NSUserDefaults standardUserDefaults ];
109- [def removeObjectForKey: ACCESS_TOKEN];
110- [def synchronize ];
111- [self callRequestAccessTokenAPI ];
112- [self discoverDevices: completion];
113-
109+ if (isLocalOAuth) {
110+ NSUserDefaults *def = [NSUserDefaults standardUserDefaults ];
111+ [def removeObjectForKey: ACCESS_TOKEN];
112+ [def synchronize ];
113+ [self callRequestAccessTokenAPI: ^(DConnectArray *result) {
114+ [self discoverDevices: completion];
115+ }];
116+ }
114117 }];
115118}
116119
117- - (void )callRequestAccessTokenAPI {
120+ - (void )callRequestAccessTokenAPI : (DiscoverDeviceCompletion) completion {
118121 NSUserDefaults *def = [NSUserDefaults standardUserDefaults ];
119122 NSString *accessToken = [def stringForKey: ACCESS_TOKEN];
120123 if (accessToken) {
124+ completion (nil );
121125 return ;
122126 }
123127 NSArray *scopes = [@[DConnectServiceDiscoveryProfileName]
124128 sortedArrayUsingSelector: @selector (caseInsensitiveCompare: )];;
125129
126130
127- /* セマフォ準備 */
128- dispatch_semaphore_t semaphore = dispatch_semaphore_create (1 );
129- dispatch_time_t timeout = dispatch_time (DISPATCH_TIME_NOW, NSEC_PER_SEC * DPSemaphoreTimeout);
130-
131- /* 応答が返るまでWait */
132- dispatch_semaphore_wait (semaphore, timeout);
133131
134132 [DConnectUtil asyncAuthorizeWithOrigin: [self packageName ]
135133 appName: @" Browser"
@@ -138,13 +136,11 @@ - (void)callRequestAccessTokenAPI {
138136 NSUserDefaults *def = [NSUserDefaults standardUserDefaults ];
139137 [def setObject: accessToken forKey: ACCESS_TOKEN];
140138 [def synchronize ];
141- /* Wait解除 */
142- dispatch_semaphore_signal (semaphore);
139+ completion (nil );
143140
144141 }
145142 error: ^(DConnectMessageErrorCodeType errorCode){
146- /* Wait解除 */
147- dispatch_semaphore_signal (semaphore);
143+ completion (nil );
148144
149145 }];
150146}
0 commit comments