没有父应用程序的帮助,从Apple Watch扩展程序进行Direct api调用是否合适

时间:2015-05-19 15:03:15

标签: ios iphone apple-watch

在我的Apple Watch应用程序中,我通过这种方式从父应用程序的帮助中进行API调用 InterfaceController

password

&安培;在父应用程序 AppDelegate.m 中返回响应数据

#laatstenieuws > img{
position: relative;
width: 100%;
height: 38.4em;
float: left;
}

#laatstenieuws{
width: 50%;
float: left; 

}

#tekstnieuws{
position: absolute;
z-index: 100;

}

#tekstnieuws > h2{
color: black;
text-align: center;
padding-top: 4em;


}

#tekstnieuws > h3{
font-size: 20px;
text-align: center;
padding-top: 5em;
padding-left: 1em;

}

#tekstnieuws > p{
text-align: center;
padding-top: 3em;
padding-left: 2em;

似乎手表应用程序总是在后台或前台打开父应用程序以获得响应。 现在我看起来像Apple推荐的那样功能有点不同

  • 在iOS主应用程序和WatchKit Extension之间共享信息。使用App Groups和NSUserDefaults访问共享信息对象。

我以这种方式从sharedUserDefaults获取所需信息

NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];    
    [dictionary setObject:@"getSomething" forKey:@"action"];        
    [MainInterfaceController openParentApplication:dictionary reply:^(NSDictionary *replyInfo, NSError *error) {
        NSLog(@"Reply received by Watch app: %@", replyInfo); // the reply from the appDelegate... 
         }

&安培;从watch扩展程序进行直接API调用,这种方法正常工作 -

- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *))reply
{
       NSLog(@"Request received by iOS app");
if( [userInfo objectForKey:@"action"] isEqualToString:@"getSomething"] ){
//call you're Web API
//send the reponse to you're glance :    
reply(DictResponse);// some Dictionary from your web API... 

}

我想知道它是否安全&从watch扩展调用API的正确方法。

1 个答案:

答案 0 :(得分:0)

使用NSUserDefaults在iOS-App和WatchKit-Extension之间共享数据是完全有效的。只要有可能(从语言角度来看),您就可以直接从Watch Kit Extension合法地调用您的API。

注意:
作为Apple的Programming Guidelines for Apple Watch州,主iOS-App的限制较少,例如:您无法在后台模式下运行手表应用程序。因此,对于那些或类似的用例,以及资源密集型代码,您应该依赖openParentApplication-Call。