在我的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推荐的那样功能有点不同
我以这种方式从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的正确方法。
答案 0 :(得分:0)
使用NSUserDefaults在iOS-App和WatchKit-Extension之间共享数据是完全有效的。只要有可能(从语言角度来看),您就可以直接从Watch Kit Extension合法地调用您的API。
注意:
作为Apple的Programming Guidelines for Apple Watch州,主iOS-App的限制较少,例如:您无法在后台模式下运行手表应用程序。因此,对于那些或类似的用例,以及资源密集型代码,您应该依赖openParentApplication-Call。