swift – 如何从我的WatchKit应用程序打开iPhone上的父应用程序
我正在尝试打开Apple Watch应用程序的父应用程序.
在Xcode Beta 2中,我们可以使用以下代码: WKInterFaceController.openParentApplication 但是,在Xcode beta 3中,我再也找不到代码了.现在我不知道如何从watch app打开父应用程序.请帮忙.
The Objective-C method是:
+ (BOOL)openParentApplication:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *replyInfo,NSError *error))reply The Swift method是: class func openParentApplication(_ userInfo: [NSObject : AnyObject]!,reply reply: (([NSObject : AnyObject]!,NSError!) -> Void)!) -> Bool 因此,您需要将iPhone应用程序传递给reply()块,以便从WatchKit扩展程序中激活它.这是可以实现的一种方式,例如: NSString *requestString = [NSString stringWithFormat:@"executeMethodA"]; // This string is arbitrary,just must match here and at the iPhone side of the implementation. NSDictionary *applicationData = [[NSDictionary alloc] initWithObjects:@[requestString] forKeys:@[@"theRequestString"]]; [WKInterfaceController openParentApplication:applicationData reply:^(NSDictionary *replyInfo,NSError *error) { NSLog(@"nReply info: %@nError: %@",replyInfo,error); }]; 您的iPhone应用程序的AppDelegate需要实现以下方法: - (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void(^)(NSDictionary *replyInfo))reply { NSString * request = [userInfo objectForKey:@"requestString"]; if ([request isEqualToString:@"executeMethodA"]) { // Do whatever you want to do when sent the message. For instance... [self executeMethodABC]; } // This is just an example of what you could return. The one requirement is // you do have to execute the reply block,even if it is just to 'reply(nil)'. // All of the objects in the dictionary [must be serializable to a property list file][3]. // If necessary,you can covert other objects to NSData blobs first. NSArray * objects = [[NSArray alloc] initWithObjects:myObjectA,myObjectB,myObjectC,nil]; NSArray * keys = [[NSArray alloc] initWithObjects:@"objectAName",@"objectBName",@"objectCName",nil]; NSDictionary * replyContent = [[NSDictionary alloc] initWithObjects:objects forKeys:keys]; reply(replyContent); } WKInterfaceController方法openParentApplication:reply:当iPhone(或iOS模拟器)解锁或锁定时,在后台启动包含应用程序.请注意,来自Apple的声明表明WatchKit扩展程序总是用于在后台启动您的iPhone应用程序,它只是模拟器的一个实现细节,它似乎在之前的测试版中在前台启动您的iPhone应用程序. 如果您想测试同时运行的WatchKit应用程序和iPhone应用程序,只需在Schemes菜单下从Xcode启动WatchKit应用程序,然后通过单击其跳板图标在模拟器中手动启动iPhone应用程序. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 什么是依赖注入
- Flex actionscript 代码格式化插件
- hdu3076ssworld VS DDD 概率dp
- 单元测试 – 在进行单元测试时,100%的代码覆盖率是否真的很
- ruby-on-rails – 代理选择:mod_proxy_balancer,nginx代理
- Bad XML block :header size 2370 or total size 0 is larg
- 账户表/余额表/消费储蓄表
- 如何将Swift结构作为参数传递给Objective-C方法
- 需要Oracle sqlldr TRAILING NULLCOLS,但为什么?
- Nosql数据库教程之初探MongoDB - 第一部分