2017-05-30 4 views
1

PJSIPを使用して迅速なSDKを作成する予定です。私はXCPjsua.hファイルとXCPjsua.cファイルを作成しました。私はXCPjsua.hヘッダーファイルを使用してXCPjsua.cファイルと対話していると私は私の.swiftクラスからメソッド通知を送信したり、コールバックを.cファイルから迅速なクラスに委譲する方法は?

int startPjsip(char *sipUser, char* sipDomain); 


/** 
* Make VoIP call. 
* @param destUri the uri of the receiver, something like "sip:192.168.43.106:5080"; 
*/ 

    2. void makeCall(char* destUri); 

    3. void endCall(); 

の下に、私はXCPjsua.hをインポートすることができますし、私は(startPjsipを呼び出すことができます持っている)、のmakeCall()、[終了] ()メソッドを使用します。このXCPjsua.cファイルから委任コールバックや通知をswiftクラスに送信する方法はありますか?

例:着信コールを受信した場合、XCPjsua.cファイルは着信コールを受信します。 XCPjsua.cから、「あなたは着信を受け取りました」というクラスを迅速に通知したい場合、どうすればいいですか?

+2

httpsを使用すると、あなたのブリッジのヘッダーにインポートすることができますXCPjsua.h

、 ://stackoverflow.com/a/38334529/2065045コールをコールバックを送信するとき、またはizingイベントのコールバックを登録する – teixeiras

答えて

1

XCPjsua.[ch]のコードを管理しているので、ラッパーの作成について心配する必要はありません。コールバックの種類と関数を希望通りに定義することができます。「Swifty "方法。

ここでは、非常に単純化された例を示します。コールバックは、引数を取らず何も返さない関数です。 SwiftコールバックがクロージャとしてCコードに提供されます。あなたはそれをもっと好き(そして実用的/現実的)にすることができ、問題に遭遇した場合、ここに人々に知らせてください。

// Callback type 
typedef void(*call_received_cb_t)(); 

// A C function that monitors for incoming calls. It takes a callback 
// as a parameter and will call it when a call comes in. 
void monitorIncoming(call_received_cb_t cb); 

XCPjsua.cでの実装:最後に

void monitorIncoming(call_received_cb_t cb) { 
    puts("Monitoring for incoming calls..."); 
    // Received a call! 
    cb(); 
} 

が、ここでいくつかのスウィフトコードです:

monitorIncoming({ print("Processing an incoming call in Swift!")}) 
関連する問題