大佬教程收集整理的这篇文章主要介绍了ios – 数据未在真实设备上从iphone传输到iWatch(AppleWatch),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经在两侧配置了WCSession.我已经在我应该接收数据的类中符合WCSessionDelegate.
我正在使用session:didReceiveUserInfo:方法来接收ExtensionDelegate中的数据但仍然像我说的一切在模拟器中工作正常但没有在真实设备上传输.
有没有人知道问题是什么?
这是代码:
在发件人方面:
在我的班级MensaViewController.m中
- (void)viewDidLoad if ([WCSession isSupported]) { session = [WCSession defaultSession]; session.delegate = self; [session activateSession]; } NSLog(@"A dish is being sent"); [session transferUserInfo:dishDictionary]; }
dishDictionary在viewDidLoad方法中声明,它包含数据.
在接收器端(观看扩展)
我配置WCSession并在ExtensionDelegate.m中接收数据,如下所示:
- (void)applicationDidBecomeActive { if ([WCSession isSupported]) { session = [WCSession defaultSession]; session.delegate = self; [session activateSession]; NSLog(@"Session activated in iWatch"); } }
- (void)session:session didReceiveUserInfo:(NSDictionary<NSString *,id> *)userInfo{ NSLog(@"Received data from the iPhone"); NSArray<NSString*> *DictionaryKeys = userInfo.allKeys; for(int i = 0; i < DictionaryKeys.count; i++){ Boolean equalsMensaString = [DictionaryKeys[i] isEqualToString:@"beilagen"]; if(equalsMensaString) [self handleTransferredDish:userInfo]; Boolean equalsNewsString = [DictionaryKeys[i] isEqualToString:@"article"]; if(equalsNewsString) [self handleTransferredNews:userInfo]; Boolean equalsEventString = [DictionaryKeys[i] isEqualToString:@"description"]; if(equalsEventString) [self handleTransferredEvents:userInfo]; } }
public func transferUserInfo(userInfo: [String : AnyObject]) -> WCSessionUserInfoTransfer
所以..当您实际使用该应用程序时,无法保证系统会发送此userInfo.
请改用以下方法:
public func sendmessage(message: [String : AnyObject],replyHandler: (([String : AnyObject]) -> Void)?,errorHandler: ((NSError) -> Void)?)
并接收:
func session(session: WCSession,didReceivemessage message: [String : AnyObject],replyHandler: ([String : AnyObject]) -> Void)
session.sendmessage(messageData,replyHandler: { (replyData) -> Void in replyHandler?(replyData) },errorHandler: { (error) -> Void in print("error: code:\(error.codE) - \(error.localizedDescription)") errorHandler?(error) do { try session.updateApplicationContext(messageData) } catch { print("There was an error trying to update watchkit app on the BACkground") } })
并确保通过正确实施来收到此案例
func session(session:WCSession,didReceiveApplicationContext applicationContext:[String:AnyObject])
以上是大佬教程为你收集整理的ios – 数据未在真实设备上从iphone传输到iWatch(AppleWatch)全部内容,希望文章能够帮你解决ios – 数据未在真实设备上从iphone传输到iWatch(AppleWatch)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。