FEATURE: Native app banner improvements

This commit adds some improvements to native app banners for iOS and Android

- iOS and Android now have separate settings for native app banners

- app banners will now only show for users on TL1 and up

- app ids are now in a hidden site setting to allow sites to switch to their own app, if desired

- iOS only: the site URL is passed to the app arguments
This commit is contained in:
Penar Musaraj 2019-04-17 12:25:13 -04:00
parent 14f9d40e48
commit 7cd621778d
6 changed files with 43 additions and 7 deletions

View File

@ -51,13 +51,13 @@ class MetadataController < ApplicationController
manifest[:short_name] = SiteSetting.short_title if SiteSetting.short_title.present?
if SiteSetting.native_app_install_banner
if current_user && current_user.trust_level >= 1 && SiteSetting.native_app_install_banner_android
manifest = manifest.merge(
prefer_related_applications: true,
related_applications: [
{
platform: "play",
id: "com.discourse"
id: SiteSetting.android_app_id
}
]
)

View File

@ -325,6 +325,10 @@ module ApplicationHelper
request.env[ApplicationController::NO_CUSTOM]
end
def include_ios_native_app_banner?
current_user && current_user.trust_level >= 1 && SiteSetting.native_app_install_banner_ios
end
def allow_plugins?
!request.env[ApplicationController::NO_PLUGINS]
end

View File

@ -46,8 +46,8 @@
<%= render_google_universal_analytics_code %>
<link rel="manifest" href="<%= Discourse.base_uri %>/manifest.webmanifest" crossorigin="use-credentials">
<%- if SiteSetting.native_app_install_banner? %>
<meta name="apple-itunes-app" content="app-id=1173672076">
<%- if include_ios_native_app_banner? %>
<meta name="apple-itunes-app" content="app-id=<%= SiteSetting.ios_app_id %>, app-argument=discourse://new?siteUrl=<%= Discourse.base_url %>">
<%- end %>
<%= render partial: "common/discourse_stylesheet" %>

View File

@ -1892,7 +1892,9 @@ en:
topic_page_title_includes_category: "Topic page title includes the category name."
native_app_install_banner: "Asks recurring visitors to install Discourse native app."
native_app_install_banner_ios: "Displays DiscourseHub app banner on iOS devices to regular users (trust level 1 and up)."
native_app_install_banner_android: "Displays DiscourseHub app banner on Android devices to regular users (trust level 1 and up)."
share_anonymized_statistics: "Share anonymized usage statistics."

View File

@ -1826,7 +1826,17 @@ uncategorized:
default: true
client: true
native_app_install_banner: false
native_app_install_banner_ios: false
native_app_install_banner_android: false
ios_app_id:
default: "1173672076"
hidden: true
android_app_id:
default: "com.discourse"
hidden: true
pwa_display_browser_regex:
default: "iPad|iPhone"
@ -1913,7 +1923,7 @@ user_preferences:
- normal
- larger
- largest
default_title_count_mode:
type: enum
default: notifications

View File

@ -0,0 +1,20 @@
class MigrateNativeAppBannerSiteSetting < ActiveRecord::Migration[5.2]
def up
execute "INSERT INTO site_settings(name, data_type, value, created_at, updated_at)
SELECT 'native_app_install_banner_android', 5, value, now(), now()
FROM site_settings
WHERE name = 'native_app_install_banner'"
execute "UPDATE site_settings
SET name = 'native_app_install_banner_ios'
WHERE name = 'native_app_install_banner'"
end
def down
execute "UPDATE site_settings
SET name = 'native_app_install_banner'
WHERE name = 'native_app_install_banner_ios'"
execute "DELETE FROM site_settings WHERE name = 'native_app_install_banner_android'"
end
end