1
나는 사과 시계 응용 프로그램을 개발 중입니다. 전경에서 응용 프로그램이 잘 작동되면 [WCSession defaultSession].isReachable
및 ON
상태를 검색합니다. 이제 시계 응용 프로그램이 백그라운드 모드로 전환되면 문제가 발생합니다.Watch App : [WCSession defaultSession] .isReachable은 백그라운드 앱에서 항상 'FALSE'상태를 검색하나요?
이 문제를 해결하는 방법은 무엇입니까? 백그라운드 모드에서 ON
상태를 검색하십시오.
내 코드는 다음과 같습니다.
- (void)willActivate {
[super willActivate];
self.locationManager = [[CLLocationManager alloc] init];
[self.locationManager setDelegate:self];
[self.locationManager requestLocation];
if ([WCSession isSupported]) {
WCSession *session = [WCSession defaultSession];
session.delegate = self;
[session activateSession];
}
if ([[WCSession defaultSession] isReachable]) {
NSLog(@"Session Reachable");
} else {
NSLog(@"Session Not Reachable");
}
if([WCSession defaultSession].iOSDeviceNeedsUnlockAfterRebootForReachability) {
WKAlertAction *action = [WKAlertAction actionWithTitle:@"OK"
style:WKAlertActionStyleDefault
handler:^{
}];
NSString *title = @"My App";
NSString *message = @"Reachability in the Watch app requires the paired iOS device to have been unlocked at least once after reboot";
[self presentAlertControllerWithTitle:title message:message preferredStyle:WKAlertControllerStyleAlert actions:@[action]];
}
if ([[WCSession defaultSession] isReachable]) {
NSString *strUserId = [[NSUserDefaults standardUserDefaults]
stringForKey:@"user_id"];
if ([strUserId isEqualToString:@""])
{
WKAlertAction *act = [WKAlertAction actionWithTitle:@"OK" style:WKAlertActionStyleCancel handler:^(void){
NSLog(@"ALERT YES ");
}];
NSArray *testing = @[act];
[self presentAlertControllerWithTitle:@"My App" message:@"You are not login" preferredStyle:WKAlertControllerStyleAlert actions:testing];
}else{
[self addTrackingdata];
[self loadPairList];
}
}
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(UpdateData) name:@"refreshData" object:nil];
ExtensionDelegate *del = (ExtensionDelegate *)[WKExtension sharedExtension].delegate;
if (del.strReminderTime == 0 && del.isTimerFlag) {
[self UpdateData];
isReminderFlag = NO;
del.isTimerFlag = NO;
NSTimer * CheckTimer = [NSTimer scheduledTimerWithTimeInterval:10.0f target:self selector:@selector(CheckConnectation) userInfo:nil repeats:YES];
[CheckTimer fire];
}
}
- (void)CheckConnectation
{
WCSession *session = [WCSession defaultSession];
if([WCSession isSupported]) {
session.delegate = self;
[session activateSession];
}
if([WCSession defaultSession].isReachable){
[_lblPairedStatus setText:@"connected"];
}
else
{
[_lblPairedStatus setText:@"disconnected"];
}
}
제안이나 아이디어가 있으면 감사드립니다.
did didear에서 사용했지만 백그라운드 모드에서는 작동하지 않습니다. –