iOS
Send Push Notifications
Настройка push-уведомлений в iOS: облачный код и ObjC
25 мин
отправка push уведомлений с использованием облачного кода на objective c введение в этом разделе объясняется, как вы можете отправлять push уведомления с помощью облачного кода через back4app вот как это будет выглядеть в любое время вы можете получить доступ к полному проекту, созданному с помощью этого учебника, в нашем репозитории github чтобы завершить этот быстрый старт, вам нужно xcode приложение, созданное на back4app следуйте учебнику по созданию нового приложения parse чтобы узнать, как создать приложение parse на back4app ios приложение, подключенное к back4app примечание следуйте учебнику по установке parse sdk (swift) чтобы создать проект xcode, подключенный к back4app ios приложение, настроенное через учебник по push уведомлениям back4app через панель управления устройство ios, iphone или ipad, работающие на ios 10 или новее платная учетная запись разработчика apple 1 настройте ваше ios приложение для получения push каждое приложение parse, установленное на устройстве, зарегистрированном для получения push уведомлений, имеет связанный объект установки объект установки объект объект установки объект установки — это место, где вы храните все данные, необходимые для нацеливания push уведомлений например, в вашем приложении вы можете хранить, какие команды интересуют одного из ваших пользователей, чтобы отправлять обновления о их производительности сохранение объект установки объект установки объекта также необходимо для отслеживания событий открытия приложения, связанных с push самый простой способ начать отправку уведомлений — использовать каналы это позволяет вам использовать модель издатель подписчик для отправки push уведомлений устройства начинают с подписки на один или несколько каналов, и уведомления могут быть отправлены этим подписчикам позже каналы, на которые подписан данный объект установки объект установки хранятся в поле каналы каналы объекта объект установки объект установки после этого мы рассмотрим отправку целевых push уведомлений одному пользователю или группе пользователей на основе запроса далее мы будем предполагать, что вы завершили все шаги учебника по push уведомлениям back4app через панель управления , даже если вы используете проект ios, созданный с помощью этого учебника, который доступен в нашем репозитории github у вас должны работать базовые push уведомления, а также вы должны иметь возможность отправлять уведомления через консоль администратора 2 подпишите ваше устройство на канал новостей сначала мы добавим канал к вашему объекту установки мы сделаем это, изменив метод createinstallationonparse в нашем файле app delegate откройте файл appdelegate m вашего проекта и убедитесь, что ваша версия didregisterforremotenotificationswithdevicetoken совпадает с кодом ниже мы добавляем одну новую строку кода ‘\[currentinstallation setobject @\[@”news1”] forkey @”channels”];’ которая установит массив каналов объекта установки, чтобы он содержал один канал под названием ‘news’ это позволит нам отправлять сообщение всем, кто подписан на канал под названием ‘news’ через облачный код appdelegate m 2\ протестируйте это, запустив ваше приложение на физическом устройстве вы не можете запустить это в симуляторе вам нужен фактический push токен, чтобы обновить запись вашей установки, поэтому физическое устройство обязательно после успешного запуска вы должны увидеть это в разделе установки вашей панели управления вы можете проверить, перейдя на сайт back4app и кликнув на панель управления вашего приложения, а затем проверьте таблицу установок в столбце каналов вы должны увидеть 'news', что показывает, что вы теперь подписаны на канал новостей 3 создайте свой cloud code чтобы узнать больше о том, как начать работу с cloud code посмотрите на учебник по cloud code для ios создайте js js файл, чтобы поместить в него ваш cloud code вам нужно назвать его main js main js , чтобы back4app знал, что это место, где вы храните ваш облачный код определите облачную функцию, используя parse cloud define parse cloud define , чтобы вызвать push уведомление внутри функции мы вызовем parse push send parse push send для отправки уведомлений в канал ‘news’ необходимо использовать master key в этой операции следующий код выполняет эти шаги parse server 3 x // main js 1 parse cloud define("pushsample", (request) => { 2 3 return parse push send({ 4 channels \["news"], 5 data { 6 title "hello from the cloud code", 7 alert "back4app rocks!", 8 } 9 }, { usemasterkey true }); 10 }); parse server 2 x //main js 1 parse cloud define("pushsample", function (request, response) { 2 parse push send({ 3 channels \["news"], 4 data { 5 title "hello from the cloud code", 6 alert "back4app rocks!", 7 } 8 }, { 9 success function () { 10 // push was successful 11 response success("push sent"); 12 console log("success push sent"); 13 }, 14 error function (error) { 15 // push was unsucessful 16 response error("error with push " + error); 17 console log("error " + error); 18 }, 19 usemasterkey true 20 }); 21 }) 4 загрузить в cloud code перейдите в ваше приложение на сайт back4app и нажмите на панель управления панель управления найдите cloud code cloud code и нажмите на функции и веб хостинг функции и веб хостинг это выглядит так 3\ загрузите или создайте новый файл (вы также можете редактировать текущий main js main js файл прямо в браузере) затем нажмите на развернуть развернуть как показано здесь 5 вызов cloud code из вашего ios приложения далее мы собираемся написать код, чтобы вызвать эту облачную функцию из вашего приложения вам понадобятся как симулятор, так и физическое устройство для выполнения этой задачи вы вызовете облачную функцию из вашего приложения, работающего в симуляторе, и вы увидите пуш уведомление на вашем физическом устройстве ваше физическое устройство должно быть закрыто с включенным экраном блокировки, чтобы увидеть пуш пуш уведомление не появится на экране, если вы находитесь в приложении, которое его отправляет, когда вы получаете пуш откройте файл viewcontroller m вашего проекта нам нужно включить parse в контроллер представления, добавив следующий код ‘#import \<parse/parse h>’ в верхней части файла viewcontroller 3\ далее в файле viewcontroller m мы вызовем функцию оповещения из метода viewdidappear оповещение позволит вам запустить облачный код, который отправит пуш на ваше устройство обязательно включите следующий блок кода после функции viewdidload viewcontroller m 4\ запустите ваше приложение в симуляторе, и когда появится предупреждение с просьбой отправить пуш, нажмите “ок” на вашем физическом устройстве вы должны увидеть пуш на экране блокировки 6 вызов облачного кода из rest api rest api предоставляет быстрый и простой способ проверить, работает ли ваша облачная функция просто используйте код ниже в вашем терминале или командной строке нажмите, чтобы узнать больше о том, как начать работу с командной строкой в linux , macos или windows чтобы протестировать push уведомления, просто используйте rest код, пока устройство закрыто 7 отправка целевых push уведомлений с использованием объекта пользователя в дальнейшем мы будем использовать другой проект ios, в котором уже реализованы базовые функции регистрации и входа мы собираемся использовать этот проект ios, чтобы показать вам, как определить, вошел ли пользователь в систему, и если да, сохранить его установку с ссылкой на его объектный идентификатор для запросов в облачном коде вы можете скачать полный проект ios, созданный с помощью учебника этого раздела, в нашем репозитории github , но вам все равно придется выполнить всю настройку из предыдущего учебника, который объясняет, как отправлять уведомления из панели управления back4app получите новую версию приложения, настройте и зарегистрируйтесь или войдите в приложение сначала убедитесь, что вы скачали рабочий шаблон с github по адресу репозитории github мы не будем проходить все шаги по созданию этого приложения, вместо этого мы сосредоточимся на настройке облачного кода и объясним, почему это работает после открытия этого нового приложения обязательно вставьте учетные данные вашего приложения в файл appdelegate m appdelegate m 2\ это приложение имеет некоторые значительные отличия от предыдущего приложения оно состоит из 2 разделов один для входа в ваше приложение и один раздел, когда вы не вошли в ваше приложение следующее большое изменение это функция файла appdelegate m ‘didregisterforremotenotificationswithdevicetoken’ мы добавили 1 строку, которая сохраняет объектный идентификатор пользователя как часть объекта установки таким образом, мы можем знать, какой пользователь связан с каким объектом установки, и можем нацеливаться на них индивидуально для отправки уведомлений appdelegate m 3\ поскольку мы теперь храним идентификатор объекта пользователя как часть объекта установки, мы не хотим запрашивать новый токен push, пока пользователь не войдет в систему мы не хотим запрашивать токен напрямую из функции ‘application didfinishlaunchingwithoptions’ файла appdelegate m, вместо этого мы хотим вызвать его из функции ‘viewdidappear’ контроллера loggedinviewcontroller в ‘viewdidappear’ мы вызываем функцию в appdelegate, чтобы запросить доступ к токену push уведомлений от apple поскольку вы можете просмотреть этот раздел только после входа в систему, мы можем предположить, что пользователь вошел в систему, когда мы создаем объект установки и получаем идентификатор объекта loggedinviewcontroller appdelegate m 4\ хорошо, теперь зарегистрируйтесь или войдите на вашем физическом устройстве (iphone или ipad) запустите приложение вы должны увидеть изображение ниже вам нужно зарегистрироваться, чтобы создать нового пользователя, или войти, если вы уже создали пользователя в вашем приложении вот как это будет выглядеть теперь вы должны увидеть loggedinviewcontroller он должен выглядеть так если вы попытаетесь отправить уведомления себе, это не сработает, потому что мы еще не добавили эти методы в облачный код так что это то, что мы сделаем дальше 8 добавьте целевые методы push в облачный код откройте файл main js, который вы создали ранее, и добавьте следующие функции для нацеливания на установки по идентификатору пользователя необходимо использовать мастер ключ в этой операции следующий код выполняет эти шаги parse server 3 x // main js 1 parse cloud define('sendpushtoyourself', (request) => { 2 let userid = request user id; 3 4 let query = new parse query(parse installation); 5 query equalto("userid", userid); 6 query descending("updatedat"); 7 return parse push send({ 8 where query, 9 data { 10 title "hello from the cloud code", 11 alert "back4app rocks! single message!", 12 } 13 }, { usemasterkey true }); 14 }); 15 16 parse cloud define('sendpushtoallusers', (request) => { 17 let currentuser = request user; 18 let userids = \[currentuser id]; 19 20 let query = new parse query(parse installation); 21 query containedin('userid', userids); 22 return parse push send({ 23 where query, 24 data { 25 title "hello from the cloud code", 26 alert "back4app rocks! group message!", 27 } 28 }, { usemasterkey true }); 29 }); parse server 2 x //main js 1 parse cloud define('sendpushtoyourself', function (request, response) { 2 var currentuser = request user; 3 var userid = currentuser id; 4 5 var query = new parse query("installation"); 6 query equalto("userid", userid); 7 query descending("updatedat"); 8 parse push send({ 9 where query, 10 data { 11 title "hello from the cloud code", 12 alert "back4app rocks! single message!", 13 } 14 }, { 15 usemasterkey true, 16 success function () { 17 response success("success sending a single push!"); 18 }, 19 error function (error) { 20 response error(error code + " " + error description); 21 } 22 }); 23 }); 24 25 parse cloud define('sendpushtoallusers', function (request, response) { 26 var currentuser = request user; 27 var userids = \[currentuser id]; 28 29 var query = new parse query(parse installation); 30 query containedin('userid', userids); 31 parse push send({ 32 where query, 33 data { 34 title "hello from the cloud code", 35 alert "back4app rocks! group message!", 36 } 37 }, { 38 usemasterkey true, 39 success function () { 40 response success('success sending a group push!'); 41 }, 42 error function (message) { 43 response error(error code + " " + error description); 44 } 45 }); 46 }); 9 загрузка в облачный код перейдите в ваше приложение на сайте back4app и нажмите на панель управления панель управления найдите cloud code cloud code и нажмите на функции и веб хостинг функции и веб хостинг это выглядит так 3\ загрузите или создайте новый файл (вы также можете редактировать текущий main js main js файл прямо в браузере) затем нажмите на развернуть развернуть как показано здесь 10 проверьте, что вы можете отправлять целевые push уведомления себе откройте ваше приложение в симуляторе, оставив ваше физическое устройство закрытым с включенным экраном блокировки вы можете протестировать, что обе функции push работают, нажав кнопку «отправить push себе» и кнопку «отправить push группе людей» вы должны увидеть, как push уведомления появляются на экране блокировки вашего устройства заключительные мысли это завершает учебник вы должны иметь четкое понимание того, как отправлять push уведомления на основе канала пользователя или идентификатора объекта пользователя или любого другого запроса, который включает получение идентификатора объекта пользователя помните, что для хранения идентификатора объекта пользователя вы должны добавить его к установке push и запрашивать токен push только тогда, когда пользователь вошел в систему при отправке push через запрос имейте в виду, что по умолчанию это ограничено 100 результатами, и у некоторых пользователей может быть более одной установки объекта также не рекомендуется отправлять push уведомления массиву объектов установки, которые превышают 100 результатов это может привести к тому, что некоторые push уведомления не будут отправлены если вы имеете дело с большими группами людей, лучше использовать каналы или отправлять push уведомления в повторных запросах готово! на этом этапе вы можете отправлять push уведомления с помощью cloud code через back4app! поздравляем!