2013-02-25 8 views
5

Bir VoIP uygulaması üzerinde çalışıyoruz, uygulamam arka plana gittiğimde, setKeepAliveTimeout: işleyicisini kullanmaya çalışıyorum: bağlantıyı canlı tutmak için. Apple belgelerine göre, zaman aşımı olarak en az 600 saniye vermeyi isterler. Aslında daha az zaman aşımı değerini koruyoruz, daha az zaman aşımıyla başa çıkmak mümkün mü?setKeepAliveTimeout nasıl kullanılır: handler - IOS?

Ve zaman aşımına uğrarsa, zamanlayıcıyı sıfırlamak için işleyiciyi nasıl kullanabilirim veya bağlantımı devam ettirebilmem için daha fazla zaman ister (gelen çağrıları almak için)? İşte

Ben Apple belgelerine itibaren

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 

    BOOL backgroundAccepted = [[UIApplication sharedApplication] setKeepAliveTimeout:600 handler:^{ [self backgroundHandler]; }]; 
    if (backgroundAccepted) 
    { 
     NSLog(@"VOIP backgrounding accepted"); 
    } 
} 




- (void)backgroundHandler { 

    NSLog(@"### -->VOIP backgrounding callback"); // What to do here to extend timeout? 
} 

cevap

2

... yapıyorum budur: Yorumlarınız ilgili

The minimum acceptable timeout value is 600 seconds. 

EDIT'e

Bir VoIP bağlantısı bir (neredeyse) normal bağlantı. Örneğin, verileriniz eksikse uygulamanız arka planda yürütmeyi sürdürür. Zaman aşımı işleyicisi sizin sizin için zaman aşımını önlemek için diğer tarafa ping atmak istemektedir. Biraz daha fazla bilgi TN 2277 verir.

+0

VoIP uygulaması için zaman aşımı işleyicisinin nasıl işleneceği hakkında herhangi bir fikriniz var mı? Sunucuya bağlı kalmak ve gelen çağrı bildirimini almak istiyorum? – Newbee

+0

VoIP bağlantıları olarak normal C++ yuvası (objektif C yuvası-NSstream değil) kullanabilir miyiz? Evet ise, bana nasıl doğru yönde yönlendirilir? – Newbee

+1

[Apple'ın] 'dan (http://developer.apple.com/library/ios/#documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/SocketsAndStreams/SocketsAndStreams.html) belgelerden: "iOS'ta POSIX ağı önerilmez". Ancak, zor yoldan gitmek istiyorsanız, deneyebilirsiniz. Yalnızca ObjC'den kaçınmak ve C-bağlamaları ile mutlu olmak istiyorsanız, [CFNetwork] kullanın (https://developer.apple.com/library/mac/#documentation/Networking/Conceptual/CFNetwork/Introduction/Introduction.html). – Matthias