Re: Yes, I'm venting. Current monetization with Flutter is atrocious.

757 views
Skip to first unread message
Message has been deleted

Gregg Reynolds

unread,
Jul 26, 2018, 7:02:54 PM7/26/18
to Luke Pighetti, Flutter Dev
There's a reason they call it "beta", dude. Hang in there, you'll win in the end.

On Thu, Jul 26, 2018, 5:55 PM Luke Pighetti <lukepi...@gmail.com> wrote:
I just spend about 200 hours working on a mobile app built entirely in Flutter. As I approach the end of the project it is time to monetize. Flutter team has not provided any meaningful ways to recoup the investment I have made in learning Flutter and building an app with it.

My app was designed for a renewable subscription using in-app purchases. I found three packages that handle IAP. None of them handle subscriptions except one, which is poorly documented and has no support and it seemingly broken.

Breaking my business model, I decided to go for second best and use AdMob with one-time IAP. So I installed AdMob, however, snackbars appear under the AdMob banner and cannot be moved. If I pad my scaffold you get black bars on the left and right which is incorrect on iOS. There's no way to detect the size and status of the banner to be able to write your own solutions.

So here I am, finishing up a considerable time investment ready to monetize and I have no acceptable options to do so.

To make matters worse, I look up "react-native IAP" and I see, predictably, multiple packages with well abstracted renewable subscription IAP purchasing. You see, I started with React and spent time with React Native and Flutter, and decided to give Flutter a chance because I believe it is better technology. But it's really depressing to find out, at the end of the day, I would have had a chance at recouping my investment if I had not used Flutter.

I have brought this up to other Flutter devs and the general consensus seems to be that monetization is low priority. I simply cannot agree. I don't know what Google's motive is with Flutter, but if that motive is served by having adoption of Flutter, these devs need to pay for their time. And in order to pay for that time, they need to monetize their apps. It's as simple as that. Monetization should be THE top priority.

Yes, I'm venting.

Kindest regards,
Luke Pighetti

--
You received this message because you are subscribed to the Google Groups "Flutter Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flutter-dev...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Luke Pighetti

unread,
Jul 26, 2018, 7:09:54 PM7/26/18
to Flutter Dev
Don't mind me, just frustrated after a few days of no forward movement. 

Cheers
Luke

Gregg Reynolds

unread,
Jul 26, 2018, 7:11:38 PM7/26/18
to Luke Pighetti, Flutter Dev


On Thu, Jul 26, 2018, 6:09 PM Luke Pighetti <lukepi...@gmail.com> wrote:
Don't mind me, just frustrated after a few days of no forward movement. 

Hahaha!  Been there done that! No worries!

Cheers
Luke

Ryan Gonzalez

unread,
Jul 26, 2018, 7:35:46 PM7/26/18
to Luke Pighetti, Flutter Dev

On July 26, 2018 5:55:19 PM Luke Pighetti <lukepi...@gmail.com> wrote:

> I just spend about 200 hours working on a mobile app built entirely in
> Flutter. As I approach the end of the project it is time to monetize.
> Flutter team has not provided any meaningful ways to recoup the investment
> I have made in learning Flutter and building an app with it.
>
> My app was designed for a renewable subscription using in-app purchases. I
> found three packages that handle IAP. None of them handle subscriptions
> except one, which is poorly documented and has no support and it seemingly
> broken.
>
> Breaking my business model, I decided to go for second best and use AdMob
> with one-time IAP. So I installed AdMob, however, snackbars appear under
> the AdMob banner and cannot be moved. If I pad my scaffold you get black
> bars on the left and right which is incorrect on iOS. There's no way to
> detect the size and status of the banner to be able to write your own
> solutions.

Hmm, this is a bit odd...

How exactly are you using Admob? You *should* be able to query the length and pass it from native code into Flutter.

If you're sure you're only padding the sides of the scaffold, then the black bars sound like a bug?


>
> So here I am, finishing up a considerable time investment ready to monetize
> and I have no acceptable options to do so.
>
> To make matters worse, I look up "react-native IAP" and I see, predictably,
> multiple packages with well abstracted renewable subscription IAP
> purchasing. You see, I started with React and spent time with React Native
> and Flutter, and decided to give Flutter a chance because I believe it is
> better technology. But it's really depressing to find out, at the end of
> the day, I would have had a chance at recouping my investment if I had not
> used Flutter.
>
> I have brought this up to other Flutter devs and the general consensus
> seems to be that monetization is low priority. I simply cannot agree. I
> don't know what Google's motive is with Flutter, but if that motive is
> served by having adoption of Flutter, these devs need to pay for their
> time. And in order to pay for that time, they need to monetize their apps.
> It's as simple as that. Monetization should be THE top priority.
>
> Yes, I'm venting.
>
> Kindest regards,
> Luke Pighetti
>

Luke Pighetti

unread,
Jul 26, 2018, 8:12:33 PM7/26/18
to Flutter Dev
Haha yep, I got to the keyboard before I got to dinner. 😂 Sorry for the adult tantrum.

Luke Pighetti

unread,
Jul 26, 2018, 8:14:19 PM7/26/18
to Flutter Dev
Hey Ryan,

There is a height property but it resets if you follow a link and navigate back. Also, I haven't found a reliable way to tell if it's being displayed or not. I tried wrapping the events and building my own stream to make this data available to me but had no luck.

Also, I am padding the bottom of the scaffold, which show black behind it. 

Cheers

Andrew Brogdon

unread,
Jul 27, 2018, 11:53:25 AM7/27/18
to Luke Pighetti, Flutter Dev
Hi, Luke. I'm Andrew, one of the engineers on the developer relations team for Flutter. I used to work on the developer relations team for AdMob, so I'm happy to try and help here.

The first thing I would suggest is that you take a look at the interstitial ad format. They're full-screen ads that you show occasionally while the user is using your app (typically after they finish an action). Because they cover the entire screen, there's no issue about working them into the widget tree, which sidesteps this entire problem. They also typically (though not always) generate higher CPMs. 

You're correct that it's not always possible to determine the height and width of an AdMob banner once it's displayed, though it should be possible to consistently predict it, if that makes sense. If you always request a 320x50 ad, you should consistently get an ad of the same size in the same position. You could conceivably wrap your Scaffold in a Padding widget (as you've tried), and then wrap the Padding widget with a Container that has whatever background color you need to eliminate the black padding on the edges. 

The root of this issue is that the Mobile Ads SDKs for Android and iOS must use native views for a number of reasons (security, privacy, and fraud prevention among them), and the integration of native views into the Flutter widget hierarchy isn't a solved problem. It's being worked on, though, and I am hopeful we'll have a better developer story here in the near future.

-Andrew

--

Purusothaman Ramanujam

unread,
Mar 18, 2019, 2:06:06 PM3/18/19
to Flutter Dev
Hi Team,

Flutter now supports native views.. Admob widgets are the most requested feature in the GitHub and I request the team to show some love to this package.

Andrew Brogdon

unread,
Mar 18, 2019, 2:37:55 PM3/18/19
to Purusothaman Ramanujam, Flutter Dev
The decision not to integrate Platform Views into the AdMob plugin is a deliberate one, rather than anything to do with prioritization.

Because Flutter's AndroidView and UiKitView rely on low-level manipulation of platform UI components, it's almost guaranteed that they will interact with the Mobile Ads SDK in ways the mobile ads engineering team have not anticipated and do not test for. Even if the approach looks like it's working right now, it's likely to run into issues with MRAID functionality, JS code included in the creatives, and impression and click measurement. The last of those is particularly important, since abnormalities in impression and click stats can result in suspension of accounts.

For those reasons, I strongly recommend anyone looking to monetize a Flutter app with mobile ads to use the official firebase_admob plugin (rather than an alternative, native view-based approach) and either use full-screen formats like interstitials and rewarded video or fixed-position banners.

-Andrew

R.Purushothaman

unread,
Mar 18, 2019, 3:03:46 PM3/18/19
to Andrew Brogdon, Flutter Dev
As you have suggested I have used the official firebase_admob plugin. But it has lot of issues.

1) Banners overlay the FAB.(workaround already available)
2) Overlay if banners with drawer.

# 2 is a major problems when using banners. If this is fixed, I am sure it's quite enough. 

Thanks,

Purusothaman Ramanujam

Andrew Brogdon

unread,
Mar 18, 2019, 3:42:36 PM3/18/19
to R.Purushothaman, Flutter Dev
Your concerns are valid. Because the plugin overlays its banner ads on top of the Flutter viewport, this can cause it to cover up parts of the UI.

One solution to the drawer and FAB issue you mentioned is to leave space for the ad when creating your scaffold:

import 'package:flutter/material.dart';

void main() {
  final bannerHeight = 50.0;

  runApp(MaterialApp(
    home: LayoutBuilder(
      builder: (context, constraints) {
        return Column(
          children: [
            SizedBox(
              height: constraints.maxHeight - bannerHeight,
              child: Scaffold(
                drawer: Drawer(
                  child: Center(
                    child: Text('This is the drawer'),
                  ),
                ),
                appBar: AppBar(
                  title: Text('App Title'),
                ),
                body: Center(
                  child: Text('This is the content'),
                ),
                floatingActionButton: FloatingActionButton(
                  child: Icon(Icons.add),
                ),
              ),
            ),
            SizedBox(height: bannerHeight),
          ],
        );
      },
    ),
  ));
}

This is just an example, of course, but hopefully it illustrates the idea.

-Andrew

David Vella

unread,
Apr 28, 2019, 3:13:38 PM4/28/19
to Flutter Dev
Hi,

I have a small mobile game I wrote in Flutter (5 MB APK). I just added admob banner ad and the APK size grew to almost 8 megabytes. Is this normal?

Thanks

David
To unsubscribe from this group and stop receiving emails from it, send an email to flutt...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages