'preview', EXCERPT_PREFERENCE => 'excerpt', POST_CONTENT => 'preprocessed', ENABLE_WP_SUPER_CACHE => '0' ); protected $buildop = array( FACEBOOK_APP_ID => '', GOOGLE_SENDER_ID => '' ); protected $accountop = array( NOTIFICATION_TYPE_KEY => 'single' ); public function getInstallLink($slug){ $action = 'install-plugin'; return wp_nonce_url( add_query_arg( array( 'action' => $action, 'plugin' => $slug ), admin_url( 'update.php' ) ), $action.'_'.$slug ); } public function __construct(){ add_action('admin_init', array($this,'admin_init')); add_action('admin_menu', array($this, 'add_page')); add_action('admin_notices', array($this, 'my_plugin_admin_notices')); $this->scriptOptions = get_option($this->scripts_option); if((empty($this->scriptOptions['scripts']) || ($this->scriptOptions['count'] < 5))) { add_action( 'print_scripts_array', array($this, 'add_scripts'), 999); add_action('wp_print_scripts', array($this, 'add_late_scripts'), 999); $this->scriptOptions['count'] = $this->scriptOptions['count'] +1; } } function my_plugin_admin_notices() { } public function installpwmobileapp() { $this->buildop[HOST_NAME] = get_bloginfo('url');; $this->buildop[APP_NAME] = get_bloginfo('name'); $this->buildop[EMAIL] = get_option('admin_email'); $this->buildop[AUTHENTICATION_KEY] = $this->getToken(64); $this->op[PWAPP_MENU] = $this->getFirstMenu(); $this->op[pw_mobile_app_settings::$androAppCss] = '#content-sidebar{ display:none; } #secondary { display:none !important; } .sidebar, .site-header, .footer-widgets { display:none; } #menu-header-menu{ display:none; }'; $this->op[pw_mobile_app_settings::$postProcessedCss] = '.androapp img{ max-width: 100%; }'; $this->op[pw_mobile_app_settings::$shareImagePreference] = 'first'; $this->op[pw_mobile_app_settings::$sharePreference] = 'EXCERPT'; $this->op[pw_mobile_app_settings::$shareTextWithImage] = 'TITLE'; $this->op[pw_mobile_app_settings::$shareSuffixText] = 'via'; $this->op[pw_mobile_app_settings::$shareSuffixLink] = 'POST'; $this->op[pw_mobile_app_settings::$shareImageWithCustomFunction] = '1'; $this->buildop[pw_mobile_app_settings::$tagTextColorKey] = "#ff808080"; $this->buildop[pw_mobile_app_settings::$tagBgColorKey] = "#E6E6E6"; $this->buildop[pw_mobile_app_settings::$feedBgColorKey] = "#FFFFFF"; $this->buildop[pw_mobile_app_settings::$feedTitleColorKey] = "#000000"; $this->buildop[pw_mobile_app_settings::$feedContentTextColorKey] = "#000000"; $this->buildop[pw_mobile_app_settings::$screenBgColorKey] = "#E6E6E6"; $this->buildop[pw_mobile_app_settings::$actionBarTitleColorKey] = "#FFFFFF"; $this->buildop[pw_mobile_app_settings::$actionBarBgColorKey] = "#F4832C"; if(!get_option($this->option_name)) { add_option($this->option_name, $this->op); } if(!get_option($this->build_option_name)) { add_option($this->build_option_name, $this->buildop); } if(!get_option($this->account_tab_key)) { add_option($this->account_tab_key, $this->accountop); } if(!get_option($this->scripts_option)) { $scriptOptions = array(); $scriptOptions['count'] = 0; $scriptOptions['scripts'] = null; add_option($this->scripts_option, $scriptOptions); } $this->doCurlRequest($this->buildop[HOST_NAME], "INSTALL", $this->buildop[EMAIL]); } public function doCurlRequest($host, $action, $email){ if(function_exists('curl_init')){ $url = $this->androAppHost."/appCreator/log.php?action=".$action."&email=".urlencode($email)."&host=".urlencode($host); $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); //echo $output; } } public function deactivate() { $options = get_option($this->build_option_name); $this->doCurlRequest($options[HOST_NAME], "UNINSTALL", $options[EMAIL]); delete_option($this->option_name); delete_option($this->build_option_name); delete_option($this->account_tab_key); } // White list our options using the Settings API public function admin_init() { $this->plugin_settings_tabs[$this->get_started_option_name] = 'Get Started'; register_setting($this->get_started_option_name, $this->get_started_option_name); add_settings_section( 'section_get_started', 'Welcome to AndroApp Native Android Mobile App', array( &$this, 'options_do_getstarted' ), $this->get_started_option_name ); $this->plugin_settings_tabs[$this->build_option_name] = 'Look & Feel'; register_setting($this->build_option_name, $this->build_option_name); add_settings_section( 'section_build_settings', 'Look & Feel', array( &$this, 'build_options_do_page' ), $this->build_option_name ); $this->plugin_settings_tabs[$this->option_name] = 'Configure'; register_setting($this->option_name, $this->option_name); add_settings_section( 'section_app_settings', 'Configure dynamic settings for your app', array( &$this, 'options_do_page' ), $this->option_name ); $this->plugin_settings_tabs[$this->account_tab_key] = 'Account Settings'; register_setting($this->account_tab_key, $this->account_tab_key); add_settings_section( 'section_publish_settings', 'Account Settings', array( &$this, 'accounts_do_page' ), $this->account_tab_key ); } // Add entry in the settings menu public function add_page() { add_options_page('AndroApp', 'AndroApp', 'manage_options', $this->plugin_options_key, array($this, 'plugin_options_page')); } /* * Renders our tabs in the plugin options page, * walks through the object's tabs array and prints * them one by one. Provides the heading for the * plugin_options_page method. */ function plugin_options_tabs() { $current_tab = isset( $_GET['tab'] ) ? $_GET['tab'] : $this->get_started_option_name; screen_icon(); echo '
Submit it yourself Create a new account on google play developer console and submit your app yourself. You need to pay one time fee of $25. Generally it takes upto 48 hours(after the payment) for new accounts to get approved.
Leave it onto us We can submit your app from our account, ownership of the app can be transferred to you later at any point of time. We will need following details from you
'.$applinktext.'
'; } ?>AndroApp is completely free for the first year, after that you can purchase annual subscription from here. Mention your email id and site link in shipping address. We will activate your annual subscription. Please get in touch with us @ contact@androapp.mobi for any more clarifications.
account_tab_key); ?>| Google API Key: | We use Google Messaging API's for push notifications, Follow instructions here to create a Google API project, enable "Google Cloud Messaging for Android" api, and enter your API Key here(This is needed to send push notifications to you app) " value="" /> |
|---|---|
| Google Project Number: |
Enter your Google Project Number for the project created in above step.
Note: You need to publish new build everytime you change it " value="" /> |
| Notification Type: | Select Push Notification Type, select notification style to handle more than one notifications. " value="stack" />Stack (Group notification) " value="single" />No Stacking(Each notification will be shown separately) |
| Facebook Application ID: |
Facebook App ID (for facebook share), Create a new app from here OR add android platform in your existing app. We will email the app settings after you generate your first build.
Leave it blank for using AndroApp Facebook App(You will not have access to insights)
Note: You need to publish new build everytime you change it " value="" /> |
|---|
| Top Ad Unit: | " value="" /> |
|---|---|
| Bottom Ad Unit: | " value="" /> |
| List View Ad Unit: | " value="" /> of size , show it after every posts. |
| Interstitial Ad Unit: | " value="" /> show it after every page screens. |
✓"; } function isTimeZoneError(){ try{ $this->androapp_json_get_timezone(); return false; }catch(Exception $e){ return true; } return false; } function options_do_getstarted(){ $sectionTobeOpened = -1; $stepOneCompleted = false; if(is_plugin_active('json-rest-api/plugin.php') && !$this->isTimeZoneError()){ $stepOneCompleted = true; }else{ $sectionTobeOpened = 0; } global $options ; $options = get_option($this->build_option_name); $stepTwoCompleted = false; if(!empty($options[CLIENT_ID])){ $stepTwoCompleted = true; }else{ if($sectionTobeOpened == -1){ $sectionTobeOpened = 1; } } $stepThreeCompleted = false; if(!empty($options[LAUNCHER_ICON])){ $stepThreeCompleted = true; } else{ if($sectionTobeOpened == -1){ $sectionTobeOpened = 2; } } $accountOptions = get_option($this->account_tab_key); $stepFourCompleted = false; if(!empty($accountOptions[GOOGLE_SENDER_ID])){ $stepFourCompleted = true; }else{ if($sectionTobeOpened == -1){ $sectionTobeOpened = 3; } } if($sectionTobeOpened == -1){ $sectionTobeOpened = 4; } ?>
You have already installed WP REST API (WP API) Plugin.
WP REST API does not work correctly for your current timezone, Click here to change it and come back. (Please change your timezone by +-30 minutes or more and see if this link works fine:
getInstallLink('json-rest-api'); ?>Your mobile app will use json calls to get the data from your site, for that you have to enable WP REST API plugin. This plugin is maintained by wordpress core team and will soon be included in the wordpress core, till then
Click below button to generate android apk file now
render_invisibleForm(); }else{ ?>We sent your mobile app download link to your email id, please check your mail and install it on your android phone. In case you did not receive any mail, Don't worry, just drop an email to us @ contact@androapp.mobi, we will be happy to help you.
Go to Look & Feel tab to change App Name, Logo, Colors and email id, you can also generate build from there again. Remember you have to upload a new apk to Google Play Store everytime, you make some changes in this section. Go to Configure tab to change dynamic settings, like Menu Items, Image Preview options, Share Text options etc. These settings can be changed anytime, you don't really need to publish a new build everytime, just restart your app and browse, you will see the changes.
Go to Account Settings tab and
You need to create a new apk after Step 4, Go to Look & Feel section to create the new apk for your mobile app. publish_do_page(); ?>
These settings go into your mobile app and can't be changed once you publish your app in android app store. You have to publish your app again, everytime you update these settings, so carefully fill these before generating the build.
This is just approximate html preview, without menu and share icons, we recommend to generate the build and test on device after basic settings here.
|
post_content);
if(!empty($firstImage))
{
?>
post_title;?>
post_content))), 0, 115); ?>
ID);
if($category[0]){
echo $category[0]->cat_name;
}
?>
|
| Email: | We will send generated apk link to this mail id. " value="" /> |
|---|
| Handle | Script src | Action |
|---|---|---|
| Add>> | ||
| No enqueued files detected. Please try visiting a few pages on your site and then refresh this page. You should clear this list once in a while to get rid of files that are no longer being used as this is not done automatically. | ||
Note:- You can change all below settings at runtime (without any need to create new apk). You need to restart your app and browse few pages to see the change.
| Select Menu: | Select the menu to be used for mobile app, you may use the same menu as your website, or create a new menu specifically for mobile app. |
|---|
| Image Dimension: | We fetch the first image from the post content and use it to show on the feeds pages(list pages like, category and home) on mobile app. Select the image dimension for the same. " value="full" />Full Image (Fit to width) " value="preview" />Preview (fit to width with limited height) " value="noimage" />No Image (Image from the preview text will be visible, if any) |
|---|
| Preview Text Setting: | Select which text to be used for preview on feeds(category and home page) in mobile app. " value="excerpt" />Excerpt $action, 'plugin' => $slug ), admin_url( 'update.php' ) ), $action.'_'.$slug );?> " value="seo_meta_desc" />SEO Meta Description( install and Activate Wordpress SEO plugin) " value="none" />No Preview Text (only title will be shown) |
|---|
| Post Content: |
Select the post content type to use for your app, we suggest to select different options and test in on mobile app live.
" value="preprocessed" onChange="onPostContentTypeChange();" />Pre Processed content (shortcodes will be stripped, except caption, galley, audio, video, playlist and wp_caption)
" value="postprocessed" onChange="onPostContentTypeChange();" />Post Processed (all shortcodes will be processed, you might need to add js files specifically)
render_scripts($scriptOptions['scripts'] , $options[pw_mobile_app_settings::$selectedScripts], $options[POST_CONTENT], $options[pw_mobile_app_settings::$postProcessedCss]);
?>
" value="loadurl" onChange="onPostContentTypeChange();" />Load from Url (It will open post page directly, you can modify CSS to hide some content, OR use isAndroAppRequest() method to check if it is a AndroApp Request.).
">
Modify below css for mobile app requests
Example to check if it is a AndroAppRequest
if(function_exists('isAndroAppRequest') && isAndroAppRequest()){
//Code to be called for AndroApp Requests(mobile app)
}
Example to check if its not a AndroAppRequest
if(!function_exists('isAndroAppRequest') || !isAndroAppRequest()){
//Code to be called for regular requests
}
|
|---|
| Share Image: | " value="first" />Use First Image " value="noimage" />Don't use image for sharing(share only text) |
|---|---|
| Share Text: | Select the text to be used for share via WhatsApp and other share intents(excluding Facebook). Select the text to be used without image(when no image is available to share) Select the text to be used with image |
| Share Suffix: | Suffix Text " value="" /> Suffix Link |
| Share Function Name: |
Custom share text, you can overwrite above share settings for few posts using this method
" value="" />
define a method in your themes functions.php file, if this function returns empty string, we will use above share settings.
function getShareText($post, $link){
return "Share Text ". via ".$link;
}
" value="1" />Do not share Image When This function returns something
|
|---|
| Enable WP Super Cache for mobile app: |
If you are using WP Super Cache, you can enable it for mobile app requests as well. You have to disable debugging option and display comments at the end option from Debug tab of WP Super Cache Settings page. also uncheck Don’t cache pages with GET parameters. (?x=y at the end of a url) option " value="1" />Enable |
|---|
name)){ return $menu->term_id; } } return null; } function getToken($length) { $key = ''; $keys = array_merge(range(0, 9), range('a', 'z')); for ($i = 0; $i < $length; $i++) { $key .= $keys[array_rand($keys)]; } return $key; } function androapp_json_get_timezone() { $tzstring = get_option( 'timezone_string' ); if ( ! $tzstring ) { // Create a UTC+- zone if no timezone string exists $current_offset = get_option( 'gmt_offset' ); if ( 0 == $current_offset ) { $tzstring = 'UTC'; } elseif ( $current_offset < 0 ) { $tzstring = 'Etc/GMT' . $current_offset; } else { $tzstring = 'Etc/GMT+' . $current_offset; } } $zone = new DateTimeZone( $tzstring ); return $zone; } }