WebRTC Plugin for Cordova (iOS) for Meteor 1.3


#1

I’ve been using eface2face/cordova-plugin-iosrtc to support Twilio on iOS prior to Meteor 1.3.

1.3, however, updates us to Cordova iOS 4.1.0. The cordova-plugin-iosrtc requirements clearly state “don’t attempt to use 4.X,” and sure enough, any attempt to do so has only led me to ponder self-mutilation.

Are there any known alternatives? I just stumbled across remotium/cordova-plugin-webrtc and figure I’ll give it a go.


#2

Sad to hear that Meteor 1.3 breaks the eface2face plugin. I was planning to switch to this. Currently, I am using the tokbox plugin, but I cannot recommend it as it is not maintained any more and the service is quite expensive.

BTW: Do you have a shareable repo for your eface2face integration? I tried this more than once but did not get it to work. And the responses on my github issues were just pingpong.


#3

I don’t have a public repo I can share but I can try to walk you through what I did (YMMV):

  1. per the Usage section the Readme, I added the below to /lib/init.js
if(Meteor.isCordova){

    document.addEventListener('deviceready', function () {
        // Just for iOS devices.
        if (window.device.platform === 'iOS') {
            cordova.plugins.iosrtc.registerGlobals();
        }
    });

}
  1. per the Known Issues section of the Readme, I added ios-websocket-hack.js to my /client directory (wrapping the contents in a check for Meteor.isCordova).

  2. I added iosrtc-swift-support.js to /cordova-build-override/hooks. Then in /cordova-build-override/config.xml I defined a hook for iosrtc-swift-support.js:

...
    <platform name="ios">
        <hook type="after_platform_add" src="hooks/iosrtc-swift-support.js" />
...
  1. Then it was just a matter of following the instructions for configuring xcode:
  • Set “iOS Deployment Target” to 7.0 or higher within your project settings
  • Within the project “Build Settings” add an entry to the “Runpath Search Paths” setting with value @executable_path/Frameworks
  • Within the project “Build Settings” set “Objective-C Bridging Header” to .meteor/local/cordova-build/plugins/cordova-plugin-iosrtc/src/cordova-plugin-iosrtc-Bridging-Header.h
  • Within the project “Build Settings” set “Enable Bitcode” to “No”.
  • When asked about converting Swift syntax, click “cancel”.

#4

Thanks for this info. I will try this out and comeback with any questions, if I may. KR, Tom


#5

@megatroncupcakes

Thanks so much for the detailed walk through! Saved me hours of work.

FYI - eface2face has been updated for cordova 4.X!

Lastly, I had to modify your steps, slightly. I created the following file: cordova-build-override/platforms/ios/VUSE Videos/Bridging-Headers.h and pasted the contents of the standard meteor Bridging-Header.h file and the eface2face bridging header file (XCODE only allows one bridging header file). At the time of this post, my file looks like this:

//
//  Use this file to import your target's public headers that you would like to expose to Swift.
//


#import <Cordova/CDVPlugin.h>

// #import "RTCAudioSource.h"
#import "RTCAudioTrack.h"
#import "RTCDataChannel.h"
#import "RTCEAGLVideoView.h"
// #import "RTCI420Frame.h"
#import "RTCICECandidate.h"
#import "RTCICEServer.h"
#import "RTCMediaConstraints.h"
// #import "RTCMediaSource.h"
#import "RTCMediaStream.h"
#import "RTCMediaStreamTrack.h"
// #import "RTCNSGLVideoView.h"
// #import "RTCOpenGLVideoRenderer.h"
#import "RTCPair.h"
#import "RTCPeerConnection.h"
#import "RTCPeerConnectionDelegate.h"
#import "RTCPeerConnectionFactory.h"
#import "RTCSessionDescription.h"
#import "RTCSessionDescriptionDelegate.h"
// #import "RTCStatsDelegate.h"
// #import "RTCStatsReport.h"
#import "RTCTypes.h"
#import "RTCVideoCapturer.h"
#import "RTCVideoRenderer.h"
#import "RTCVideoSource.h"
#import "RTCVideoTrack.h"

/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at
 http://www.apache.org/licenses/LICENSE-2.0
 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
//
//  Bridging-Header.h
//  __PROJECT_NAME__
//
//  Created by ___FULLUSERNAME___ on ___DATE___.
//  Copyright ___ORGANIZATIONNAME___ ___YEAR___. All rights reserved.
//
//
//  Use this file to import your target's public headers that you would like to expose to Swift.
//

#import <Cordova/CDV.h>
#import "cordova-plugin-meteor-webapp-Bridging-Header.h"