AdMob Native Ad Express Absorbs Soft Swipe Gestures

226 views
Skip to first unread message

Inho Hwang

unread,
Mar 19, 2017, 4:41:20 PM3/19/17
to Google Mobile Ads SDK Developers
AdMob Native Ad Express absorbs soft swipe gestures and is causing incredible frustrating user experience in our app.

Our app Friendsy displays the AdMob's native ad express in a swipe-able card after user swipes after 20 profile cards (this is a college dating app). When AdMob's native ad express gets displayed in our card, the card is not as swipe-able BECAUSE ADMOB NATIVE EXPRESS IS ABSORBING SOFT SWIPE GESTURES! Some of our users cannot swipe at all:

Quote from our user: "The ads that appear when I flip the cards are creating user experience problems.  When an ad is displayed, I cannot swipe it away. Before, when I reached the end of a search or the end of a list, I could see the list again or perform a new search. Essentially these ads create a dead end that piss me off. Could you let me swipe them away or click a skip button?"

Users really have to press and swipe hard to swipe the card with Native Ad Express because the native ad express is absorbing certain swipe gestures. This is very noticeable because you can compare your experience between swiping card with Native Ad Express (GADNativeExpressAdView) and our native profile card (with an UIImage, UIButtons, UILabels etc.). You have to try harder to swipe the card with AdMob's native ad express. Another issue with AdMob's native ad express is when you tap on the title, media view, or button, you cannot even hard swipe the card away. Tapping on them disables the swipe gesture all together. This isn't the default behavior of UIButton or other UIGestures. If those were UIButton you can still tap and swipe the card away. As a developer, I have no control over this gesture bugs because everything is hidden under GADNativeExpressAdView. In the server CSS, there is no way to control these gesture bugs either.

If you give me your Email address, I can add you as one of our TestFlight internal tester and let you see this bug happen. It is already happening live - AdMob native express right now serves us 50k impressions daily. (Because of this bug and auto refreshing bug https://groups.google.com/forum/#!category-topic/google-admob-ads-sdk/ios/gwx1W3R6TAo and unnecessary ellipse bug https://groups.google.com/forum/#!category-topic/google-admob-ads-sdk/ios/iuGPjmspwNU, we are prioritizing Facebook Audience Native Ad over AdMob's native ad express. When you are given access to our TestFlight that only displays AdMob native express {we mediate the version that is live now}, you would be able to see all these bugs in the link and in this thread happening.)

Joshua Lagonera (Mobile Ads SDK Team)

unread,
Mar 20, 2017, 12:11:41 AM3/20/17
to Google Mobile Ads SDK Developers
Hi Inho,

The issue you described seems to be an implementation issue.
That said, I have made this sample app with a basic Page functionality, as you have described in your implementation, and I am not able to replicate the issue you have specified as I can swipe the pages without any issue. Would you be able to verify if you can replicate the issue on your end using the linked sample app?
As also specified in our replies on your previous threads, we would need you to provide a sample code snippet and/or project with your implementation where you can replicate the issue before we are able to proceed with our investigation to check whether the issue is caused by our SDK or if it is an implementation issue. Whether or not we can replicate the issue on your application, we would still need the code implementation in order for us to investigate the root cause of the issue. 

However, do look out for a private email from me where you can send your sample code implementation for further investigation.

Regards,
Joshua Lagonera
Mobile Ads SDK Team

Inho Hwang

unread,
Mar 20, 2017, 5:20:30 PM3/20/17
to Google Mobile Ads SDK Developers
I was able to run your Sample App. The Sample App uses UIPageViewController and doesn't allow you to scroll UP or DOWN; I found out in our Friendsy App, when you try to scroll UP or DOWN there is the problem of swipe gestures being absorbed. When you scroll RIGHT and LEFT in our app, there doesn't seem to be any problem just like the Sample App. I suggest you make an Sample App that scrolls UP or DOWN.

In your sample app, pressing the button and swiping doesn't cancel the swipe gesture, which is contrary to our Friendsy App. In our Friendsy App pressing onto the title, button, or media view cancels the swiping gesture of any direction.

I created a sample code snippet from our project to share with you that allows you to see this problem and auto refreshing bug. I will Email you this soon.

Inho Hwang

unread,
Mar 20, 2017, 9:34:07 PM3/20/17
to Google Mobile Ads SDK Developers
I sent you the Email to mobileadss...@google.com. Thanks so much and looking forward to talking with you soon.
Message has been deleted
Message has been deleted

Inho Hwang

unread,
Mar 21, 2017, 8:33:11 AM3/21/17
to Google Mobile Ads SDK Developers
So Joshua has confirmed in the Email that that AdMob Native Ad Express does absorbs swipe gestures so I cannot use it directly on top of MCSwipeToChooseView object that I am using. He said we cannot make the whole card (MCSwipeToChooseView) swipe-able by putting full size AdMob native ad express on top of it by doing [MCSwipeToChooseView  addSubview: self.nativeAdExpress].

Quote: "A Native Express Ad behaves just like a normal UIWebView, and as such, is expected to absorb some gestures in order for users to tap the ads they are interested in, so they may be taken to the ad's url.The Gesture Recognizer that enables you to "swipe" each card view is located only on the MCSwipeToChooseView object (as shown here). Since you added the Native Express Ad view on the MCSwipeToChooseView object, the Gesture Recognizer does not get notified when you tap on the elements of the Native Express Ad since, as you have reported, it is being blocked...That said, I would recommend you to try adjusting your implementation to avoid the swiping issue while still making sure that the Native Express Ad is still able to be tapped by a user."

How could this be an implementation error when I cannot make the native express ad fully swip-able? AdMob native express ad should not absorb these important gestures!! Could someone assist me further so that native express ad does not absorb soft UP and DOWN gestures? I really think it shouldn't. It doesn't, for example, absorb soft RIGHT and LEFT gestures, why should it for soft UP and DOWN gestures?

On Tuesday, March 21, 2017 at 8:28:30 AM UTC-4, Inho Hwang wrote:
So Joshua has confirmed in the Email that that AdMob Native Ad Express does absorbs swipe gestures so I cannot use it directly on top of MCSwipeToChooseView object that I am using. He said we cannot make the whole card (MCSwipeToChooseView) swipe-able by putting full size AdMob native ad express on top of it by doing [MCSwipeToChooseView  addSubview: self.nativeAdExpress].

Quote: "A Native Express Ad behaves just like a normal UIWebView, and as such, is expected to absorb some gestures in order for users to tap the ads they are interested in, so they may be taken to the ad's url.The Gesture Recognizer that enables you to "swipe" each card view is located only on the MCSwipeToChooseView object (as shown here). Since you added the Native Express Ad view on the MCSwipeToChooseView object, the Gesture Recognizer does not get notified when you tap on the elements of the Native Express Ad since, as you have reported, it is being blocked."

How could this be an implementation error when I cannot make the native express ad fully swip-able? AdMob native express ad should not absorb these important gestures!! Could someone assist me further so that native express ad does not absorb soft UP and DOWN gestures? I really think it shouldn't. It doesn't, for example, absorb soft RIGHT and LEFT gestures, why should it for soft UP and DOWN gestures?


On Tuesday, March 21, 2017 at 8:23:19 AM UTC-4, Inho Hwang wrote:
So Joshua has confirmed in the Email that that AdMob Native Ad Express does absorbs swipe gestures so I cannot use it directly on top of MCSwipeToChooseView object that I am using. He said we cannot make the whole card (MCSwipeToChooseView) swipe-able by putting full size AdMob native ad express on top of it by doing [MCSwipeToChooseView  addSubview: self.nativeAdExpress].

Quote: "A Native Express Ad behaves just like a normal UIWebView, and as such, is expected to absorb some gestures in order for users to tap the ads they are interested in, so they may be taken to the ad's url.The Gesture Recognizer that enables you to "swipe" each card view is located only on the MCSwipeToChooseView object (as shown here). Since you added the Native Express Ad view on the MCSwipeToChooseView object, the Gesture Recognizer does not get notified when you tap on the elements of the Native Express Ad since, as you have reported, it is being blocked."

I still do not think this is implementation error because native express ad should not absorb these important gestures. Could someone assist me further so that native express ad does not absorb soft UP and DOWN gestures? I really think it shouldn't. It doesn't, for example, absorb soft RIGHT and LEFT gestures, why should it for soft UP and DOWN gestures?




On Monday, March 20, 2017 at 9:34:07 PM UTC-4, Inho Hwang wrote:
I sent you the Email to mobileadssdk-advisor@google.com. Thanks so much and looking forward to talking with you soon.

Joshua Lagonera (Mobile Ads SDK Team)

unread,
Mar 22, 2017, 2:34:56 AM3/22/17
to Google Mobile Ads SDK Developers
Hi Inho,

To clarify on absorbing gestures, the Native Express Ad absorbs some gestures, regardless of the direction. 
The sample app I have provided uses a different mechanism of navigation via a UIPageViewController, while your implementation uses a third party library with a custom UIView object that used its own mechanism of navigation. You may try contacting the developers of the library that you are using for additional assistance regarding this issue.

Regarding this:

Shouldn't Native ads be fully controllable - Facebook Audience Network gives raw strings that we can use to apply it to native elements like UIImage, UILabel, UIButton and etc. and so it doesn't cause this problem of native ad absorbing swipe gestures.
 
On the Native Ads being fully controllable, Native Express Ads only allow you to customize the appearance of the ad using CSS without having to change your application's code.
On the other note, the Mobile Ads SDK does provides a similar functionality using Native Advanced Ads, however, it is only currently available to a selected number of publishers.

That said, I would like to speak to our team regarding your issue and will provide any updates received on the thread.

Regards,
Joshua Lagonera
Mobile Ads SDK Team

Veer Arjun Busani(Mobile Ads SDK Team)

unread,
Mar 22, 2017, 11:46:51 AM3/22/17
to Google Mobile Ads SDK Developers
Hi Inho,

Thank you for the sample app. Diving straight into the issues - 
  • Swipe Gestures:
    • The gestures being absorbed is expected especially since this is a Native Express AdView. 
    • The UIElements that you notice, such as Button and Labels, are all rendered in HTML and it is provided in a form of UIView. 
    • But like any HTML pages, such gestures are absorbed by the SDK and there is no way around this. 
    • If you qualify for Native Advanced ads, you are free to use them as they would provide much better flexibility for such a flow as you would be controlling the element natively.
  • Auto-refresh on jiggle:
    • I was unable to reproduce this issue even after jiggling the AdView a bit. 
    • Can you send us a screen recording of this for us to try it again?
  • Overlay workaround:
    • This is absolutely not a viable workaround if you have done so. 
    • Be mindful of our policies as we expect the AdViews not to have any type of overlays when being presented.
    • You can go through our Banner best practices to learn more on this.
  • Possible workaround:
    • Add a gesture recognizer to the root view and manually change the frame of the AdView based on the transition.
    • This would work sort of like a proxy. Have a root view or some other transparent view to absorb all of the gestures and then emulate that to the AdView.
    • Always keep the AdView on top of the every other element.
    • Let me know if this works.
  • CocoaPods 1.x Support:
    • Our forum is only intended to support any Mobile Ads SDK queries but I have updated your project to get this integrated since I did not want to downgrade my pod version! 
    • I noticed that there was several issues with your Project's Build Settings and structure itself. To fix them - 
      • First update to CocoaPods 1.x.
      • In your Build Settings, mark GCC_NO_COMMON_BLOCKS to No since there are several duplicate symbols being used. One tip to fix this would only to import the .h file and not the .m file.
      • In the OTHER_LDFLAGS entry, only have $(inherited), which would inherit all of the dependencies from the Pods project and you would not have to specify anything else. If you are using SWIFT, then adding -ObjC link would also help.
      • For LIBRARY_SEARCH_PATHS, again only have $(inherited). Currently, you had a lot manual links, which doesn't play well when you have a Pods to provide dependency injection automatically.
      • In FRAMEWORK_SEARCH_PATHS, you can remove $(PROJECT_DIR)/Pods/AviarySDK/AviarySDK-4.0.1/AviarySDK as again this is injected by the Pods project.
      • In PODS_ROOT, only have ${SRCROOT}/Pods. This is important.
      • Next in Terminal pass the following commands - 
        • $ rm -rf Friendsy.xcworkspace
        • $ rm PodFile
        • $ rm -rf Pods
        • $ rm Podfile.lock
      • Basically you need to remove all of the Pod generated files.
      • Next, in your Terminal, run these commands - 
        • $ pod init
        • $ open -a Xcode PodFile
        • Then add all of your pods into your Target.
        • $ pod install
        • $ open *.xcworkspace
      • Finally, clean the project and build. 
I will be sending the updated project with CocoaPods 1.x support to you directly.

Thanks,
Arjun Busani
Mobile Ads SDK Team

Inho Hwang

unread,
Mar 22, 2017, 4:36:36 PM3/22/17
to Google Mobile Ads SDK Developers
Thank you so much for helping me out, but in terms of solving problem I am still left with AdMob native express ad view that absorbs swipe gestures and auto refreshing bug that persists. Nothing has been fixed in my end.

1) How can we Friendsy app become one of the selected publishers to use the Native Advance Ads? We want to use it. Facebook Audience Network already works similarly like Native Advance Ads from AdMob. Our placement for Facebook Audience Network is amazing you guys should check it out in the Live Friendsy app from the Apple App Store. Could you recommend us Friendsy to use the Native Advance Ads to whoever decide this because we have having issues with the Native Ad Express in our swiping-card-set-up.

2) Here is the link to the video that shows the native ad Express auto refreshing itself when I shake it. In this video I shake the card for around 1 minute and it refreshes itself 5 times when I do not explicitly call reload and with disabled autorefreshing setting. https://www.dropbox.com/sh/qu2n6h2vq8lhb9j/AABsfChMrrQZu9ONtPgI96qCa?dl=0. You can try it in the sample app that I provided to you. This auto refreshing bug used to be worse - it would refresh so often before, but i feel like you guys fixed it to a certain extent? I was only able to get it refresh 5 times in 1 minute in this video example.

3) I have no idea what you mean by overlay workaround. I did not do this. Native Ad Express is still swappable when you try a bit harder to swipe it away. I just have that right now.

4) IMPORTANT question about cocoapod. Thanks for answering cocoapod question even tho this is Mobile Ad Forum, but your direction is confusing and not complete. I completed every step that you provided, but I get the same errors that I always get when I update the cocoapods. See the attached screenshot.

It is important for use that we do not delete the Pod files tho. We have fixed bugs and improve the codes in the pod files, so we do not want to recreate these files.

5) I will try the Possible workaround now.
I sent you the Email to mobileadss...@google.com. Thanks so much and looking forward to talking with you soon.
Screen Shot 2017-03-22 at 4.32.50 PM.png

Veer Arjun Busani(Mobile Ads SDK Team)

unread,
Mar 22, 2017, 4:57:12 PM3/22/17
to Google Mobile Ads SDK Developers
Hi Inho,

The auto-refresh definitely looks like an issue. I will try to replicate it in a much smaller sample app before I can share it to the team as it helps in pinpointing the issue. I will update on issue by tomorrow. As to the swipe gesture, let me know how it pans out with the proxy relay workaround. For the CocoaPods, use the sample app that I have emailed you and see if you are able to build. If you need to modify the pods, then Fork it out to your repo and then maintain it from there. You must never edit the pods directly as it would lead to unsaved commits.

Thanks,
Arjun Busani
Mobile Ads SDK Team

Inho Hwang

unread,
Mar 22, 2017, 6:39:09 PM3/22/17
to Google Mobile Ads SDK Developers
Thanks for confirming the auto-refresh bug and, previously, swipe gestures being absorbed by the native ad express.

The proxy relay workaround is so stretchy. Putting a transparent view on top of everything and using the gesture's coordinate to move MCSwipeToChooseView and the native ad express (syncing them together!) and doing clicks onto native ad express is just too much - I would also have to edit the pod which you told me never to do..

For now, we will keep the native ad express in our swipe-able card even though some swipe gestures- especially up and down gestures -are being absorbed. When would the native ad express advance finish its beta??? Would this be soon? Could you guys accelerate this process (Facebook already has this)? How do I enroll in this beta program??? It says I should contact my manager. I can contact my CEO, but then what? Could you shed me some light how we can enroll in this beta program?

Veer Arjun Busani(Mobile Ads SDK Team)

unread,
Mar 23, 2017, 10:23:11 AM3/23/17
to Google Mobile Ads SDK Developers
Hi Inho,

You would have to contact your Technical Account Manager, if you have been assigned one by the AdMob team, to be able to request for Native Advanced. If you do not have one, you can still request it from this link. Native Advanced is still in beta mode. As to the pods, you can certainly edit them as long as you fork it out to your own repo. Finally, I will be looking into the swipe auto-refresh issue today and will update you in sometime.

Thanks,
Arjun Busani
Mobile Ads SDK Team

Veer Arjun Busani(Mobile Ads SDK Team)

unread,
Mar 23, 2017, 1:54:51 PM3/23/17
to Google Mobile Ads SDK Developers
HI Inho,

I seem to have traced the auto-refresh issue to the layer transform call from the MDCSwipeToChoose framework. It's certainly weird that the AdView is getting auto-refreshed when this is called and I have shared this with the team and we are now looking into it.


Thanks,
Arjun Busani
Mobile Ads SDK Team

Inho Hwang

unread,
Mar 23, 2017, 5:30:17 PM3/23/17
to Google Mobile Ads SDK Developers
That's very nice.

When would the native ad advance finish its beta mode and become available to public?
We don't have Technical Account Manager assigned by the AdMob team and your link leads to just AdMob Help Page. Could you clarify how we can enroll in the native ad advance beta?

Veer Arjun Busani(Mobile Ads SDK Team)

unread,
Mar 24, 2017, 10:35:37 AM3/24/17
to Google Mobile Ads SDK Developers
Hi Inho,

The auto-refresh is actually an inbuilt feature of the AdView where it would request for a new ad when there is any change to the size attribute. The layer.transform can trigger this and we suggest never to update or transform the size of the AdView once it's rendered out. As to the Native Advanced ads, I do not have any ETA on when or if this could ever happen.

Thanks,
Arjun Busani
Mobile Ads SDK Team

Reply all
Reply to author
Forward
0 new messages