Хобрук: Ваш путь к мастерству в программировании

Как перевести приложение в фоновый режим и вернуть на передний план (watchOS и iOS)?

Я делаю приложение для watchOS, целью которого является получение некоторых уведомлений, а устройством, которое отправляет эти уведомления, является iPhone.

Мне удалось установить связь между Apple Watch и iPhone, и iPhone уже отправляет сообщения на Apple Watch, а Apple Watch также уже отправляет сообщения на iPhone. Я не использовал инструмент WatchNotification.

Происходит следующее: когда я запускаю приложение, оно автоматически открывается в Apple Watch, и я хочу, чтобы приложение продолжало работать в фоновом режиме. Когда я нажимаю кнопку в iPhone, на Apple Watch отправляется текст, и только потом (когда Apple Watch получает текст) приложение открывается нормально.

Я буду признателен за любую помощь.

Код iPhone

import UIKit
import WatchConnectivity

class ViewController: UIViewController,WCSessionDelegate {

var iphoneNotification = "Deseja renovar o seu seguro automovel?"
let session = WCSession.defaultSession()
@IBOutlet weak var lblNotification: UILabel!

override func viewDidLoad() {
    initSession()
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


@IBAction func ActionSentNotification(sender: AnyObject) {
    let msg = ["NotificationSentforIphone" : iphoneNotification]

    session.sendMessage(msg, replyHandler: {(replay) -> Void in }) { (error) -> Void in



    }
}

func session(session: WCSession, didReceiveMessage message: [String : AnyObject])

{

    let msg = message["NotificationSentforWatch"] as! String
    lblNotification.text = "\(msg)"


}

func initSession()

{

    session.delegate = self

    session.activateSession()




}
}

Код просмотра

import WatchKit
import Foundation
import WatchConnectivity

class InterfaceController: WKInterfaceController,WCSessionDelegate {

@IBOutlet var Notification: WKInterfaceLabel!
var watchNotification = "ok"
let session = WCSession.defaultSession()
//@IBOutlet var lblNotification: WKInterfaceLabel!

override func awakeWithContext(context: AnyObject?) {
    super.awakeWithContext(context)

    // Configure interface objects here.
}

override func willActivate() {
    // This method is called when watch view controller is about to be visible to user
    initSession()
    super.willActivate()
}

func session(session: WCSession, didReceiveMessage message: [String : AnyObject])

{

    let msg = message["NotificationSentforIphone"] as! String
    Notification.setText("\(msg)")
    //lblNotification.setText("Notification:\(msg)")

}
@IBAction func ActionSentNotificationforIphone()
{
    let msg = ["NotificationSentforWatch" : watchNotification]

    session.sendMessage(msg, replyHandler: {(replay) -> Void in }) { (error) -> Void in



    }

}
override func didDeactivate() {
    // This method is called when watch view controller is no longer visible
    super.didDeactivate()
}

func initSession()

{

    session.delegate=self

    session.activateSession()



}



}

Ответы:


1

Невозможно ни программно открыть приложение Apple Watch, ни «автоматически» открыть его. Единственный способ запуска приложения Apple Watch — прямое действие пользователя (которое может включать нажатие на уведомление или взгляд).

Похоже, вы наблюдаете за тем, что происходит в симуляторе, когда вы создаете расширение WatchKit для своего приложения. Это похоже на запуск приложения пользователем. Если вы хотите протестировать обычное использование приложения WatchKit, оставьте симулятор WatchOS работающим и создайте цель для iPhone. Затем вы можете взаимодействовать с приложением для iPhone, а также вручную запускать приложение WatchKit в течение жизненного цикла приложения для iPhone в любой момент по вашему выбору.

03.04.2016
Новые материалы

Понимание СТРУКТУРЫ ДАННЫХ И АЛГОРИТМА.
Что такое структуры данных и алгоритмы? Термин «структура данных» используется для описания того, как данные хранятся, а алгоритм используется для описания того, как данные сжимаются. И данные, и..

Как интегрировать модель машинного обучения на ios с помощью CoreMl
С выпуском новых функций, таких как CoreML, которые упростили преобразование модели машинного обучения в модель coreML. Доступная модель машинного обучения, которую можно преобразовать в модель..

Создание успешной организации по науке о данных
"Рабочие часы" Создание успешной организации по науке о данных Как создать эффективную группу по анализу данных! Введение Это обзорная статья о том, как создать эффективную группу по..

Технологии и проблемы будущей работы
Изучение преимуществ и недостатков технологий в образовании В быстро меняющемся мире технологии являются решающим фактором в формировании будущего работы. Многие отрасли уже были..

Игорь Минар из Google приедет на #ReactiveConf2017
Мы рады сообщить еще одну замечательную новость: один из самых востребованных спикеров приезжает в Братиславу на ReactiveConf 2017 ! Возможно, нет двух других кланов разработчиков с более..

Я собираюсь научить вас Python шаг за шагом
Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..

Альтернатива шаблону исходящих сообщений для архитектуры микросервисов
Познакомьтесь с двухэтапным сообщением В этой статье предлагается альтернативный шаблон для папки Исходящие : двухэтапное сообщение. Он основан не на очереди сообщений, а на..