Google Play Store Policy on WebView and Admob - google-play

In my app, I am showing list of websites and on click of each item I will show the particular website with in my app (Detail page). I would like to know is there any problem to show a banner ad (AdMob) in the Detail Page, like Intellectual property violation...etc
In short I would like to avoid app rejection from my Google play store account.
Attaching the XML of my Details Page.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ProgressBar
android:id="#+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="3dp"
android:layout_alignParentTop="true"
android:layout_centerVertical="true"
android:indeterminate="true"
android:indeterminateTint="#color/tab_checked"
android:max="100"
android:progress="50"
android:visibility="visible" />
<WebView
android:id="#+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="#+id/cv_main"
android:layout_below="#+id/progressBar"
android:layout_weight="1">
</WebView>
<com.google.android.gms.ads.AdView
android:id="#+id/adView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_gravity="center"
android:orientation="vertical"
android:visibility="visible">
</com.google.android.gms.ads.AdView>
</RelativeLayout>

Make sure that the banner does not appear over the content but in a sperate place, Ad overlapping with app content (against policy)
You should show in very clear way that you are showing websites that you do not own in this area (Detail page) to avoid Impersonation (unless you own these websites)
Also consider that the owners of these websites could report you to Google and ask for your app to be remove. as mentioned here
We don’t allow apps whose primary purpose is to drive affiliate traffic to a website or provide a webview of a website without permission from the website owner or administrator.
Make sure that your app have other functionality more than opening webpages.
Apps whose primary purpose is to provide a webview of a website without permission:
Also if your app designed for families you cant do this even if you own the app
App functionality: Your app must not merely provide a webview of a website or have a primary purpose of driving affiliate traffic to a website, regardless of ownership of the website.
My recommendation: is not use banner in this case, even though you could do it in a way that does not violate any guideline, your app could be rejected many times and receive violation warnings.

Related

Refused to connect in Outlook Web add-in when trying to load any web page url

I am working on Outlook web add-in demo to show my demo add-in option inside the Outlook.
So will have a website portal that will work in any browsers.My add-in demo project is running fine and add-in name is appearing in Outlook. Now I need to load same website portal inside the web add-in in the whole web add-in window.
I have added the url in manifest file inside the Sourcelocation still is appearing like "Refused to connect" in task pane.
Could anyone assist me to do the same? How can i do that.
I am adding here my manifest, html file and taskpane screenshot.
You need to add your URL to the AppDomain element in your manifest for it to appear in your add-in pane:
The following XML manifest example hosts its main add-in page in the https://www.contoso.com domain as specified in the SourceLocation element. It also specifies the https://www.northwindtraders.com domain in an AppDomain element within the AppDomains element list. If the add-in goes to a page in the www.northwindtraders.com domain, that page opens in the add-in pane, even in Office desktop.
<?xml version="1.0" encoding="UTF-8"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="TaskPaneApp">
<!--IMPORTANT! Id must be unique for each add-in. If you copy this manifest ensure that you change this id to your own GUID. -->
<Id>c6890c26-5bbb-40ed-a321-37f07909a2f0</Id>
<Version>1.0</Version>
<ProviderName>Contoso, Ltd</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<DisplayName DefaultValue="Northwind Traders Excel" />
<Description DefaultValue="Search Northwind Traders data from Excel"/>
<SupportUrl DefaultValue="[Insert the URL of a page that provides support information for the app]" />
<AppDomains>
<AppDomain>https://www.northwindtraders.com</AppDomain>
</AppDomains>
<DefaultSettings>
<SourceLocation DefaultValue="https://www.contoso.com/search_app/Default.aspx" />
</DefaultSettings>
<Permissions>ReadWriteDocument</Permissions>
</OfficeApp>
This link should help with more information:
https://learn.microsoft.com/en-us/office/dev/add-ins/develop/add-in-manifests?tabs=tabid-1#specify-domains-you-want-to-open-in-the-add-in-window

how to display TabBar on all shell child pages in single page app

I want to create a single page application using Shell where each page contains a titlebar that looks like [Back] [Title] [Settings].
If I have this sequence of pages [Login] -> [Home] -> [Settings] I want when I navigate between them to see the same titlebar on each.
I have a ControlTemplate setup for the titlebar and I add it to each of the xaml pages like this: =
<Shell.TitleView>
<TemplatedView ControlTemplate="{StaticResource TopBar}" />
</Shell.TitleView>
I have the Login and Home pages registerd as routes in the Shell constructor.
public AppShell()
{
InitializeComponent();
Routing.RegisterRoute(nameof(MainPage), typeof(MainPage));
Routing.RegisterRoute(nameof(SettingsPage), typeof(SettingsPage));
}
In the Shell.xaml I have the login page registered like this: -
<TabBar>
<Tab>
<ShellContent ContentTemplate="{DataTemplate views:LoginPage}" Route="LoginPage" />
</Tab>
</TabBar>
When I run the app the TitleView is displayed on the login page. I then click the button to login and I'm taken to the home page but the TitleView is missing. If navigate to the Settings page by clicking on the TitleView icon it is also missing.
Both settings page and Home page have Shell.TabBarIsVisible="True" set.
I'm navigating like this from Commands
await Shell.Current.GoToAsync($"{nameof(Views.SettingsPage)}");
Can someone tell me if this is possible and if so what I'm doing wrong please?
Thanks
Answer is don't add Shell.PresentationMode="ModalAnimated" by mistake to pages you are navigating to. Doh!

Url format for App Store and Google Play to install app with deep link

Prerequesits:
I've already implemented deep linking and universal linking, everything works great.
Here is what I need:
I'm sharing with you a url that looks like that:
https://play.google.com/store/apps/details?id=com.foo.bar&invite=asdf
You open this link on your Android device, navigate to the Google Play listing. Tapping "Install".
Now, I want the app to do the same thing, like if i would open installed app with this link
myfoobar://?invite=asdf
I also need the same for App Store.
Could you show me how do I format App Store/ Google Play url to achieve this?
I think this should fulfill your needs: https://firebase.google.com/docs/dynamic-links.
It also goes further and honors the initial deep link after the app is installed.
What I did in a previous app is to catch custom URIs, start a specific router activity which will redirect to the right URL depending on the caught URI.
Code is note the most important, you need to understand the idea.
You can't directly setup a magic logic that will allows you to link a custom URI to a custom URL. What you CAN do, is to make your app react to a specific/custom URI (myfoobar://) that will launch a specific and dedicated activity / view controller that will itself redirect to the URL of your choice.
For instance, on Android side:
<activity
android:name="com.example.android.RouterActivity"
android:label="#string/title_gizmos" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with "example://gizmos” -->
<data android:scheme="myfoobar"
android:host="whatever" />
</intent-filter>
</activity>
And then, in your RouterActivity, launch your URL.
More information here
On iOS side, same idea, but instead you need to register your custom URI in your info.plist.
More information here and also here.
I hope it helped you. That is how I did in previous apps and it works like a charm.

Add element to Hub header

the hub design is builded in MSN's app, like sport, new, weather.
I want to use that, too.
I study textbook and found that tutorial.
but that only teach add header to hub
<Hub Header="this header"> </Hub>
not include element
in msn app, it has search icon in header.
How to do that?
Hub class has a content presenter in itself and can present HubSection which you can find detailed MSDN page by clicking here
I don't know which MSN app you are mentioning , but if you want to search icon in your Headers you must modify HeaderTemplate to achieve that.
<Hub Header="Text Your Header">
<Hub.HeaderTemplate>
<DataTemplate>
<!-- Put you element here -->
<!-- Below is example -->
<ListBox>
<ListBoxItem>No.1 </ListBoxItem>
<ListBoxItem>No.2 </ListBoxItem>
</ListBox>
</DataTemplate>
</Hub.HeaderTemplate>
</Hub>

How to override the event handlers of built-in controls and its visibility in VSTO Outlook addin 2010

I have created a custom group with a toggle button in built-in 'TabAppointment' tab, where clicking on the button will open a new winform.
Only after proceeding with that form, 'Save&Close' button should be enabled in the appointment screen.
But iam not able to disbale the built-in controls, i have tried as like below
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
<ribbon>
<tabs>
<tab idMso="TabAppointment">
<group idMso ="GroupActions">
<button idMso="SaveAndClose" getEnabled="GetEnabled"/>
</group>
<group id="GroupRBS" insertBeforeMso="GroupActions" label="RBS">
<toggleButton id="btnBookRoom" label ="Add Room" supertip ="Room booking option for an appointment" imageMso="AddRoom" onAction="CallRBS" size="large" getEnabled="GetEnabled" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
I have created 'GetEnabled' callback method in ribbon class, but it is firing only for custom group controls, cant we override builtin control attributes?
Iam able to hide builtin groups, but not able to hide a particular builtin control inside the builtin group, is there any way to do this?
Pls help me for getting ny solution
Unfortunately, you can not change the Enabled state on built-in ribbon buttons. Only on the Custom ribbon buttons you add yourself.
But there are a couple solutions you could try:
Display your WinForm dialog modally to ensure the user has to complete it before they can carry on
Handle the Microsoft.Office.Interop.Outlook.AppointmentItemClass.Write event. The ItemEvents_10_WriteEventHandler has a ref Cancel parameter which you can set to true to stop the Appointment being saved.
((ItemEvents_10_Event)appointmentItem).Write += AppointmentItem_Write;

Resources