Android Kotlin WebView Tutorial

by Muhammad Siddiqur Rahman . Updated: October 17, 2020 at 11:04 am

In this tutorial we will learn how to crate a WebView in Android application using Kotlin.

In this article we will work on few Android Webview Example projects.

We will know the best practice of different types of Android Webview Settings. How android webview browser load html from assets folder.

How to Create Splash Screen Using Kotlin in Android Studio

by Muhammad Siddiqur Rahman . Updated: September 24, 2020 at 11:37 am

In this tutorial I will discuss about how to create splash screen using Kotlin in Android Studio.

First of all we need to create a new project in android studio.

How to create a new project in Android Studio?

  • Click on to Start a new Android Studio project.
  • Select a Project Template: Click Empty Activity.
  • Enter the Project name: Android Splash Screen
  • Enter the Package name : com.rockscoder.splashscreen
  • Change Project save location if needed.
  • Select Language as Kotlin from the dropdown.
  • You may change the Minimum SDK version if you wish.
  • Then click finish to create the project.

After clicking the finish button it may take few minutes to build the gridle dependency for the first time.

When all the background work is done your project will be ok for the next step.

Best Laravel Packages for Development

by Muhammad Siddiqur Rahman . Updated: September 27, 2020 at 1:00 pm

List of best Laravel packages

  1. Faker is a PHP library that generates fake data for you. 

    https://github.com/fzaninotto/faker

  2. Faker Provider Collection

    https://github.com/mbezhanov/faker-provider-collection

  3. Module Management In Laravel

    https://github.com/nWidart/laravel-modules

  4. Laravel Debugbar (Integrates PHP Debug Bar)

    https://github.com/barryvdh/laravel-debugbar

  5. A PHP library for generating universally unique identifiers (UUIDs).

    https://github.com/ramsey/uuid

Create Navigation Drawer In Flutter

by Muhammad Siddiqur Rahman . Updated: August 15, 2020 at 4:15 pm

Navigation Drawer is a very essential user interface (UI) of any mobile application. It consists of main navigation menu from which app’s features can be surfed. It appears when the user tap on the drawer icon or slide the screen from left edge to right.

In the tutorial, we are going to create a navigation bar using flutter. As compared to native Android or iOS apps, we will have to write very minimal code and all the heavy lifting regarding it will be done by our flutter framework.

At first, Let’s create a new flutter project in Android Studio by navigating to File => New => New Flutter Project.

Once the project is created. We will have default flutter code in the main.dart file. We will remove all the default generated code and write everything from scratch.

I have divided this blog post in just two easy steps for better understanding as:

  1. Drawer Class
  2. Create a list of items (navigation menu) by using ListView widget

1. Drawer Class

Drawer Class in flutter is a material design panel that slides in horizontally from the left edge. This class is used with Scaffold.drawer property and the child of the drawer is generally a listview widget.

2. Create a list of items (menu items) by using ListView widget

Now we will create a list of items inside the Drawer class that will be used as a navigation drawer items as:

ListView(
                children: <Widget>[
                  UserAccountsDrawerHeader(
                    accountName: Text('Coding Ninja'),
                    accountEmail: Text('ninja@codingninja.info'),
                    currentAccountPicture: CircleAvatar(
                        backgroundColor: Colors.deepPurple, 
                        child: Text("C")),
                  ),
                  ListTile(
                    leading: Icon(Icons.home),
                    title: Text('Home'),
                    onTap: () {
                      //add routes to navigate
                      showSnackBar(context, "Home");
                    },
                  ),
                  ListTile(
                    leading: Icon(Icons.local_laundry_service),
                    title: Text('Services'),
                    onTap: () {
                      //add routes to navigate
                      showSnackBar(context, "Services");
                    },
                  ),
                  Divider(
                    color: Colors.black87,
                  ),
                  ListTile(
                    leading: Icon(Icons.settings),
                    title: Text('Settings'),
                    onTap: () {
                      //add routes to navigate
                      showSnackBar(context, "Settings");
                    },
                  ),
                  ListTile(
                    leading: Icon(Icons.report_problem),
                    title: Text('Report Problem'),
                    onTap: () {
                      //add routes to navigate
                      showSnackBar(context, "Report Problem");
                    },
                  ),
                ],
              )

We have already read in our previous articles of creating listview as static and long dynamic lists. The only thing new here is the UserAccountsDrawerHeader Section.

UserAccountsDrawerHeader(
                    accountName: Text('Coding Ninja'),
                    accountEmail: Text('ninja@codingninja.info'),
                    currentAccountPicture: CircleAvatar(
                        backgroundColor: Colors.deepPurple, 
                        child: Text("C")),
                  ),

This property is provided by the Drawer Class. It will create the User info section or head section of the navigation drawer with user avatar/image.

At last, our main.dart file will have the following code:

main.dart

import 'package:flutter/material.dart';

void main() => runApp(NavigationDrawerDemo());

class NavigationDrawerDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "Navigation Drawer Demo",

      //Hide Debug Mode Banner
      debugShowCheckedModeBanner: false,

      home: Scaffold(
        appBar: AppBar(title: Text('Navigation Drawer Demo')),
        drawer: Builder(
          builder: (BuildContext context) {
            return Drawer(
              child: ListView(
                children: <Widget>[
                  UserAccountsDrawerHeader(
                    accountName: Text('Coding Ninja'),
                    accountEmail: Text('ninja@codingninja.info'),
                    currentAccountPicture: CircleAvatar(
                        backgroundColor: Colors.deepPurple, 
                        child: Text("C")),
                  ),
                  ListTile(
                    leading: Icon(Icons.home),
                    title: Text('Home'),
                    onTap: () {
                      //add routes to navigate
                      showSnackBar(context, "Home");
                    },
                  ),
                  ListTile(
                    leading: Icon(Icons.local_laundry_service),
                    title: Text('Services'),
                    onTap: () {
                      //add routes to navigate
                      showSnackBar(context, "Services");
                    },
                  ),
                  Divider(
                    color: Colors.black87,
                  ),
                  ListTile(
                    leading: Icon(Icons.settings),
                    title: Text('Settings'),
                    onTap: () {
                      //add routes to navigate
                      showSnackBar(context, "Settings");
                    },
                  ),
                  ListTile(
                    leading: Icon(Icons.report_problem),
                    title: Text('Report Problem'),
                    onTap: () {
                      //add routes to navigate
                      showSnackBar(context, "Report Problem");
                    },
                  ),
                ],
              ),
            );
          },
        ),
      ),
    );
  }
}

//Show SnackBar
void showSnackBar(BuildContext context, title) {
  //Hide navigation drawer while showing SnackBar
  Navigator.of(context).pop();

  //Show SnackBar
  Scaffold.of(context).showSnackBar(
    SnackBar(
      content: Text('$title is Clicked!'),
      backgroundColor: Colors.black87,
    ),
  );
}

Flutter Font Awesome Plugin Tutorial

by Muhammad Siddiqur Rahman . Updated: August 15, 2020 at 4:11 pm

In this article we are going to learn how to use flutter font awesome plugin into your flutter app very easily.

Step 1: Package Installation

Font awesome flutter package provides icon packs as flutter icons so that we can use them in our flutter apps. It includes all free icons:

  • Regular Icon Sets
  • Solid Icon Sets
  • Brands Icon sets

In the dependencies section of your pubspec.yaml file, add the following line:

font_awesome_flutter: <latest_version>

After adding the above line, click on Packages get in the Android Studio IDE, to download the package into your project.

Once the download is finished, it is ready to use in our project.

How to use it?

In order to use it anywhere in our project, we just need to include the following line of code at the top of the particular file (main.dart in my case).

import 'package:font_awesome_flutter/font_awesome_flutter.dart';

Once we include the above line, now flutter will detect our Font Awesome package into the particular file so that we can use it.

IconButton( icon: FaIcon(FontAwesomeIcons.surprise), onPressed: (){}, iconSize: 16.0, ),

For the IconData class, here we use FaIcon widget provided by our Font Awesome package and access the icons through FontAwesomeIcons class.

Using in Menus

Using Font awesome in Navigation Drawer

In our previous post, we have seen how to implement Navigation Drawer in our flutter apps. In this section of this article, we are going to learn to use Font Awesome in Navigation Drawer

In order to achieve this, we will have to write the following code:

drawer: Builder(
        builder: (BuildContext context){
          return Drawer(
            child: ListView(
              children: <Widget>[
                UserAccountsDrawerHeader(
                  accountName: Text('Coding Ninja'),
                  accountEmail: Text('ninja@codingninja.info'),
                  currentAccountPicture: CircleAvatar(
                      backgroundColor: Colors.deepPurple,
                      child: Text("C")),
                ),
                ListTile(
                  leading: FaIcon(FontAwesomeIcons.home),
                  title: Text('Home'),
                  onTap: () {
                    //add routes to navigate

                  },
                ),
                ListTile(
                  leading: FaIcon(FontAwesomeIcons.servicestack),
                  title: Text('Services'),
                  onTap: () {
                    //add routes to navigate

                  },
                ),
                Divider(
                  color: Colors.black87,
                ),
                ListTile(
                  leading: FaIcon(FontAwesomeIcons.cogs),
                  title: Text('Settings'),
                  onTap: () {
                    //add routes to navigate

                  },
                ),
                ListTile(
                  leading: FaIcon(FontAwesomeIcons.exclamation),
                  title: Text('Report Problem'),
                  onTap: () {
                    //add routes to navigate

                  },
                ),
              ],
            ),
          );

Using Font awesome in Bottom Navigation Bar

In our previous post, we have seen how to implement Bottom Navigation Bar in our flutter apps. In this section of this article, we are going to learn to use font awesome in Bottom Navigation Bar as shown in the figure shown below:

We can achieve it by writing the following code:

bottomNavigationBar: Builder(
        builder: (BuildContext context){
          return BottomNavigationBar(
            items: [
              BottomNavigationBarItem(
                icon: FaIcon(FontAwesomeIcons.home),
                title: new Text('Home'),
              ),
              BottomNavigationBarItem(
                icon: FaIcon(FontAwesomeIcons.envelope),
                title: new Text('Messages'),
              ),
              BottomNavigationBarItem(
                  icon: FaIcon(FontAwesomeIcons.user),
                  title: Text('Profile')
              )
            ],
          );

Using with custom Flutter widgets

Custom flutter widgets are very useful when we want to create our own widgets to achieve certain functionality or re-usability.

We can also use font awesome in our custom flutter widgets in the following way:

class MyCustomWidget extends StatelessWidget {
  Widget build(BuildContext context) {
    return IconButton(
      // Use the FaIcon Widget + FontAwesomeIcons class for the IconData
      icon: FaIcon(FontAwesomeIcons.gamepad), 
      onPressed: () { print("Pressed"); }
     );
  }
}

Final Words

Congrats! we have come to the end of this article. Fontawesome is a great icon pack with hundreds of icons and is updated daily with the new ones. So what are you waiting for? Try it out in your flutter apps.

Happy Coding! 🙂

Best WordPress Optimizer Plugin [Updated]

by Muhammad Siddiqur Rahman . Updated: September 28, 2019 at 12:39 am

Best WordPress Optimizer Plugin Collections for your WordPress site.

WordPress site speed optimization plugin increase website speed and reduce page load time. WordPress Plugin are use to customize the website.

WordPress Image Optimizer Plugin:

WordPress Site Speed Optimization Plugin:

WordPress Performance Plugin:

Use lightweight WordPress performance plugin to increase website speed. you can also read this article how to increase WordPress website speed without plugin.

Testing the WordPress performance by using website testing tools like gtmetrix speed test. GTmetrix for WordPress plugin is one of the best WordPress site speed test plugin. Read this article for How To Use GTMetrix For WordPress Speed.

Flutter Tutorial: Animated Curved Navigation Bar Package

by Muhammad Siddiqur Rahman . Updated: September 3, 2020 at 2:46 pm

Welcome to Flutter tutorial, today we are going to discuss on how to implement Animated Curved Navigation Bar in to your android or iOS application.

by using the Flutter curved navigation bar plugin you can create flutter custom bottom navigation bar in your project.

Package name: curved_navigation_bar

How to add dependency for animated curved navigation bar flutter package

Flutter Bottom Navigation Bar Animation

Curved Navigation Bar

add this line into your project pubspec.yaml file under dependency section.

Be sure indentation is correct.

If your indentation goes wrong it will generate error.

dependencies:
  curved_navigation_bar: ^0.3.1 #latest version

Run commend in commend line

$ flutter pub get

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

Import this line at the beginning in you main.dart file

import 'package:curved_navigation_bar/curved_navigation_bar.dart';

In .yaml file # sign is used for comments any line or text.

Now assign this widget as Scaffold attribute value for bottom Navigation Bar:

Flutter Bottom Navigation Bar Animation Sample Code:

Scaffold(
  bottomNavigationBar: CurvedNavigationBar(
    backgroundColor: Colors.blueAccent,
    items: <Widget>[
      Icon(Icons.add, size: 30),
      Icon(Icons.list, size: 30),
      Icon(Icons.compare_arrows, size: 30),
    ],
    onTap: (index) {
      //Handle button tap
    },
  ),
  body: Container(color: Colors.blueAccent),
)

This widgets has nine configurable attributes, by using the attributes you can easily customize the widgets as you like.

Attributes:

items: List of Widgets
index: index of NavigationBar, can be used to change current index or to set initial index
color: Color of NavigationBar, default Colors.white
buttonBackgroundColor: background color of floating button, default same as color attribute
backgroundColor: Color of NavigationBar’s background, default Colors.blueAccent
onTap: Function handling taps on items
animationCurve: Curves interpolating button change animation, default Curves.easeOutCubic
animationDuration: Duration of button change animation, default Duration(milliseconds: 600)
height: Height of NavigationBar, min 0.0, max 75.0

Flutter Bottom Navigation Bar Animation Example App

Curved Navigation Bar

Create new project:

flutter create flutter_curved_navigation_bar 

Open the pubspec.yaml file and add this under dependencies section.

name: flutter_curved_navigation_bar
description: A new Flutter project.

# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1

environment:
  sdk: ">=2.1.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.2
  curved_navigation_bar: ^0.3.0 #latest version

dev_dependencies:
  flutter_test:
    sdk: flutter


# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec

# The following section is specific to Flutter.
flutter:

  # The following line ensures that the Material Icons font is
  # included with your application, so that you can use the icons in
  # the material Icons class.
  uses-material-design: true

  # To add assets to your application, add an assets section, like this:
  # assets:
  #  - images/a_dot_burr.jpeg
  #  - images/a_dot_ham.jpeg

  # An image asset can refer to one or more resolution-specific "variants", see
  # https://flutter.dev/assets-and-images/#resolution-aware.

  # For details regarding adding assets from package dependencies, see
  # https://flutter.dev/assets-and-images/#from-packages

  # To add custom fonts to your application, add a fonts section here,
  # in this "flutter" section. Each entry in this list should have a
  # "family" key with the font family name, and a "fonts" key with a
  # list giving the asset and other descriptors for the font. For
  # example:
  # fonts:
  #   - family: Schyler
  #     fonts:
  #       - asset: fonts/Schyler-Regular.ttf
  #       - asset: fonts/Schyler-Italic.ttf
  #         style: italic
  #   - family: Trajan Pro
  #     fonts:
  #       - asset: fonts/TrajanPro.ttf
  #       - asset: fonts/TrajanPro_Bold.ttf
  #         weight: 700
  #
  # For details regarding fonts from package dependencies,
  # see https://flutter.dev/custom-fonts/#from-packages

main.dart

import 'package:curved_navigation_bar/curved_navigation_bar.dart';
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _page = 0;
  GlobalKey _bottomNavigationKey = GlobalKey();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      bottomNavigationBar: CurvedNavigationBar(
        key: _bottomNavigationKey,
        items: <Widget>[
          Icon(Icons.add, size: 30),
          Icon(Icons.list, size: 30),
          Icon(Icons.compare_arrows, size: 30),
        ],
        onTap: (index) {
          setState(() {
            _page = index;
          });
        },
      ),
      body: Container(
        color: Colors.blueAccent,
        child: Center(
          child: Column(
            children: <Widget>[
              Text(_page.toString(), textScaleFactor: 10.0),
              RaisedButton(
                child: Text('Go To Page of index 1'),
                onPressed: () {
                  //Page change using state does the same as clicking index 1 navigation button
                  final CurvedNavigationBarState navBarState =
                      _bottomNavigationKey.currentState;
                  navBarState.setPage(1);
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}

flutter bottom navigation bar animation make you app interface more attractive and custom bottom navigation bar make flutter app more flexible.

Github Link: https://github.com/siddik12/flutter_curved_navigation_bar

Flutter admob example

Flutter AdMob Banner Ads Integration Tutorial

by Muhammad Siddiqur Rahman . Updated: July 25, 2020 at 9:22 pm

In this article we are going to show you how to integrate flutter admob banner ads in to your flutter app very easy.

Flutter admob tutorial

Flutter Firebase Admob Example

Firebase admob flutter plugin is developed and maintain by Flutter team. so you can get all the latest update with support if you use this plugin in your project.

Package: firebase_admob

This flutter plugin support banner ads, interstitial ads and rewarded video ads using the Firebase AdMob API.

How to install flutter plugins in your project?

to add this plugin to your package’s pubspec.yaml file:

dependencies:
  firebase_admob: ^0.9.0+7

Now run this command in command line

$ flutter pub get

Import the package where you want to use this

import 'package:firebase_admob/firebase_admob.dart';

In android update your AndroidManifest.xml file by adding this line of code

<manifest>
    <application>
        <!-- TODO: Replace with your real AdMob app ID -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-################~##########"/>
    </application>
</manifest>

where [ADMOB_APP_ID] is your App ID. You must pass the same value when you initialize the plugin in your Dart code.

In order to setup the plugin for iOS you should update your Info.plist by adding these two keys:

<dict>
	<key>GADApplicationIdentifier</key>
	<string>ca-app-pub-################~##########</string>
</dict>

where [ADMOB_APP_ID] is your App ID.

Initializing the flutter plugin

First of all the AdMob plugin must be initialized with an AdMob App ID.

FirebaseAdMob.instance.initialize(appId: appId);

In main.dart file

import 'package:firebase_admob/firebase_admob.dart';

You can also test with your own ad unit IDs by registering your device as a test device. Check the logs for your device’s ID value. for this add this code in main.dart file

const String testDevice = 'YOUR_DEVICE_ID';

You can send Mobile Ad Targeting Info by adding this code into your main.dart file

MobileAdTargetingInfo targetingInfo = MobileAdTargetingInfo(
  keywords: <String>['flutterio', 'beautiful apps'],
  contentUrl: 'https://flutter.io',
  birthday: DateTime.now(),
  childDirected: false,
  designedForFamilies: false,
  gender: MobileAdGender.male, // or MobileAdGender.female, MobileAdGender.unknown
  testDevices: <String>[], // Android emulators are considered test devices
);

Add a variable for banner ads

 BannerAd _bannerAd;

Create banner Ads method

BannerAd createBannerAd() {
    return BannerAd(
      adUnitId: BannerAd.testAdUnitId,
      size: AdSize.banner,
      targetingInfo: targetingInfo,
      listener: (MobileAdEvent event) {
        print("BannerAd event $event");
      },
    );
  }

Limitations of This Plugin

This is just an initial version of the plugin. There are still some limitations:

  • Banner ads cannot be animated into view.
  • It’s not possible to specify a banner ad’s size.
  • There’s no support for native ads.
  • The existing tests are fairly rudimentary.
  • There is no API doc.
  • The example should demonstrate how to show gate a route push with an interstitial ad

How to Install DotNet Core on Ubuntu

by Muhammad Siddiqur Rahman . Updated: September 28, 2019 at 12:54 am

How to Install DotNet Core on Ubuntu 18.04 step by step .

►Commands

sudo apt-key adv –keyserver packages.microsoft.com –recv-keys EB3E94ADBE1229CF

sudo apt-key adv –keyserver packages.microsoft.com –recv-keys 52E16F86FEE04B979B07E28DB02C46DF417A0893

sudo apt-get update

(stable)

sudo apt-get install dotnet-sdk-2.1.105

(newest)

sudo apt install dotnet-sdk-2.1.300-preview2-008533

dotnet new console

dotnet run

Pay Per Click Advertising

by Muhammad Siddiqur Rahman . Updated: February 1, 2019 at 11:38 pm

Almost every website uses ads as a form of monetization. These ads are often paid per click ads that earn the webmaster money every time their visitors click on them. As a webmaster, you and your website can also benefit by creating these ads and allowing other websites, as well as search engines, to display your ads. This process is called pay per click advertising.

What is Pay Per Click Advertising?

When you create an ad, you normally pay a set price to have it displayed on other people’s websites. For instance, it may cost you $50/month to advertise on one popular website.

With pay per click advertising, you create an ad and pay a certain price only when someone clicks on the ad. In addition, your ad is not just shown on one website. It has the potential to be shown on many different websites.

Your ad can also be displayed around the search engine results, depending on what service you advertise with. For instance, if you use Google AdWords to display your ad, then you can appear in the search results on Google.

In short, you can display your ad to a much wider audience using pay per click advertising than if you utilize one static ad.

How Does Pay Per Click Advertising Work?

Unlike regular ads, pay per click advertising costs you money every time someone clicks on your ad. When you create your ad, you determine how much money you are willing to pay for someone’s click.

Your ad is displayed around relevant keywords. The keywords you choose will determine how much you have to pay per click, and the price you choose to pay for one click will also determine how often your ads are shown. People who are willing to pay more per click will have their ads shown first because they take priority over other ads.

Most of the time, you will be paying under a dollar per click; however, some popular keywords, that are highly competitive, could cost you a few dollars per click. It all depends on the popularity of the keyword and the competition for that keyword.

For instance, if you create an ad based around a popular keyword such as ‘lose weight’, then there is going to be a lot more competition for ad placement than some less popular keywords.

That means that you will have to pay more per click if you want your ads to appear higher in the search results, and your competition will determine how much that price will be by the amount that they are willing to pay per click. You will have to beat their top amount if you want your ad to appear above theirs.

How Does Pay Per Click Ads Generate Traffic For Your Website?

Pay per click advertising can be very beneficial for you and your website. There are a few different ways that it is well worth the money.

First, you can steal the competitions traffic. Your competition is likely to use a pay per click form of advertising, such as Google AdWords, to monetize their website. In fact, very few websites do not use this form of advertising. If your ads appear on your competitions website, and the reader clicks on your ad, then you have the potential to impress that reader and steal their business from your competition.

Second, you will be put in front of a huge audience. Not only do you appear on your competitions websites, but you also appear in the search engines where people are actively looking for the information or products you are providing.

Lastly, the return on investment has huge potential. Even if you pay over a dollar for someone to click on your ad, you can end up turning him or her into long-term readers or customers. You have the potential to make much more money from them than it cost you to get them to your website.

Organic Search vs PPC Search Marketing Results

When you invest in pay per click advertising, you appear in the search results and receive visitors that are interested in your ads and the information promised in your ads. After that, it is up to you to pull the visitors into your website because they may not see your ads again.

However, when you appear on the same page as those ads in the natural search results, you can get targeted visitors who are interested in your content without it costing you a penny. In addition, if they come back to that list of results, you are guaranteed to have them see your website in their natural search engine results again.

This is why onsite and offsite SEO is so important in any website. It can help you appear alongside the ads in search engines and help you to get noticed by a larger audience.

Is Pay Per Click Advertising Worth It?

Yes. There is no other form of advertising, besides organic search results, that reaches such a large audience. Especially if you use a popular pay per click service such as Google AdWords. In addition, you receive targeted visitors who are interested in what your ad is offering. As long as you direct your visitors to relevant information, the chances of you gaining a reader or making a sale are huge.