1) Можно ли считывать данные с iPhone при открытии приложения iWatch. Я не хочу ждать, чтобы открыть приложение iPhone для передачи данных в iWatch.
ДА, используя любой из фоновых методов (transferUserInfo:
, transferCurrentComplicationUserInfo:
, transferFile:
, updateApplicationContext:infoToSend
) вы можете проснуться iPhone приложение и получить вещи сделано. наоборот, невозможно. Приложение для просмотра должно быть открыто.
2) Можно ли создать логин экран (чтобы получить пользовательский ввод из текстовых полей) на iWatch
НЕТ, текстовые поля недоступны в WatchOS2.
3) iWatch имеет идентификатор устройства и идентификатор продавца? Как получить эту информацию от iWatch?
С watchOS 1 идентификатор поставщика и рекламный идентификатор были на самом деле на iPhone, так как расширение QuickKit на iPhone.
С watchOS 2 вам нужно будет синхронизировать идентификатор поставщика и идентификатор рекламы с iPhone на Watch и использовать его там. И вам нужно будет поддерживать идентификатор поставщика и идентификатор рекламы в актуальном состоянии.
4) Можно ли прочитать базу данных iPhone приложения (например, SQL облегченной дб на iPhone приложение) из приложения iWatch
Это было возможно в WatchKit, но с введением группы WatchConnectivity Framework App на основе общего контейнера имеет был ограничен. Я уверен в UserDefualts, но еще не тестировал файлы.
5) Как перенести словарь из приложения iPhone в приложение iWatch. Поделитесь любым примером plz.
Есть два способа выполнить эти вещи:
Использование TransferUserInfo
С помощью этого метода, часы будут получать словарь каждый раз, что означает, что если часы неактивны и iphone посылает 3 словарь в течение этого времени Период. Когда будет активирован просмотр, он будет получать все 3 словаря несколькими вызовами методов делегата - - (void)session:(WCSession *)session didReceiveUserInfo:(NSDictionary<NSString *, id> *)userInfo
со стороны наблюдателя.
-(void)sendDictionaryToWatch:(NSDictionary*)infoToSend{
if([WCSession isSupported]){
WCSession *aDefaultSession = [WCSession defaultSession];
aDefaultSession.delegate = self;
if([aDefaultSession isPaired] && [aDefaultSession isWatchAppInstalled]){
[aDefaultSession activateSession];
[aDefaultSession transferUserInfo:infoToSend];
}
}
}
Использование updateApplicationContext: ошибка:
В этом случае устройство будет посылать последний контекст для просмотра на активации. Это означает, что можно сказать, что если вы отправили три Info назад, тогда, когда Watch Activated, он получит только последний, а не предыдущий в методе делегирования - -(void)session:(WCSession *)session didReceiveApplicationContext:(nonnull NSDictionary<NSString *,id> *)applicationContext
.
-(void)sendDictionaryToWatch:(NSDictionary*)infoToSend{
if([WCSession isSupported]){
WCSession *aDefaultSession = [WCSession defaultSession];
aDefaultSession.delegate = self;
if([aDefaultSession isPaired] && [aDefaultSession isWatchAppInstalled]){
[aDefaultSession activateSession];
[aDefaultSession updateApplicationContext:infoToSend error:nil];
}
}
}
Пожалуйста, ограничивайте свое сообщение единственным вопросом и убедитесь, что вы спрашиваете, не вне темы. Подробнее см. [Ask]. Благодаря! –