I've used the WebRTC DataConnection API in browsers a lot for p2p communication. Now I'd like to do the same within an iOS app.
I live and develop in a remote region with very slow Internet access. So building the webrtc source myself which involves a 6+ GB download to generate the static library is very difficult. I attempted from a different location and because of the complexity of the build process failed and ran out of time to debug.
I found the libjingle_peerconnection cocoa pod, but the static library this provides is over 70MB which seems too large for an iOS app. I'm wondering if it includes libjingle and webrtc video (I just want to use RTCDataChannels) code that isn't necessary?
I just need a prebuilt iOS arm64 library
I've found a solution that works for my needs which is to use an entirely different iOS WebRTC implementation:
OpenWebRTC which has a great iOS SDK, examples, and pre-built binaries!
Related
What are my options implementing WebRTC (Janus specifically) in my iOS app?
From what I've gathered, using the WebRTC library made by Google is hard and may fail. Also the fact that the backend uses Janus, I don't know how much work I'd have to do to get the basic WebRTC compatible with the Janus layer.
Also, does WebRTC work in Safari/WK webviews in iOS 11/12? I don't want to stream from the app, I only want to view a stream.
I am working on an iOS app that integrates with multiple bluetooth devices (e.g. printers and barcode scanners). Each of the devices comes with it's own version of SDK and most of them just have objective-c/swift SDKs but not javascript SDKs.
Would like to find out what is the best way to reduce the app bundle size at the same time supporting multiple devices ?
Based on my investigations,
iOS doesn't allow downloading objective-c/swift code dynamically during runtime, hence the option of downloading the SDKs after the user having installed the app is ruled out.
Would like to get a feedback on the feasibility of the below solution. Also let me know if there is a better solution.
iOS version 8+ support embedded frameworks - Have separate iOS driver
apps for each of the supported devices which just installs the device
SDK as a shared embedded framework so that the parent app can
dynamically link to the shared embedded framework if one that matches
the connected device is available, otherwise force the user to
download the respective driver app.
This question has gone unanswered for a little while, so you may have already figured this out, but no, you cannot make shared embedded frameworks on iOS. Only Apple can do that. All of the frameworks you use must be either provided by Apple or embedded inside your app.
Preface: there are questions (some good, some bad) already in existance on StackOverflow about webRTC support on various browsers and platforms, including iOS. However I couldn't find anything definitive that was more recent than ~2012, and this is a rapidly-changing field.
I'm working on a browser-based webapp that uses webRTC for minimal-latency peer-to-peer data transfer (not for audio/video, unlike most applications it would seem - all I need is DataChannel).
I hit a snag when I started testing the data-transfer part of the project and discovered that iOS devices still don't natively support this in their built-in browsers (despite some recent rumors).
Bowser is a free open-source browser App for iOS that purports to support webRTC on iOS. The problem is that when I try to open the app, it simply crashes and closes. I've tested this on an iPhone 5 and 5s. Googling has failed to turn up alternatives - even Chrome for iOS doesn't currently support webRTC it seems.
My questions:
1) Are there alternative browsers (even iOS-version restricted) that are currently supporting webRTC, or is there anything promising coming down the pipeline?
2) Does Bowser actually work (webRTC) on iOS devices where it doesn't crash immediately upon launch?
3) What strategies have other people used to work around this limitation?
As of iOS 11, WebRTC is now supported in Safari: https://developer.apple.com/library/archive/releasenotes/General/WhatsNewInSafari/Articles/Safari_11_0.html#//apple_ref/doc/uid/TP40014305-CH13-SW1
Check out crosswalk project ( https://crosswalk-project.org )
This Provides runtime of Chromium engine for native support in older devices.
1) Are there alternative browsers (even iOS-version restricted) that are currently supporting webRTC, or is there anything promising coming down the pipeline?
Answer:
There is a Browser called Bowser that supports webRTC.
2) Does Bowser actually work (webRTC) on iOS devices where it doesn't crash immediately upon launch?
Answer:
It's not crashing as of now.But I couldn't successfully test with anything so far.I have raised an issue about it
3) What strategies have other people used to work around this limitation?
Answer:
Apple is yet to support WebRTC in Webkit so as of now the only way would be develop a native or Hybrid app that would support the unsupported WebRTC APIs.
You can develop a hybrid app powered by OpenWebRTC or cordova-plugin-iosrtc
I am planing to develop an VoIP iOS app and use Twilios SDK. I am making the choice to either use LiveCode, Appery.io, PhoneGap or build a native Objective C app. I am going to build the app for iOS, Android and HTML5 so the ideal would be to develope in JavaScript for all platforms, but as I understand the support for WebRTC is laking on the iPhone so the alternative for iOS is the native twilio SDK.
My requirements is:
be possilbe to use in iPhone 5 with iOS 7 be able to use twilio iOS
SDK´s voip functionality or twilio´s js SDK (if it is possible to
wrap a browser that supports RTC in the code?) be able to integrate
billing such as in-app payment or paypal with zooz or similar
communicate with REST API´s such as Amazon S3 or a node.js server
store temporary info in a SQLLite db when app is off line make fast
and responsive views (file listings etc) is very important
create cfuuid´s
I have seen several Twilio projects that use PhoneGap but none that are using LiveCode.
I have already built an iOS VoIP app in Objective C, but I want to be able to release it on several platforms also such as for Android and build a HTML5 app, without redoing everything.
This isn't really a programming question and should perhaps not be asked here.
You can create an external for LiveCode and quickly create an interface using the LiveCode IDE. This is probably a quick and easy way to make a working app. If you're starting with LiveCode but are experienced in Objective-C, creating an external won't be a problem for you.
LiveCode doesn't contain native iOS controls, which means that you have to emulate the GUI. If you use PhoneGap, you also will need to compile a plugin for PhoneGap using Objective-C, but you can use a framework, such as JQuery, to get the right GUI.
Either way, you will have to compile the SDK and you'll need to be quite profound in Objective-C.
LiveCode will meet all your requirements. However, Apple will deny your app if you use PayPal for in-app purchases. You'll have to use Apple's in-app purchasing feature. I believe this is possible in LiveCode now. I'm not sure how easy it is.
I'm not sure about file listings either. On iOS, you won't have complete access to all files on the phone. This isn't a LiveCode limation but a limitation of the OS.
I've been looking for interactive chart library for iOS but it seems like there's not so many options out there. I've tried CorePlot and two other commercial library but even though the licensing were very expensive they're not quite what I'm looking for or close to some of the charts found in Microstrategy or Roambi app like the on below ...
Then I found an article about Adobe Flex with a few sample applications build using Adobe Flex that can run on iOS. Pretty interesting technology but I'm mostly interested with its chart. Is it possible to create a library using Adobe Flex(with chart views) and import the library into Xcode?
It's possible to create applications with Flex/Flash for iOS using AIR. And there is also a great opportunity exists to import native iOS libraries created with Xcode to the Flex (find some samples here). So you just need to look for appropriate charts functionality implemented with flex/flash and try to launch it under the iOS to see whether you'll be satisfied with performance or not.
Flex = Flash, and iOS != Flash. Clearly, Xcode wouldn't allow it. You could try compiling a bundle from Adobe's cross compiler tool, if that is indeed possible, and use class-dump to access it. Perhaps.
Adobe Flex 4.5 and 4.6 have introduced ANE (Adobe Native Extensions). This allows extending the Adobe AIR runtime ( there is runtime for IPhone, IPad, Adroid, Blackberry 10, ) using native code.
For IPhone you can write a static library compiled as a .a file and import that into your Flex Iphone project and compile as ANE.
Flex also has some native things like vibration, camera etc support, but if you want to do anything nifty with it, just write native.
Compared to Titanium, PhoneGap, KendoUI etc - Adobe Flex 4.6 really stands out. One thing that you must be aware of that Adobe Air runtime needs to be on the device. From Adobe Flex 4.6 onwards, you can actually bundle the air runtime with your app - it is called the captive runtime.