Показывать оповещение, даже если приложение не запущено

введите описание изображения здесьЯ делаю приложение, в котором я хочу, чтобы пользователь был уведомлен о чем-то, даже если приложение не запущено. Как и в приложении для водителей Uber, пользователь получает предупреждение о принятии/отклонении запроса на поездку. Возможно ли это с VoIP и PushKit? Как лучше всего это сделать?


person jkdev    schedule 10.05.2017    source источник
comment
Вы должны использовать уведомление в iOS. Существует два типа: 1. Удаленное уведомление 2. Локальное уведомление. Посмотрите эту ссылку developer.apple.com/notifications   -  person Gagan_iOS    schedule 10.05.2017
comment
Вы сами ответили на свой вопрос, да, вам следует использовать push-уведомления. Я предполагаю, что настоящий вопрос, который вы хотите задать, заключается в том, как лучше всего использовать push-уведомления?   -  person torinpitchers    schedule 10.05.2017
comment
@Гаган_iOS. Спасибо большое. Push-уведомление — это не то, что мне нужно. Как я уже упоминал, требование такое же, как и в приложении для водителей Uber. Пользователь может видеть предупреждение, даже если приложение даже не запущено, в отличие от обычного push-уведомления.   -  person jkdev    schedule 10.05.2017
comment
@Gagan_iOS Еще раз спасибо. Я думаю, что PushKit вместе с VoIP может это сделать. developer.apple.com/library/content/samplecode/Speakerbox/ .   -  person jkdev    schedule 10.05.2017
comment
Да .. вы можете пойти с этим. Это будет ПН для вас   -  person Gagan_iOS    schedule 10.05.2017


Ответы (1)


Да, это возможно с автоматическим уведомлением pushkit.

Как только вы получите полезную нагрузку push-kit, вы должны запланировать локальное уведомление.

Вы можете сделать локальное уведомление интерактивным с принятием/отклонением запроса на поездку и выполнять соответствующие действия при касании, такие как вызов API, SQLite и т. д.

См. приведенный ниже код. Я набросал это в соответствии с функцией вызова VOIP, вы можете набросать в соответствии с вашими требованиями.

func pushRegistry(registry: PKPushRegistry!, didReceiveIncomingPushWithPayload payload: PKPushPayload!, forType type: String!) {
        // Process the received push

        var arrTemp = [NSObject : AnyObject]()
        arrTemp = payload.dictionaryPayload

        let dict : Dictionary <String, AnyObject> = arrTemp["aps"] as! Dictionary<String, AnyObject>


        if "IfUserHasLoggedInWithApp" // Check this flag then only proceed
        {                

            if UIApplication.sharedApplication().applicationState == UIApplicationState.Background || UIApplication.sharedApplication().applicationState == UIApplicationState.Inactive
            {

                if "CheckForIncomingCall" // Check this flag to know incoming call or something else
                {

                    var strTitle : String = dict["alertTitle"] as? String ?? ""
                    let strBody : String = dict["alertBody"] as? String ?? ""
                    strTitle = strTitle + "\n" + strBody

                    let notificationIncomingCall = UILocalNotification()

                    notificationIncomingCall.fireDate = NSDate(timeIntervalSinceNow: 1)
                    notificationIncomingCall.alertBody =  strTitle
                    notificationIncomingCall.alertAction = "Open"
                    notificationIncomingCall.soundName = "SoundFile.mp3"
                    notificationIncomingCall.category = dict["category"] as? String ?? ""

                    notificationIncomingCall.userInfo = "As per payload you receive"

                    UIApplication.sharedApplication().scheduleLocalNotification(notificationIncomingCall)

                    }
                    else
                    {
                        //  something else
                    }

        }
    }

}

Подробнее об интеграции pushkit и полезной нагрузке.

https://github.com/hasyapanchasara/PushKit_SilentPushNotification

введите здесь описание изображения

person Hasya    schedule 10.05.2017
comment
Хася Спасибо. Как мы показываем пользовательский интерфейс для локальных уведомлений. Содержание уведомлений Расширения? - person jkdev; 10.05.2017
comment
Это основано на настройках типа уведомления из настроек устройства. Принять / отклонить эти 2 варианта, которые вы можете использовать, будут все 3 типа. - person Hasya; 10.05.2017
comment
Можем ли мы иметь обычное push-уведомление вместе с VoIP Push в одном приложении? Я имею в виду, нужно ли нам держать их отдельно? - person jkdev; 11.10.2017
comment
Да, вы можете получать push-уведомления в приложении с помощью VoIP push. Метод, связанный с VoIP push, переходит к PKPushRegistryDelegate, а push-уведомление имеет свои методы. Оба могут быть обработаны легко. - person Hasya; 11.10.2017
comment
Большое спасибо!.. Ч/б Должны ли мы сохранять отдельные конфигурации в бэкэнде для обычного push-уведомления и VoIP.. Мой бэкэнд настроен на amazon SNS.? Прямо сейчас у нас есть обычный токен apns для обычной отправки и токен VoIP. Можем ли мы использовать токен VoIP для обычного push? Заранее спасибо. - person jkdev; 12.10.2017
comment
Да, токен push-уведомления и токен VoiP push-уведомления отличаются. Поэтому вам нужно изменить отдельно и на бэкэнде. - person Hasya; 12.10.2017
comment
Спасибо за быстрый ответ. Вы имели в виду, что нам нужно сохранить оба токена? - person jkdev; 12.10.2017
comment
Да, оба токена должны обрабатываться отдельно. Как и в WhatsApp или Skype, есть разные способы push-уведомлений и VOIP. - person Hasya; 12.10.2017
comment
Можем ли мы предупредить пользователя (например, звонок), пока пользователь не ответит или в течение 30 секунд? заранее спасибо - person jkdev; 29.10.2017
comment
Да, вы можете предупредить пользователя, как кольцо. - person Hasya; 30.10.2017
comment
Как мы это делаем, когда приложение находится в фоновом режиме? - person jkdev; 30.10.2017
comment
Пожалуйста, предложите пример, если есть. Спасибо большое. - person jkdev; 30.10.2017
comment
Вы можете использовать локальное уведомление, чтобы уведомить (оповестить) пользователя звуковым файлом типа мелодии звонка. Подробнее см. здесь github.com/hasyapanchasara/PushKit_SilentPushNotification, специально написанное для приложения для видео/аудиозвонков на основе VOIP. . - person Hasya; 30.10.2017
comment
Я хочу, чтобы оповещение оставалось активным в течение 30 секунд или до тех пор, пока пользователь не отреагирует на локальное уведомление. Теперь локальное уведомление запускается один раз, как и удаленное уведомление. Я хочу показать предупреждение, как во вложении к моему исходному вопросу, и держать его в течение 30 секунд. Извините, если я напутал. Я прошел код по вашей ссылке. Но в этом не помогло. Заранее спасибо.. - person jkdev; 30.10.2017
comment
Согласно снимку экрана, прикрепленному к вашему вопросу, просто перейдите к настройкам телефона, уведомлению, выберите приложение, есть различные варианты получения такого оповещения, ничего не связанного с программированием. Ваше изображение и 3-е изображение в моем ответе одинаковы, когда есть 2 варианта, оно выглядит как ваше изображение, а когда есть более 2 вариантов, оно выглядит как 3-е изображение моего ответа. Надеюсь, теперь ты понимаешь. - person Hasya; 30.10.2017
comment
Спасибо большое. Я думаю, что не смог сообщить о требовании. В любом случае я опубликую еще один вопрос. - person jkdev; 30.10.2017
comment
Получил отказ из-за того, как VoIP + PushKit используется вышеописанным способом. В любом случае Apple настроила звонок для обсуждения того же. Жду их! - person jkdev; 11.11.2017