diff --git a/src/jamidht/channel_handler.h b/src/jamidht/channel_handler.h
index fcda87dd5d6069ae6357ada92ad3248caf399ea6..89ad86ce3be09156eceaa2b40bed8e511485e81f 100644
--- a/src/jamidht/channel_handler.h
+++ b/src/jamidht/channel_handler.h
@@ -37,8 +37,14 @@ public:
      * @param deviceId      The device to connect
      * @param name          The name of the channel
      * @param cb            The callback to call when connected (can be immediate if already connected)
+     * @param connectionType  The connection type used by iOS notifications (not used)
+     * @param forceNewConnection  If we want a new SIP connection (not used)
      */
-    virtual void connect(const DeviceId& deviceId, const std::string& name, ConnectCb&& cb)
+    virtual void connect(const DeviceId& deviceId,
+                         const std::string& name,
+                         ConnectCb&& cb,
+                         const std::string& connectionType = "",
+                         bool forceNewConnection = false)
         = 0;
 
     /**
@@ -47,7 +53,9 @@ public:
      * @param name          The name of the channel
      * @return if we accept or not
      */
-    virtual bool onRequest(const std::shared_ptr<dht::crypto::Certificate>& peer, const std::string& name) = 0;
+    virtual bool onRequest(const std::shared_ptr<dht::crypto::Certificate>& peer,
+                           const std::string& name)
+        = 0;
 
     /**
      * Called when ConnectionManager has a new channel ready
@@ -61,4 +69,4 @@ public:
         = 0;
 };
 
-} // namespace jami
\ No newline at end of file
+} // namespace jami
diff --git a/src/jamidht/conversation_channel_handler.cpp b/src/jamidht/conversation_channel_handler.cpp
index 1a141076a96c2956e59676b7abfcdd6dccfd15a7..723b08f1130189d384c308947356321141b47e2a 100644
--- a/src/jamidht/conversation_channel_handler.cpp
+++ b/src/jamidht/conversation_channel_handler.cpp
@@ -30,7 +30,9 @@ ConversationChannelHandler::~ConversationChannelHandler() {}
 void
 ConversationChannelHandler::connect(const DeviceId& deviceId,
                                     const std::string& channelName,
-                                    ConnectCb&& cb)
+                                    ConnectCb&& cb,
+                                    const std::string& connectionType,
+                                    bool forceNewConnection)
 {
     connectionManager_.connectDevice(deviceId,
                                      "git://" + deviceId.toString() + "/" + channelName,
@@ -65,4 +67,4 @@ ConversationChannelHandler::onReady(const std::shared_ptr<dht::crypto::Certifica
                                     std::shared_ptr<dhtnet::ChannelSocket>)
 {}
 
-} // namespace jami
\ No newline at end of file
+} // namespace jami
diff --git a/src/jamidht/conversation_channel_handler.h b/src/jamidht/conversation_channel_handler.h
index a0f463a3f9b7193a86b9fb2efa346f84dbc96fe5..d080d4e4f28af79cc74006c3ecc628840ac5f0d6 100644
--- a/src/jamidht/conversation_channel_handler.h
+++ b/src/jamidht/conversation_channel_handler.h
@@ -28,7 +28,8 @@ namespace jami {
 class ConversationChannelHandler : public ChannelHandlerInterface
 {
 public:
-    ConversationChannelHandler(const std::shared_ptr<JamiAccount>& acc, dhtnet::ConnectionManager& cm);
+    ConversationChannelHandler(const std::shared_ptr<JamiAccount>& acc,
+                               dhtnet::ConnectionManager& cm);
     ~ConversationChannelHandler();
 
     /**
@@ -36,8 +37,14 @@ public:
      * @param deviceId      The device to connect
      * @param name          The name of the channel
      * @param cb            The callback to call when connected (can be immediate if already connected)
+     * @param connectionType  The connection type used by iOS notifications (not used)
+     * @param forceNewConnection  If we want a new SIP connection (not used)
      */
-    void connect(const DeviceId& deviceId, const std::string& name, ConnectCb&& cb) override;
+    void connect(const DeviceId& deviceId,
+                 const std::string& name,
+                 ConnectCb&& cb,
+                 const std::string& connectionType = "",
+                 bool forceNewConnection = false) override;
 
     /**
      * Determine if we accept or not the git request
@@ -45,7 +52,8 @@ public:
      * @param name          name asked
      * @return if the channel is for a valid conversation and device not banned
      */
-    bool onRequest(const std::shared_ptr<dht::crypto::Certificate>& peer, const std::string& name) override;
+    bool onRequest(const std::shared_ptr<dht::crypto::Certificate>& peer,
+                   const std::string& name) override;
 
     /**
      * TODO, this needs to extract gitservers from JamiAccount
@@ -59,4 +67,4 @@ private:
     dhtnet::ConnectionManager& connectionManager_;
 };
 
-} // namespace jami
\ No newline at end of file
+} // namespace jami
diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp
index 18e91d5701c286a152b146167b5f761294c6ef06..6795c1b29c4da4045bb3678e68755a859038448e 100644
--- a/src/jamidht/jamiaccount.cpp
+++ b/src/jamidht/jamiaccount.cpp
@@ -648,7 +648,7 @@ JamiAccount::startOutgoingCall(const std::shared_ptr<SIPCall>& call, const std::
             }
 
             JAMI_WARNING("[call {}] No channeled socket with this peer. Send request",
-                      call->getCallId());
+                         call->getCallId());
             // Else, ask for a channel (for future calls/text messages)
             auto type = call->hasVideo() ? "videoCall" : "audioCall";
             requestSIPConnection(toUri, deviceId, type, true, dev_call);
@@ -674,8 +674,7 @@ JamiAccount::startOutgoingCall(const std::shared_ptr<SIPCall>& call, const std::
 
         channels.emplace_back(sipConn.channel);
 
-        JAMI_WARNING("[call {}] A channeled socket is detected with this peer.",
-                  call->getCallId());
+        JAMI_WARNING("[call {}] A channeled socket is detected with this peer.", call->getCallId());
 
         auto dev_call = createSubCall(call);
         dev_call->setPeerNumber(call->getPeerNumber());
@@ -790,7 +789,8 @@ JamiAccount::onConnectedOutgoingCall(const std::shared_ptr<SIPCall>& call,
     }
 
     if (not sdp.createOffer(mediaAttrList)) {
-        JAMI_ERROR("[call:{}] Unable to send outgoing INVITE request for new call", call->getCallId());
+        JAMI_ERROR("[call:{}] Unable to send outgoing INVITE request for new call",
+                   call->getCallId());
         return;
     }
 
@@ -806,7 +806,8 @@ JamiAccount::onConnectedOutgoingCall(const std::shared_ptr<SIPCall>& call,
             return;
 
         if (not account->SIPStartCall(*call, target)) {
-            JAMI_ERROR("[call:{}] Unable to send outgoing INVITE request for new call", call->getCallId());
+            JAMI_ERROR("[call:{}] Unable to send outgoing INVITE request for new call",
+                       call->getCallId());
         }
     });
 }
@@ -835,7 +836,11 @@ JamiAccount::SIPStartCall(SIPCall& call, const dhtnet::IpAddr& target)
     auto pjContact = sip_utils::CONST_PJ_STR(contact);
 
     JAMI_LOG("[call:{}] contact header: {} / {} -> {} / {}",
-             call.getCallId(), contact, from, toUri, targetStr);
+             call.getCallId(),
+             contact,
+             from,
+             toUri,
+             targetStr);
 
     auto local_sdp = call.getSDP().getLocalSdpSession();
     pjsip_dialog* dialog {nullptr};
@@ -861,7 +866,8 @@ JamiAccount::SIPStartCall(SIPCall& call, const dhtnet::IpAddr& target)
     }
     tp_sel.u.transport = call.getTransport()->get();
     if (pjsip_dlg_set_transport(dialog, &tp_sel) != PJ_SUCCESS) {
-        JAMI_ERROR("[call:{}] Unable to associate transport for invite session dialog", call.getCallId());
+        JAMI_ERROR("[call:{}] Unable to associate transport for invite session dialog",
+                   call.getCallId());
         return false;
     }
 
@@ -954,8 +960,7 @@ JamiAccount::changeArchivePassword(const std::string& password_old, const std::s
             config.archiveHasPassword = not password_new.empty();
         });
     } catch (const std::exception& ex) {
-        JAMI_ERROR("[Account {}] Unable to change archive password: {}",
-                 getAccountID(), ex.what());
+        JAMI_ERROR("[Account {}] Unable to change archive password: {}", getAccountID(), ex.what());
         if (password_old.empty()) {
             editConfig([&](JamiAccountConfig& config) { config.archiveHasPassword = true; });
             emitSignal<libjami::ConfigurationSignal::AccountDetailsChanged>(getAccountID(),
@@ -1252,12 +1257,12 @@ JamiAccount::loadAccount(const std::string& archive_password_scheme,
             if (info->identity.first->getPublicKey().getLongId() != oldIdentity) {
                 JAMI_WARNING("[Account {:s}] identity changed", getAccountID());
                 {
-                  std::lock_guard lk(moduleMtx_);
-                  convModule_.reset();
+                    std::lock_guard lk(moduleMtx_);
+                    convModule_.reset();
                 }
-                convModule(); // convModule must absolutely be initialized in 
+                convModule(); // convModule must absolutely be initialized in
                               // both branches of the if statement here in order
-                              // for it to exist for subsequent use. 
+                              // for it to exist for subsequent use.
             } else {
                 convModule()->setAccountManager(accountManager_);
             }
@@ -2012,7 +2017,10 @@ JamiAccount::doRegister_()
         });
         connectionManager_->onChannelRequest(
             [this](const std::shared_ptr<dht::crypto::Certificate>& cert, const std::string& name) {
-                JAMI_WARNING("[Account {}] New channel asked with name {} from {}", getAccountID(), name, cert->issuer->getId());
+                JAMI_WARNING("[Account {}] New channel asked with name {} from {}",
+                             getAccountID(),
+                             name,
+                             cert->issuer->getId());
 
                 if (this->config().turnEnabled && turnCache_) {
                     auto addr = turnCache_->getResolvedTurn();
@@ -2595,7 +2603,8 @@ JamiAccount::loadCachedUrl(const std::string& url,
                                     JAMI_WARNING("Failed to download url, using cached data");
                                     std::string data;
                                     {
-                                        std::lock_guard lk(dhtnet::fileutils::getFileLock(cachePath));
+                                        std::lock_guard lk(
+                                            dhtnet::fileutils::getFileLock(cachePath));
                                         data = fileutils::loadTextFile(cachePath);
                                     }
                                     dht::http::Response ret;
@@ -3023,7 +3032,9 @@ JamiAccount::sendMessage(const std::string& to,
     try {
         toUri = parseJamiUri(to);
     } catch (...) {
-        JAMI_ERROR("[Account {}] Failed to send a text message due to an invalid URI {}", getAccountID(), to);
+        JAMI_ERROR("[Account {}] Failed to send a text message due to an invalid URI {}",
+                   getAccountID(),
+                   to);
         if (!onlyConnected)
             messageEngine_.onMessageSent(to, token, false, deviceId);
         return;
@@ -3039,7 +3050,8 @@ JamiAccount::sendMessage(const std::string& to,
 
     // Use the Message channel if available
     std::unique_lock clk(connManagerMtx_);
-    auto* handler =static_cast<MessageChannelHandler*>(channelHandlers_[Uri::Scheme::MESSAGE].get());
+    auto* handler = static_cast<MessageChannelHandler*>(
+        channelHandlers_[Uri::Scheme::MESSAGE].get());
     if (!handler) {
         clk.unlock();
         if (!onlyConnected)
@@ -3055,7 +3067,7 @@ JamiAccount::sendMessage(const std::string& to,
         bool sent = false;
         auto conns = handler->getChannels(toUri);
         clk.unlock();
-        for (const auto &conn: conns) {
+        for (const auto& conn : conns) {
             if (MessageChannelHandler::sendMessage(conn, msg)) {
                 devices->emplace(conn->deviceId());
                 sent = true;
@@ -3084,7 +3096,7 @@ JamiAccount::sendMessage(const std::string& to,
         clk.unlock();
 
     std::unique_lock lk(sipConnsMtx_);
-    for (auto& [key, value]: sipConns_) {
+    for (auto& [key, value] : sipConns_) {
         if (key.first != to or value.empty())
             continue;
         if (!deviceId.empty() && key.second != device)
@@ -3113,7 +3125,7 @@ JamiAccount::sendMessage(const std::string& to,
                                       payloads,
                                       [](void* token, pjsip_event* event) {
                                           std::shared_ptr<TextMessageCtx> c {
-                                                  (TextMessageCtx*) token};
+                                              (TextMessageCtx*) token};
                                           auto code = event->body.tsx_state.tsx->status_code;
                                           runOnMainThread([c = std::move(c), code]() {
                                               if (c) {
@@ -3181,8 +3193,12 @@ JamiAccount::sendMessage(const std::string& to,
         auto toH = dht::InfoHash(toUri);
         // Find listening devices for this account
         accountManager_->forEachDevice(toH,
-                                       [this, to, devices, payload_type, currentDevice = DeviceId(currentDeviceId())](
-                                               const std::shared_ptr<dht::crypto::PublicKey>& dev) {
+                                       [this,
+                                        to,
+                                        devices,
+                                        payload_type,
+                                        currentDevice = DeviceId(currentDeviceId())](
+                                           const std::shared_ptr<dht::crypto::PublicKey>& dev) {
                                            // Test if already sent
                                            auto deviceId = dev->getLongId();
                                            if (!devices->emplace(deviceId).second
@@ -3656,10 +3672,12 @@ JamiAccount::callConnectionClosed(const DeviceId& deviceId, bool eraseDummy)
 
 void
 JamiAccount::requestMessageConnection(const std::string& peerId,
-                                  const DeviceId& deviceId,
-                                  const std::string& connectionType,
-                                  bool forceNewConnection) {
-    auto* handler = static_cast<MessageChannelHandler*>(channelHandlers_[Uri::Scheme::MESSAGE].get());
+                                      const DeviceId& deviceId,
+                                      const std::string& connectionType,
+                                      bool forceNewConnection)
+{
+    auto* handler = static_cast<MessageChannelHandler*>(
+        channelHandlers_[Uri::Scheme::MESSAGE].get());
     if (deviceId) {
         if (auto connected = handler->getChannel(peerId, deviceId)) {
             return;
@@ -3670,17 +3688,21 @@ JamiAccount::requestMessageConnection(const std::string& peerId,
             return;
         }
     }
-    handler->connect(deviceId, "", [w = weak(), peerId](
-            std::shared_ptr<dhtnet::ChannelSocket> socket, const DeviceId& deviceId) {
-        if (socket)
-            if (auto acc = w.lock()) {
-                acc->messageEngine_.onPeerOnline(peerId);
-                acc->messageEngine_.onPeerOnline(peerId, deviceId.toString(), true);
-            }
-    });
+    handler->connect(
+        deviceId,
+        "",
+        [w = weak(), peerId](std::shared_ptr<dhtnet::ChannelSocket> socket,
+                             const DeviceId& deviceId) {
+            if (socket)
+                if (auto acc = w.lock()) {
+                    acc->messageEngine_.onPeerOnline(peerId);
+                    acc->messageEngine_.onPeerOnline(peerId, deviceId.toString(), true);
+                }
+        },
+        connectionType,
+        forceNewConnection);
 }
 
-
 void
 JamiAccount::requestSIPConnection(const std::string& peerId,
                                   const DeviceId& deviceId,
@@ -3692,21 +3714,23 @@ JamiAccount::requestSIPConnection(const std::string& peerId,
     if (peerId == getUsername()) {
         if (!syncModule()->isConnected(deviceId))
             channelHandlers_[Uri::Scheme::SYNC]
-                    ->connect(deviceId,
-                              "",
-                              [](std::shared_ptr<dhtnet::ChannelSocket> socket, const DeviceId& deviceId) {});
+                ->connect(deviceId,
+                          "",
+                          [](std::shared_ptr<dhtnet::ChannelSocket> socket,
+                             const DeviceId& deviceId) {});
     }
 
     JAMI_LOG("[Account {}] Request SIP connection to peer {} on device {}",
-             getAccountID(), peerId, deviceId);
+             getAccountID(),
+             peerId,
+             deviceId);
 
     // If a connection already exists or is in progress, no need to do this
     std::lock_guard lk(sipConnsMtx_);
     auto id = std::make_pair(peerId, deviceId);
 
     if (sipConns_.find(id) != sipConns_.end()) {
-        JAMI_LOG("[Account {}] A SIP connection with {} already exists",
-                 getAccountID(), deviceId);
+        JAMI_LOG("[Account {}] A SIP connection with {} already exists", getAccountID(), deviceId);
         return;
     }
     // If not present, create it
diff --git a/src/jamidht/message_channel_handler.cpp b/src/jamidht/message_channel_handler.cpp
index ea8e0de212a8fcc6210b4a144894726fdb33a229..98cde108ee1ed3ca6fb5d9a37d1b7c243e030f97 100644
--- a/src/jamidht/message_channel_handler.cpp
+++ b/src/jamidht/message_channel_handler.cpp
@@ -22,7 +22,7 @@ namespace jami {
 
 using Key = std::pair<std::string, DeviceId>;
 
-struct MessageChannelHandler::Impl: public std::enable_shared_from_this<Impl>
+struct MessageChannelHandler::Impl : public std::enable_shared_from_this<Impl>
 {
     std::weak_ptr<JamiAccount> account_;
     dhtnet::ConnectionManager& connectionManager_;
@@ -34,11 +34,13 @@ struct MessageChannelHandler::Impl: public std::enable_shared_from_this<Impl>
         , connectionManager_(cm)
     {}
 
-    void onChannelShutdown(const std::shared_ptr<dhtnet::ChannelSocket>& socket, const std::string& peerId, const DeviceId& device);
+    void onChannelShutdown(const std::shared_ptr<dhtnet::ChannelSocket>& socket,
+                           const std::string& peerId,
+                           const DeviceId& device);
 };
 
 MessageChannelHandler::MessageChannelHandler(const std::shared_ptr<JamiAccount>& acc,
-                                       dhtnet::ConnectionManager& cm)
+                                             dhtnet::ConnectionManager& cm)
     : ChannelHandlerInterface()
     , pimpl_(std::make_shared<Impl>(acc, cm))
 {}
@@ -46,7 +48,11 @@ MessageChannelHandler::MessageChannelHandler(const std::shared_ptr<JamiAccount>&
 MessageChannelHandler::~MessageChannelHandler() {}
 
 void
-MessageChannelHandler::connect(const DeviceId& deviceId, const std::string&, ConnectCb&& cb)
+MessageChannelHandler::connect(const DeviceId& deviceId,
+                               const std::string&,
+                               ConnectCb&& cb,
+                               const std::string& connectionType,
+                               bool forceNewConnection)
 {
     auto channelName = MESSAGE_SCHEME + deviceId.toString();
     if (pimpl_->connectionManager_.isConnecting(deviceId, channelName)) {
@@ -57,12 +63,14 @@ MessageChannelHandler::connect(const DeviceId& deviceId, const std::string&, Con
                                              channelName,
                                              std::move(cb),
                                              false,
-                                             false,
-                                             MIME_TYPE_GIT);
+                                             forceNewConnection,
+                                             connectionType);
 }
 
 void
-MessageChannelHandler::Impl::onChannelShutdown(const std::shared_ptr<dhtnet::ChannelSocket>& socket, const std::string& peerId, const DeviceId& device)
+MessageChannelHandler::Impl::onChannelShutdown(const std::shared_ptr<dhtnet::ChannelSocket>& socket,
+                                               const std::string& peerId,
+                                               const DeviceId& device)
 {
     std::lock_guard lk(connectionsMtx_);
     auto connectionsIt = connections_.find({peerId, device});
@@ -101,19 +109,19 @@ MessageChannelHandler::getChannels(const std::string& peer) const
 
 bool
 MessageChannelHandler::onRequest(const std::shared_ptr<dht::crypto::Certificate>& cert,
-                              const std::string& /* name */)
+                                 const std::string& /* name */)
 {
     auto acc = pimpl_->account_.lock();
     if (!cert || !cert->issuer || !acc)
         return false;
     return true;
-    //return cert->issuer->getId().toString() == acc->getUsername();
+    // return cert->issuer->getId().toString() == acc->getUsername();
 }
 
 void
 MessageChannelHandler::onReady(const std::shared_ptr<dht::crypto::Certificate>& cert,
-                            const std::string&,
-                            std::shared_ptr<dhtnet::ChannelSocket> socket)
+                               const std::string&,
+                               std::shared_ptr<dhtnet::ChannelSocket> socket)
 {
     auto acc = pimpl_->account_.lock();
     if (!cert || !cert->issuer || !acc)
@@ -123,7 +131,7 @@ MessageChannelHandler::onReady(const std::shared_ptr<dht::crypto::Certificate>&
     std::lock_guard lk(pimpl_->connectionsMtx_);
     pimpl_->connections_[{peerId, device}].emplace_back(socket);
 
-    socket->onShutdown([w = pimpl_->weak_from_this(), peerId, device, s=std::weak_ptr(socket)]() {
+    socket->onShutdown([w = pimpl_->weak_from_this(), peerId, device, s = std::weak_ptr(socket)]() {
         if (auto shared = w.lock())
             shared->onChannelShutdown(s.lock(), peerId, device);
     });
@@ -135,9 +143,9 @@ MessageChannelHandler::onReady(const std::shared_ptr<dht::crypto::Certificate>&
                                1500};
     };
 
-    socket->setOnRecv([acc = pimpl_->account_.lock(), peerId,
-                       ctx = std::make_shared<DecodingContext>()
-    ](const uint8_t* buf, size_t len) {
+    socket->setOnRecv([acc = pimpl_->account_.lock(),
+                       peerId,
+                       ctx = std::make_shared<DecodingContext>()](const uint8_t* buf, size_t len) {
         if (!buf || !acc)
             return len;
 
@@ -161,7 +169,8 @@ MessageChannelHandler::onReady(const std::shared_ptr<dht::crypto::Certificate>&
 }
 
 bool
-MessageChannelHandler::sendMessage(const std::shared_ptr<dhtnet::ChannelSocket>& socket, const Message& message)
+MessageChannelHandler::sendMessage(const std::shared_ptr<dhtnet::ChannelSocket>& socket,
+                                   const Message& message)
 {
     if (!socket)
         return false;
diff --git a/src/jamidht/message_channel_handler.h b/src/jamidht/message_channel_handler.h
index 402f875f33073895a19f92f4cd235b2fe441a959..bb29fd6a9f5d575ba2eefc6ba1df7b4e38ba8b53 100644
--- a/src/jamidht/message_channel_handler.h
+++ b/src/jamidht/message_channel_handler.h
@@ -36,10 +36,17 @@ public:
      * @param deviceId      The device to connect
      * @param name          (Unused, generated from deviceId)
      * @param cb            The callback to call when connected (can be immediate if already connected)
+     * @param connectionType for iOS notifications
+     * @param forceNewConnection If we want a new SIP connection
      */
-    void connect(const DeviceId& deviceId, const std::string&, ConnectCb&& cb) override;
+    void connect(const DeviceId& deviceId,
+                 const std::string&,
+                 ConnectCb&& cb,
+                 const std::string& connectionType,
+                 bool forceNewConnection = false) override;
 
-    std::shared_ptr<dhtnet::ChannelSocket> getChannel(const std::string& peer, const DeviceId& deviceId) const;
+    std::shared_ptr<dhtnet::ChannelSocket> getChannel(const std::string& peer,
+                                                      const DeviceId& deviceId) const;
     std::vector<std::shared_ptr<dhtnet::ChannelSocket>> getChannels(const std::string& peer) const;
 
     /**
@@ -48,7 +55,8 @@ public:
      * @param name          Name asked
      * @return if the channel is for a valid conversation and device not banned
      */
-    bool onRequest(const std::shared_ptr<dht::crypto::Certificate>& peer, const std::string& name) override;
+    bool onRequest(const std::shared_ptr<dht::crypto::Certificate>& peer,
+                   const std::string& name) override;
 
     /**
      * Launch message process
@@ -60,10 +68,11 @@ public:
                  const std::string& name,
                  std::shared_ptr<dhtnet::ChannelSocket> channel) override;
 
-    struct Message {
-        std::string t;                                   /* Message type */
-        std::string c;                                   /* Message content */
-        std::unique_ptr<ConversationRequest> req;        /* Conversation request */
+    struct Message
+    {
+        std::string t;                            /* Message type */
+        std::string c;                            /* Message content */
+        std::unique_ptr<ConversationRequest> req; /* Conversation request */
         MSGPACK_DEFINE_MAP(t, c, req)
     };
 
@@ -74,4 +83,4 @@ private:
     std::shared_ptr<Impl> pimpl_;
 };
 
-} // namespace jami
\ No newline at end of file
+} // namespace jami
diff --git a/src/jamidht/swarm/swarm_channel_handler.cpp b/src/jamidht/swarm/swarm_channel_handler.cpp
index f1744f71eb65c71751acc5488ed2d4ffaa8ff34e..5e7ac4e4cad1ae3562357bd7b46b41cd03703b48 100644
--- a/src/jamidht/swarm/swarm_channel_handler.cpp
+++ b/src/jamidht/swarm/swarm_channel_handler.cpp
@@ -31,7 +31,9 @@ SwarmChannelHandler::~SwarmChannelHandler() {}
 void
 SwarmChannelHandler::connect(const DeviceId& deviceId,
                              const std::string& conversationId,
-                             ConnectCb&& cb)
+                             ConnectCb&& cb,
+                             const std::string& connectionType,
+                             bool forceNewConnection)
 {
 #ifdef LIBJAMI_TESTABLE
     if (disableSwarmManager)
@@ -76,4 +78,4 @@ SwarmChannelHandler::onReady(const std::shared_ptr<dht::crypto::Certificate>&,
         }
     }
 }
-} // namespace jami
\ No newline at end of file
+} // namespace jami
diff --git a/src/jamidht/swarm/swarm_channel_handler.h b/src/jamidht/swarm/swarm_channel_handler.h
index adf064ce7e79ce5f2ece0739eb91c4948e643161..1e2974d763f5d3ec62ab3f08b0cd5790fef960ad 100644
--- a/src/jamidht/swarm/swarm_channel_handler.h
+++ b/src/jamidht/swarm/swarm_channel_handler.h
@@ -46,8 +46,14 @@ public:
      * @param nodeId      The node to connect
      * @param name          The name of the channel
      * @param cb            The callback to call when connected (can be immediate if already connected)
+     * @param connectionType  The connection type used by iOS notifications (not used)
+     * @param forceNewConnection  If we want a new SIP connection (not used)
      */
-    void connect(const NodeId& nodeId, const std::string& name, ConnectCb&& cb) override;
+    void connect(const NodeId& nodeId,
+                 const std::string& name,
+                 ConnectCb&& cb,
+                 const std::string& connectionType = "",
+                 bool forceNewConnection = false) override;
 
     /**
      * Determine if we accept or not the git request
@@ -70,4 +76,4 @@ private:
     dhtnet::ConnectionManager& connectionManager_;
 };
 
-} // namespace jami
\ No newline at end of file
+} // namespace jami
diff --git a/src/jamidht/sync_channel_handler.cpp b/src/jamidht/sync_channel_handler.cpp
index 58b0b223489b6086e26f80c387009b2353ed2080..34acc940843505b4c78a3989d528e73aae2f3800 100644
--- a/src/jamidht/sync_channel_handler.cpp
+++ b/src/jamidht/sync_channel_handler.cpp
@@ -31,16 +31,18 @@ SyncChannelHandler::SyncChannelHandler(const std::shared_ptr<JamiAccount>& acc,
 SyncChannelHandler::~SyncChannelHandler() {}
 
 void
-SyncChannelHandler::connect(const DeviceId& deviceId, const std::string&, ConnectCb&& cb)
+SyncChannelHandler::connect(const DeviceId& deviceId,
+                            const std::string&,
+                            ConnectCb&& cb,
+                            const std::string& connectionType,
+                            bool forceNewConnection)
 {
     auto channelName = SYNC_SCHEME + deviceId.toString();
     if (connectionManager_.isConnecting(deviceId, channelName)) {
         JAMI_LOG("Already connecting to {}", deviceId);
         return;
     }
-    connectionManager_.connectDevice(deviceId,
-                                     channelName,
-                                     std::move(cb));
+    connectionManager_.connectDevice(deviceId, channelName, std::move(cb));
 }
 
 bool
@@ -65,10 +67,10 @@ SyncChannelHandler::onReady(const std::shared_ptr<dht::crypto::Certificate>& cer
         sm->cacheSyncConnection(std::move(channel),
                                 cert->issuer->getId().toString(),
                                 cert->getLongId());
-    dht::ThreadPool::io().run([account=account_, channel]() {
+    dht::ThreadPool::io().run([account = account_, channel]() {
         if (auto acc = account.lock())
             acc->sendProfile("", acc->getUsername(), channel->deviceId().toString());
     });
 }
 
-} // namespace jami
\ No newline at end of file
+} // namespace jami
diff --git a/src/jamidht/sync_channel_handler.h b/src/jamidht/sync_channel_handler.h
index 570d12a091e859ab679016f4b0ffea8fee09e88d..029bf5d6dadfbd9f73ac3113c69fb87f890eb72b 100644
--- a/src/jamidht/sync_channel_handler.h
+++ b/src/jamidht/sync_channel_handler.h
@@ -36,8 +36,14 @@ public:
      * @param deviceId      The device to connect
      * @param name          (Unused, generated from deviceId)
      * @param cb            The callback to call when connected (can be immediate if already connected)
+     * @param connectionType  The connection type used by iOS notifications (not used)
+     * @param forceNewConnection  If we want a new SIP connection (not used)
      */
-    void connect(const DeviceId& deviceId, const std::string&, ConnectCb&& cb) override;
+    void connect(const DeviceId& deviceId,
+                 const std::string&,
+                 ConnectCb&& cb,
+                 const std::string& connectionType = "",
+                 bool forceNewConnection = false) override;
 
     /**
      * Determine if we accept or not the sync request
@@ -45,7 +51,8 @@ public:
      * @param name          Name asked
      * @return if the channel is for a valid conversation and device not banned
      */
-    bool onRequest(const std::shared_ptr<dht::crypto::Certificate>& peer, const std::string& name) override;
+    bool onRequest(const std::shared_ptr<dht::crypto::Certificate>& peer,
+                   const std::string& name) override;
 
     /**
      * Launch sync process
@@ -62,4 +69,4 @@ private:
     dhtnet::ConnectionManager& connectionManager_;
 };
 
-} // namespace jami
\ No newline at end of file
+} // namespace jami
diff --git a/src/jamidht/transfer_channel_handler.cpp b/src/jamidht/transfer_channel_handler.cpp
index c63e0202b987406c2b083198fc1de20d85e904dc..21112f6a66e853c4e210232d5b4b39cfeae24694 100644
--- a/src/jamidht/transfer_channel_handler.cpp
+++ b/src/jamidht/transfer_channel_handler.cpp
@@ -38,7 +38,9 @@ TransferChannelHandler::~TransferChannelHandler() {}
 void
 TransferChannelHandler::connect(const DeviceId& deviceId,
                                 const std::string& channelName,
-                                ConnectCb&& cb)
+                                ConnectCb&& cb,
+                                const std::string& connectionType,
+                                bool forceNewConnection)
 {}
 
 bool
@@ -80,10 +82,7 @@ TransferChannelHandler::onRequest(const std::shared_ptr<dht::crypto::Certificate
         return uri == acc->getUsername();
     }
 
-    return cm->onFileChannelRequest(conversationId,
-                                                   uri,
-                                                   std::string(fileId),
-                                                   acc->sha3SumVerify());
+    return cm->onFileChannelRequest(conversationId, uri, std::string(fileId), acc->sha3SumVerify());
 }
 
 void
@@ -122,7 +121,8 @@ TransferChannelHandler::onReady(const std::shared_ptr<dht::crypto::Certificate>&
                     lastModified = jami::to_int<uint64_t>(keyVal[1]);
                 } catch (const std::exception& e) {
                     JAMI_WARNING("TransferChannel: Unable to parse modified date: {}: {}",
-                                 keyVal[1], e.what());
+                                 keyVal[1],
+                                 e.what());
                 }
             }
         }
@@ -185,4 +185,4 @@ TransferChannelHandler::onReady(const std::shared_ptr<dht::crypto::Certificate>&
     dt->transferFile(channel, fileId, interactionId, path.string(), start, end);
 }
 
-} // namespace jami
\ No newline at end of file
+} // namespace jami
diff --git a/src/jamidht/transfer_channel_handler.h b/src/jamidht/transfer_channel_handler.h
index 6f5cba957390dde3ed1c677bd93708ec7d86947b..a836988122ea9d0dec1a2c3ee5ff755f27a57eeb 100644
--- a/src/jamidht/transfer_channel_handler.h
+++ b/src/jamidht/transfer_channel_handler.h
@@ -37,8 +37,14 @@ public:
      * @param deviceId      The device to connect
      * @param channelName   The name of the channel
      * @param cb            The callback to call when connected (can be immediate if already connected)
+     * @param connectionType  The connection type used by iOS notifications (not used)
+     * @param forceNewConnection  If we want a new SIP connection (not used)
      */
-    void connect(const DeviceId& deviceId, const std::string& channelName, ConnectCb&& cb) override;
+    void connect(const DeviceId& deviceId,
+                 const std::string& channelName,
+                 ConnectCb&& cb,
+                 const std::string& connectionType = "",
+                 bool forceNewConnection = false) override;
 
     /**
      * Determine if we accept or not the request
@@ -46,7 +52,8 @@ public:
      * @param name          name asked
      * @return if we accept or not
      */
-    bool onRequest(const std::shared_ptr<dht::crypto::Certificate>& peer, const std::string& name) override;
+    bool onRequest(const std::shared_ptr<dht::crypto::Certificate>& peer,
+                   const std::string& name) override;
 
     /**
      * Handle socket ready
@@ -65,4 +72,4 @@ private:
     std::filesystem::path idPath_;
 };
 
-} // namespace jami
\ No newline at end of file
+} // namespace jami