лучшее решение для тихих push-уведомлений в Swift (даже принудительное закрытие)

Я достаточно изучил, прежде чем задавать этот вопрос.
Я работаю с GCM[Google Cloud Messaging] для push-уведомлений.

это сообщение, которое я отправляю из GCM

{
"to" : "....",
"notification": {
"sound": "default",
"badge": "1",
"title": "A Message Received",
"body": "Please open messages",
},
"content_available":true,
"priority": "high",
"data":{
"message":"heey"
}
}

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

func application( application: UIApplication,
    didReceiveRemoteNotification userInfo: [NSObject : AnyObject],
    fetchCompletionHandler handler: (UIBackgroundFetchResult) -> Void) {
}

в другом вопросе, на который есть ответ, сказано, что для него нет решения. кроме pushkit в IOS 8.

некоторые сказали, что эта ссылка может помочь: https://zeropush.com/guide/guide-to-pushkit-and-voip
но я не смог его использовать. некоторые шаги не понятны.

Мой запрос: если кто-нибудь знает лучшее решение или фрагмент кода для платформы PushKit или что-нибудь, что может мне помочь.


person Ehsan Razm khah    schedule 10.11.2015    source источник
comment
Вы когда-нибудь находили ответ на этот вопрос? У меня аналогичная проблема, когда я не могу реагировать на нажатия, когда приложение убито, и пользователь запускает приложение из значка приложения, а не из нажатия.   -  person VeganKid    schedule 11.05.2016


Ответы (1)


Метод:

func application( application: UIApplication,
     didReceiveRemoteNotification userInfo: [NSObject : AnyObject],
            fetchCompletionHandler handler: (UIBackgroundFetchResult) -> Void) {
}

работает, если приложение приостановлено и находится в фоновом режиме. Этот метод предназначен для iOS 7 и выше. Когда приложение не запущено, вызывается didFinishLaunchingWithOptions. Вы можете сделать что-то подобное в этом методе:

 UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (notification) {
    NSLog(@"app recieved notification from remote%@",notification);
    [self application:application didReceiveRemoteNotification(NSDictionary*)notification];
}else{
    NSLog(@"app did not recieve notification");
}

как здесь: определить, было ли запущено приложение /открыто из push-уведомления

Для передачи VoIP в iOS 8 PushKit сначала необходимо создать сертификаты. Этот пример помог мне, поэтому проверьте его: https://www.sinch.com/tutorials/ios8-apps-and-pushkit/ Это очень просто.

person Flipper    schedule 10.11.2015
comment
Спасибо за ответ. но проблема didFinishLaunchingwithOption в том, что пользователь должен щелкнуть уведомление. но в моем случае у меня есть уведомление, которое должно показывать уведомление в будущем. как сообщение на будущее, но push-уведомление отправляется на устройство во время создания. - person Ehsan Razm khah; 10.11.2015