2016-12-28 4 views
2

В моем проекте XCode я использовал метод setKeepAliveTimeout в методе applicationDidEnterBackground, как показано ниже.Как заменить метод UIRemoteNotificationTypeVoip методом setKeepAliveTimeout?

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 
    [self performSelectorOnMainThread:@selector(keepAlive) withObject:nil waitUntilDone:YES]; 

    [application setKeepAliveTimeout:600 handler: ^{ 
    [self performSelectorOnMainThread:@selector(keepAlive) withObject:nil waitUntilDone:YES]; 
    }]; 
} 

Это показывает, что setKeepAliveTimeout метод является устаревшим, и они хотят использовать UIRemoteNotificationTypeVoip метод.

Я искал метод UIRemoteNotificationTypeVoip, но недостаточно результатов. Даже у developer.apple.com нет документации для этого метода.

Задача: Как сменить UIRemoteNotificationTypeVoip где setKeepAliveTimeout?

Если кто знает, тогда дайте мне ответ.

Спасибо заранее!

+0

Вы работаете в приложении на основе VOIP? то setKeepAliveTimeout поможет только в фоновом состоянии. Если вы хотите, чтобы ваше приложение на основе VOIP работало в состоянии прекращения, вам необходимо интегрировать Pushkit. – Hasya

+0

Только его приложение на основе VOIP, но теперь яблоко теперь устарело на метод setKeepAliveTimeout. Вместо метода setKeepAliveTimeout они ввели метод UIRemoteTypeNotificationVoip. Поэтому я хочу, чтобы реализовать метод UIRemoteTypeNotificationVoip. – NandhaKumar

+0

setKeepAliveTimeout или UIRemoteTypeNotificationVoip, ваше приложение не будет работать для цели VOIP в завершенном состоянии. вы должны работать с Пушкитом. См. Https://github.com/hasyapanchasara/PushKit_SilentPushNotification – Hasya

ответ

2

Используйте нижерасположенную структуру для достижения своей задачи.

Некоторые ссылки

https://github.com/hasyapanchasara/PushKit_SilentPushNotification

enter image description here

enter image description here

Используйте этот simplepush.php файл

Используйте следующие команды, чтобы создать файл PEM и использовать его в коде выше ,

После этого перейдите на simplepush.php местоположение и пожарной команды -> PHP simplepush.php

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

https://zeropush.com/guide/guide-to-pushkit-and-voip

https://www.raywenderlich.com/123862/push-notifications-tutorial

Download

import UIKit 
import PushKit 


class AppDelegate: UIResponder, UIApplicationDelegate,PKPushRegistryDelegate{ 



func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 


    let types: UIRemoteNotificationType = [.Alert, .Badge, .Sound] 
    application.registerForRemoteNotificationTypes(types) 

    self. PushKitRegistration() 

    return true 
} 



//MARK: - PushKitRegistration 

func PushKitRegistration() 
{ 

    let mainQueue = dispatch_get_main_queue() 
    // Create a push registry object 
    if #available(iOS 8.0, *) { 

     let voipRegistry: PKPushRegistry = PKPushRegistry(queue: mainQueue) 

     // Set the registry's delegate to self 

     voipRegistry.delegate = self 

     // Set the push type to VoIP 

     voipRegistry.desiredPushTypes = [PKPushTypeVoIP] 

    } else { 
     // Fallback on earlier versions 
    } 


} 


@available(iOS 8.0, *) 
func pushRegistry(registry: PKPushRegistry!, didUpdatePushCredentials credentials: PKPushCredentials!, forType type: String!) { 
    // Register VoIP push token (a property of PKPushCredentials) with server 

    let hexString : String = UnsafeBufferPointer<UInt8>(start: UnsafePointer(credentials.token.bytes), 
     count: credentials.token.length).map { String(format: "%02x", $0) }.joinWithSeparator("") 

    print(hexString) 


} 


@available(iOS 8.0, *) 
func pushRegistry(registry: PKPushRegistry!, didReceiveIncomingPushWithPayload payload: PKPushPayload!, forType type: String!) { 
    // Process the received push 
    // From here you have to schedule your local notification 

} 

} 

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

+0

Можете ли вы изменить этот код на объектив c @hashya – NandhaKumar

+0

Что-то может вам помочь, см. Http://stackoverflow.com/questions/27245808/implement-pushkit-and-test-in-development-behavior – Hasya

+1

Это работает! Я переопределяю методы методов CallKit в своем AppDelegate.m и получаю токен устройства, используя PKPushRegistry из APN. Он отлично работает в моем приложении VOIP. – NandhaKumar

Смежные вопросы