swift – 如何从我的WatchKit应用程序打开iPhone上的父应用程序?

swift – 如何从我的WatchKit应用程序打开iPhone上的父应用程序?,第1张

概述我正在尝试打开Apple Watch应用程序的父应用程序. 在Xcode Beta 2中,我们可以使用以下代码: WKInterFaceController.openParentApplication 但是,在Xcode beta 3中,我再也找不到代码了.现在我不知道如何从watch app打开父应用程序.请帮忙. The Objective-C method是: + (BOOL)openPar 我正在尝试打开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应用程序.

总结

以上是内存溢出为你收集整理的swift – 如何从我的WatchKit应用程序打开iPhone上的父应用程序?全部内容,希望文章能够帮你解决swift – 如何从我的WatchKit应用程序打开iPhone上的父应用程序?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1031902.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存