I'm trying to wrap my head around this and figure out what would be the best approach:
I want to take advantage of all the new features that iOS 6.0 introduced in terms of interacting with facebook - this includes the built-in social framework that allows fast facebook SSO and native post dialogs. This is done fairly easily using the new Facebook iOS SDK v3.1.1.
The problem is that I also want my applications to be available for any non-iOS 6.0 adopters. This made me face a very ugly situation in which I need to create an elaborate social wrapper that would have to be compiled differently (with different FB SDKs) and to run separate code in order to support earlier iOS versions. Because a lot of the Facebook SDK already includes fallbacks and handles a lot of old, deprecated calls to the feed and dialog APIs, I figured that there must be a better way, while taking this in account, to create such a social wrapper.
I guess what I'm asking for here is any clue as to where to proceed from here. If anyone has ever tackled this issue (even in earlier versions of the SDK) I would be glad to know.
Thanks in advance
Weak linking is definitely the way to go here.
The 3.1.1 SDK can handle running on either iOS 5 or iOS 6, all you need to do is weak link the relevant frameworks in your build settings, and change the deployment traget to 5.0 (leaving the base sdk as 6.0).
Of course, you still need to handle the case when the native post dialog isn't available (You can use FBNAtiveDialogs' canPresentShareDialogWithSession: method) and use the SDK dialog instead.
Related
Goal
I'm building an iOS app using flutter for frontend, and C/C++ as backend. They must interoperate through FFI, which is a language binding scheme through C dynamic libraries. I intend to submit it to iOS App Store.
Problems
The Dart FFI sample on accessing C-struct works on macOS through dynamic liking and binding. Now dynamic linking is technically possible on iOS according to Xcode 9 - No option to create dylib project iOS, however, it's unclear to me how to ship the app to AppStore, because dynamic linking is not allowed according to Apple Guidelines Section 2.5.2.
2.5.2 Apps should be self-contained in their bundles, and may not read or write data outside the designated container area, nor may they
download, install, or execute code which introduces or changes
features or functionality of the app, including other apps.
Educational apps designed to teach, develop, or allow students to test
executable code may, in limited circumstances, download code provided
that such code is not used for other purposes. Such apps must make the
source code provided by the Application completely viewable and
editable by the user.
Quite a few SO questions confirm this problem, such as:
can I use dynamic library(shared object) in my iphone app?
Will Appstore reviewers allow us to use dynamic library in iOS8?
Then official flutter documentation says
Dynamically linked libraries are automatically loaded by the dynamic
linker when the app starts. Their constituent symbols can be resolved
using DynamicLibrary.process. You can also get a handle to the library
with DynamicLibrary.open to restrict the scope of symbol resolution,
but it’s unclear how Apple’s review process handles this.
Questions
As of the date when I post this (2020), does this say that I could never ship an app using this architecture to App Store?
Is it possible that I static link my C/C++ code into a single binary of a flutter app? Take Unity as an example, their iOS plugin system recompiles the plugin into native app. If flutter has a similar mechanism, how?
The answers saying you can't use dynamic libraries on iOS date to before iOS 8, when support for user-provided dynamic libraries was added.
Nothing in 2.5.2 days you can't use dynamic libraires as long as they are shipped as part of your app. So:
As of the date when I post this (2020), does this say that I could never ship an app using this architecture to App Store?
No it doesn't, as long as "this architecture" refers to using a dynamic library that you link to at build time and bundle into your application.
Adding inputs from Reddit's FlutterDev channel
#escamoteur
As I understand it you are not allowed to load any library from
outside your installation folder. Especially not downloading something
at a later point of time. Could you make this a Stackoverflow question
and tag it with Flutter?
#airflow_matt
Since iOS 8 there can be shared libraries in the bundle, when properly
codesigned I don't see why dlopen wouldn't work. Or you can link the
library with main executable itself (just like flutter does) and
dlopen self (DynamicLibrary.process()). I think it's worth a shot.
I am starting to get friendly with deep linking and have read about universal links in iOS 9.3 above. I want to open my app from an email through deep linking.
I am able to do it with deep linking using universal links but how do I do it for below versions. Please help.
You have to use a custom URI scheme. Obviously you also need to do OS version detection to make sure you are using the appropriate approach.
The recommendation to try Firebase Dynamic Links or Branch (full disclosure: I'm on the Branch team) is a good one; it will save you a lot of work and headache.
Are there any ad network wrappers besides Google's Admob for React Native? Like Chartboost, Flurry or...well anything else in fact. I haven't found anything else in my searches so does that mean we can only use Admob?
Appodeal provides a react native integration now. You can choose react native framework when registering your app on appodeal
EDIT:
Appodeal now discontinues the support of their react-native wrapper
See here
I’ve been looking around on this topic too. And here is my take so far. Probably late for the original post. But it might be helpful for people who find this via search in the future (like me).
AdMob: Supported and verified
I managed to make this work. In terms of dependency, AdMob needs FireBase. But FireBase does not support React Native out of box. I used React-Native-Firebase to make it work.
https://rnfirebase.io/
https://firebase.google.com/
https://dev-yakuza.github.io/en/react-native/react-native-admob/
FB Ads: Supported
I haven’t verified it myself. But it seems to be well documented. (And React Native being related to Facebook, I’d be surprised if it weren’t supported.)
https://www.npmjs.com/package/react-native-fbads
Flurry: NOT supported
Flurry Analytics supports React Native but Flurry Ads do not. Below is message from their support team when I asked them about this.
"Thank you for contacting Flurry Technical Support. We offer a React Native wrapper, however it does not currently support ads, only analytics. You can read more about it here:
https://developer.yahoo.com/flurry/docs/integrateflurry/react-native/ "
MoPub: Not really
I’ve found two React Native wrappers. One is old and no longer updated. (The authors seem to be actively monitoring the discussions and replying to queries. But they are no longer providing tech support.) And the other is very new and doesn’t seem to have enough documentation or evidence that it actually works.
https://www.npmjs.com/package/react-native-mopub
https://www.npmjs.com/package/react-native-mopub-sdk
as far as i know appodeal supports react native. + it provides access to facebook, avocarrot, inmobi, smaato, mopub and startapp alongside with openx and flurry for native ads.
I'm currently working on an app where I need to displa charts like in the added picture. I already know about ios-charts framework, etc.
But I really like the charts from iOS 9 health app landscape mode. It's showing current value when touching:
Now I'm wondering if this kind of chart is available for developers from Apple in iOS 9, because I already saw it in some other 3rd party apps (e.g. Idealo app for iPad (Germany))
Thanks in advance!
No, there is no native Chart library in iOS. There are however, plenty of libraries available. Unfortunately, you will need to dig through them to find the one closest to what you've seen.
Of course, you could also reach out to the developers of the apps you like and ask them directly. Most developers like to share information like that.
Maybe I'm just an idiot but I can't find a download for MECL anywhere.
I need to use MEC, not the SDK, because my target audience includes countries outside the US.
Additionally, according to this page iOS versions above 4.0 are not supported...is this accurate?
Thanks.
This should answer your question:
https://developer.paypal.com/webapps/developer/docs/faq/#mobile-sdk-questions