Айфон оповещение день рождения

Айфон оповещение день рождения

Как известно, компания Apple не предусмотрела возможности менять время оповещения о днях рождения. Т.е. день сменить можно (три варианта — в день события, за 1 день, или за 2 дня), а время — строго 9:00. Кто и почему в Apple решил, что 9 утра — самое то, не понятно. Лично мне удобно получать такое напоминание в 12:00. Т.к. ну кто будет ни свет ни заря звонить своему другу в 9 утра, чтобы поздравить его с днем рождения? Он спит еще в это время. И я тоже. 🙂
Поэтому возникло желание найти способ это исправить. А как известно, нужда и лень — двигатели прогресса. 🙂 Таким образом появилось решение, а вслед за ним и эта инструкция.

Для работы понадобится:
— файловый менеджер на компьютере для работы с аппаратом — например, iTools или iFunBox,
— файловый менеджер в аппарате — iFile,
— браузер Mozilla Firefox,
— установленное к нему дополнение SQLite Manager.
И браузер, и дополнение к нему распространяется бесплатно, скачать можно на сайте разработчика.

Перед началом работ делаем респринг в аппарате, чтобы все временные файлы обновили содержимое базы, хранящей события и напоминания.

ВАЖНО. Пока будем производить изменения с файлом базы данных, нельзя на аппарате вносить изменения в события и напоминания в приложении Календарь, а также в дни рождения адресной книги.

1. Идем в аппарате по пути /User/Library/Calendar и видим там файлы, как на скриншоте ниже. В ней всего 6 файлов, один из которых Calendar.sqlitedb – это база данных, хранящая информацию о событиях календаря. Копируем все файлы на компьютер в качестве бекапа.

2. Создаем на компьютере отдельную папку, в которую копируем еще раз из всего списка только файл Calendar.sqlitedb. Будем считать этот файл нашей рабочей копией, в которой мы будем производить изменения. ВАЖНО – копируем именно в отдельную папку, дабы не испортить сделанный бекап, т.к. в случае восстановления данных понадобятся все файлы, или как минимум: Calendar.sqlitedb, Calendar.sqlitedb-shm и Calendar.sqlitedb-wal.
3. Переходим в браузер Mozilla Firefox, и выбираем в меню «Инструменты» пункт «SQLite Manager».

Перед нами откроется окно для работы с базами данных.

4. Жмем на кнопку «Открыть» (или выбираем в меню: База данных – Подключить базу данных). В открывшемся окне выбора файлов убираем фильтр отображения в правом нижнем углу: т.е. меняем фильтр с «Файлы БД SQLite (*sqlite;)» на «Все файлы (*.*)».

Переходим в этом окне к папке, которую создали на шаге 2, и выбираем рабочую копию нашей базы – файл Calendar.sqlitedb.
Перед нами откроется собственно база данных.
5. В меню «Триггер» выбираем пункт «Создать триггер».

Откроется окно, как на скриншоте ниже.

Далее нам надо аккуратно заполнить некоторые поля (выделенные красным) этого окна:
— в поле «Имя триггера (N)» вводим с клавиатуры название нашего триггера; название должно быть латинскими буквами и не содержать знаков препинания; я назвал триггер Change_Birthday_Alarm;
— в списке выбора справа от названия «в таблице/производной таблице (A)» выбираем таблицу Alarm;
— в группе «Событие базы данных» в поле «До/после» выбираем AFTER;
— там же рядом в поле «Событие» выбираем UPDATE;
— переходим в поле «Этапы триггера (разделяйте точкой с запятой)» и копируем туда следующий текст:

После этого окно должно выглядеть так:

6. Жмем ОК и закрываем окно работы с базой (либо через крестик в верхнем правом углу окна, либо через меню «База данных – Выход»).
Таким образом, мы создали в базе данных правило, которое будет выполняться при определенных условиях и изменять время оповещения о днях рождения с 9:00 на 12:00.
7. Теперь копируем файл Calendar.sqlitedb нашей рабочей копии в аппарат. При копировании поверх имеющегося там файла права на скопированный файл автоматически применятся к копируемому файлу.
8. Открываем приложение Календарь и проверяем, что все события календаря на месте.
Затем идем в приложение Настройки в меню «Почта, адреса, календари», далее – в подпункт «Стандартные напоминания», и задаем нужную настройку напоминания по умолчанию для «Дни рождения». Если какая-то настройка ранее была установлена, то меняем ее на любую другую из списка и затем ставим нужную (это нужно, чтобы время для каждого напоминания обновилось в базе данных согласно нашим доработкам).

Читайте также:  Модель айфона 11 a2221 для каких стран

На этом настройка нового времени оповещения завершена. Теперь напоминания будут звучать не в 9:00, а в 12:00.

Несколько пояснений – что мы сделали в базе данных.
Мы создали правило (триггер), по которому мы меняем (обновляем) записи в базе данных, а конкретно, сдвигаем время оповещения на три часа вперед. Сдвиг мы задали в тексте запроса (который скопировали на шаге 5) путем добавления к стандартному времени оповещения еще 10800 секунд (это 3 часа) – в тексте запроса можно увидеть это число.

Данное событие возникает каждый раз для всех записей о днях рождения, когда мы в приложении Настройки меняем настройку времени по умолчанию. А также, когда мы создаем новую запись о дне рождения, или изменяем существующую, в адресной книге. Новым правилом (триггером) мы после того, как запись обновилась стандартным образом в базе данных – перезаписываем ее, изменяя время.

Если вам нужно настроить иное время оповещения, то в тексте запроса замените 10800 на свое значение.

Вопрос 1. Не получилось с первого раза сделать правильно триггер на шаге 5, но триггер уже создан.
Ответ. Надо удалить созданный триггер и затем создать его заново. ВАЖНО! Не допустимо создавать два и более одинаковых триггеров, иначе они будут конфликтовать друг с другом!
Для удаления триггера находим в левой части окна работы с базой данных раздел Триггеры, раскрываем его и находим только что созданный нами триггер. Жмем на него правой кнопкой мыши, и во всплывающем меню выбираем «Удалить триггер».

Вопрос 2. После копирования базы в аппарат пропали все напоминания, и календарь глючит, не запоминает новые события.
Ответ.
Шаг 1. Проверить права на файл Calendar.sqlitedb. Права должны быть следующие:
Собственность
Владелец: mobile
Группа: mobile

Права доступа
Пользователь: Прочесть, Записать
Группа: Прочесть
Все: Прочесть

Шаг 2. Если первое не помогло – по всей видимости, нарушена синхронизация с временными файлами: Calendar.sqlitedb-shm и Calendar.sqlitedb-wal.
Необходимо скопировать в аппарат обновленные временные файлы. Для этого делаем следующее:
— открываем заново нашу рабочую копию базы (если база была открыта – закрываем и открываем снова, чтобы временные данные записались в базу, т.к. в файл база сохраняется при закрытии),
— идем в папку, где расположена наша рабочая копия базы на компьютере, видим там вместо одного три файла: Calendar.sqlitedb, Calendar.sqlitedb-shm и Calendar.sqlitedb-wal,
— копируем все три файла в аппарат,
— проверяем в аппарате права на файлы (на все файлы права такие же, как на Calendar.sqlitedb).

Шаг 3. Если и второе не помогло — восстанавливаемся из резервной копии. Проверяем в аппарате права на файлы (на все файлы права такие же, как на Calendar.sqlitedb). Проделываем настройки триггера с начала.

Эти действия проделывать не обязательно. Но будет интересно для тех, кто хочет навести красоту в меню.
Поскольку мы изменили время напоминания, теперь выглядит бессмысленно время «9:00» в настройках, например «В день события (9:00)». Однако, меню выбора моментов оповещения для дней рождения и для событий на весь день – одно и то же. А для событий на весь день мы время не меняли.

Читайте также:  Драйвера для айфона 6 для синхронизации с компьютером

Поэтому скачиваем из вложения архив System.rar и загружаем из него файлы в папки в соответствии с тем, как они разложены в архиве. Подчеркну, что в архиве файлы для iOS 7.
Тем самым мы сделаем следующее: уберем время (9:00) из меню выбора дней оповещения, перенесем его в заголовки в меню Настройки и в Календаре. Ну и заодно исправим отображение списка выбора срока напоминания для обычных событий.
Будет как на скриншотах.

Определения.
Триггер – это правило изменения записей какой-либо таблицы в базе данных с помощью запроса на языке SQL, инициирующееся (правило) при возникновении определенных событий в базе данных (как например – добавление нового события, изменение события, удаление события).
Запрос – это программный код для обращения к базе данных и произведения действий с данными на языке SQL.
Подзапрос – запрос в составе другого запроса.
SQL (structured query language – «язык структурированных запросов») – формальный непроцедурный язык программирования, применяемый для создания, модификации и управления данными в произвольной реляционной базе данных.
Запись – строка таблицы.
Поле – колонка в записи (колонка таблицы в одной отдельной строке).

Разберем подробно созданный нами запрос:

1. UPDATE Alarm:
— обновить таблицу Alarm (Alarm – имя таблицы в базе данных)

2. SET trigger_interval=10800+(SELECT Sum(default_alarm_offset) FROM Store WHERE ROWID=2):
а) установить для поля trigger_interval значение, вычисляемое справа от знака равенства (поле trigger_interval – поле таблицы Alarm, хранящее время оповещения для данного события, время хранится в секундах),
б) значение справа от знака равенства:
— 10800 – время в секундах, задающее сдвиг от стандартного времени на 3 часа вперед,
— подзапрос SELECT Sum(default_alarm_offset) FROM Store WHERE ROWID=2 означает следующее: выбрать сумму по колонке default_alarm_offset из таблицы Store, и только для той строки (записи) таблицы, у которой поле ROWID равно 2;
○ поле default_alarm_offset в таблице Store хранит настройку времени по умолчанию, которую мы задаем в приложении Настройки в аппарате,
○ поле ROWID – содержит уникальный идентификатор номера строки (в данном случае просто порядковый номер строки),
○ значение, которое мы получим подзапросом – 32400 секунд (если в настройках выставлено оповещать в день события в 9:00) – т.к. таблица Store во второй строке с поле default_alarm_offset будет содержать значение 32400).

3. WHERE ROWID=OLD.ROWID AND owner_id IN (SELECT ROWID FROM CalendarItem WHERE calendar_id=3) – читается так:
— где поле ROWID таблицы Alarm равно значению такого же поля ROWID из таблицы OLD и поле owner_id таблицы Alarm содержится в списке, формируемом подзапросом в скобках,
— подзапрос SELECT ROWID FROM CalendarItem WHERE calendar_id=3 читаем так: выбрать поля ROWID из тех строк таблицы CalendarItem, где поле calendar_id равно 3;
таблица OLD – виртуальная таблица, которая возникает в момент обновления записи, и хранить ее старое содержимое,
○ ROWID – номер записи,
○ CalendarItem – таблица, хранящая сведения о событии,
○ calendar_id – поле этой таблицы, хранящее идентификатор календаря (все календари в базе имею свои идентификаторы, различают календарь для хранения обычных событий, и календарь хранения напоминаний о днях рождения, а также, могут быть другие календари, синхронизированные с Облаком, Google и т.п.).

Т.е. мы при обновлении записей таблицы Alarm установим время напоминания (trigger_interval) в значение 43200 секунд, но только для той записи, которая только что обновилась (совпадает с ROWID из таблицы OLD), и если значение в поле owner_id (идентификатор родителя) совпадает с одним из значений идентификаторов (ROWID) записей календаря (таблица CalendarItem), являющегося календарем дней рождения (calendar_id = 3). Значение базового времени напоминания (32400 секунд) мы получим из поля default_alarm_offset строки 2 таблицы Store.

Читайте также:  Как по имей проверить восстановлен айфон

P.S. Отдельная благодарность directorgeneral за наводку на мысль о способе решения.

Сообщение отредактировал Black Fish — 13.11.14, 07:46

Источник

Как на iPhone поставить и настроить напоминание

Разработчики «яблочной» операционной системы позаботились о том, чтобы владелец Айфона сумел установить «напоминалки» о важных делах. Большое количество пользователей уже по достоинству оценило стандартное приложение iOS «Напоминания». В новых версиях системы его возможности расширились: появились функции более тонкой настройки, стало реальным указывать тип и период повторений. О том, как поставить напоминание на Айфоне правильно, знают далеко не все пользователи.

Создание события с повторением

Важной функцией напоминаний до обновления, о которой мечтали «айфоновцы», была возможность настройки повторений события. Теперь поставить «напоминалку» с такой опцией стало довольно просто:

  1. На главном экране iPhone найдите список «Напоминания», нажмите на него, чтобы пользоваться напоминаниями в iPhone.
  2. Нажмите на значок «+» для добавления нового объекта. Можно также редактировать уже созданные, нажав по ссылке «Изменить».
  3. Введите название для «напоминалки», коснитесь иконки с символом «i» для ввода настроек.
  4. На странице редактирования переведите селектор «Напомнить в день» в положение «включено», чтобы загорелся зеленым цветом. Нажмите по строчке с названием «Повтор».
  5. Из предложенного списка выбирайте периодичность повторения, например, каждую неделю или каждый год. Если ни один из вариантов не подходит, установите свой график оповещений, нажав по ссылке «Настройка».

На этом процесс создания напоминания закончен. Чтобы вывести напоминание на экран Айфона, не потребуется дополнительных действий. Аппарат сам покажет сообщение на экране блокировки точно в установленное время.

Если надо сделать напоминание со звуком, добавлять рингтон нет необходимости. Система использует стандартные мелодии оповещения, практически без возможности корректировки.

Помощь голосового ассистента

С введением голосового помощника Siri создание напоминаний стало значительно проще. Ассистент умеет распознавать команды пользователя и выполнять действия с системными приложениями.

На разблокированном экране зажмите кнопку Home внизу смартфона. Дождитесь, пока появится страница с Siri.

Попросите создать напоминание. Для этого достаточно сказать что-то вроде: «Siri, напомни мне, что планерка пройдет 3 сентября в 14-00». Ассистент выполнит задачу, автоматически создавая напоминание.

Недостатками данного способа является требование наличия высокоскоростного интернета, необходимого для работы Siri. А также отсутствие возможности настройки повторений голосом.

Напоминания о днях рождения

Полезной функцией является возможность ставить оповещения о приближающихся днях рождениях. Для подготовки к активации напоминаний сначала потребуется внести данные о датах. Это делается довольно просто:

  • Переходим в приложение «Телефон», где на нижней панели видим вкладку «Контакты».
  • Определяем нужный контакт и через опцию «Изменить» находим ссылку с зеленым плюсиком «Добавить день рождения». Сохраняем изменения, а затем проводим такую же процедуру для всех контактов адресной книги.

После этого можно запустить показ «напоминалок» о днях рождения на главном экране Айфона. Чтобы это сделать, выполняем пошагово пункты следующей инструкции:

  • На главном экране щелкаем по серой шестеренке с надписью «Настройки», выбираем меню «Календарь», где ищем «Напоминания по умолчанию».
  • Настраиваем оповещения в разделе «Дни рождения».
  • В меню «Настройки» – «Уведомления» – «Календарь» проверяем, что селектор стоит во включенном положении, то есть, горит зеленым цветом.

Если у пользователя есть несколько устройств от компании Apple, будет проще сделать «напоминалки» на каждом из них. Для этого нет необходимости вручную дублировать памятные даты на каждом аппарате. Достаточно воспользоваться облачным сервисом iCloud.

Перейдите с главной страницы в раздел настроек, а затем – в опции iCloud. Проверяем, что синхронизация календаря находится в позиции «Включить». Теперь, при условии связи устройства с интернетом, все «напоминалки» станут доступными на каждом устройстве.

Заключение

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

Источник

Оцените статью