Я хочу загрузить некоторую информацию в интерфейс WatchKit
из бэк-офиса REST
. Есть ли какой-нибудь быстрый способ выполнить запрос URL-адреса, передаваемый хост-приложением iOS
, или мне нужно придумать определенный протокол, использующий голые WatchConnectivity
функции?
Подключение к внешнему URL-адресу из WatchKit 2.0
Ответы (4)
Вы должны использовать NSURLSession непосредственно из расширения WatchKit.
NSURLSession отлично работает с Watchkit, но вам нужно будет также добавить Разрешить произвольные нагрузки в расширении Watchkit, если это уместно.
Пожалуйста, посмотрите этот пост,
NSURLSession возвращает данные как Null в Watch OS2 с использованием цели -Са>
Я использую sendMessageData:replyHandler:, но у меня есть проблемы с его правильной работой. Относительный билет находится по адресу: https://stackoverflow.com/questions/33211760/sendmessagedata-does-not-call-didreceivemessagedata-on-the-counterpart
Хотя пример Apple приведен в быстром виде, см. https://developer.apple.com/videos/play/wwdc2015-228/?time=345 , я вставил фрагмент в obejctive-c utlis в оболочке NSProcessInfo.
Пример Apple также использует Semaphore, если расширение будет переведено в спящий режим, который я пропустил ниже.
Следуя приведенному ниже шаблону, вы можете подключиться к нужному сервису прямо с часов.
NSProcessInfo *processInfo = [NSProcessInfo processInfo];
[processInfo performExpiringActivityWithReason:@"networkReq" usingBlock:^(BOOL expired) {
if (!expired){
NSLog(@"we have an assertion");
NSTimeInterval secondsInThreeHours = 3 * 60 * 60;
NSURL *forecast = [NSURL URLWithString:@"http::address"];
NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithURL:forecast
completionHandler:^(NSData *data,
NSURLResponse *response,
NSError *error) {
// handle response
}] resume];
else{
NSLog(@"Not background assertion or we are out of time");
}
}];