什么是推送通知?

推送通知封面

推送通知是Apple公司于 2009 年推出的一种强大的通信渠道。从那时起,推送通知的受欢迎程度直线上升,成为大多数营销活动的重要组成部分。推送通知可用于推动参与度、提高应用程序使用率、影响转化率等!

在本文中,我们将了解推送通知、推送通知的好处、使用案例、通知类型以及推送通知的注意事项。此外,我们还将了解如何使用最佳 mBaaS 提供商之一Back4app向安卓设备发送推送通知。

什么是推送通知?

推送通知是可以直接发送到客户的移动设备、网络浏览器、可穿戴设备或任何其他支持通知的设备上的简短信息或警报。推送通知是一种快速沟通渠道,企业可以通过它发送提醒、更新、时效性信息、促销信息等。

推送通知是一种选择性服务,即客户需要同意接收通知。通常通过简单的弹出消息或安装发布者的移动应用程序来获得同意。

推送通知由多个元素组成。它们的结构和外观因客户的设备和操作系统而略有不同。它们一般包含文字、表情符号、图片和按钮或所谓的 CTA,点击后会执行特定操作。

安卓设备上的推送通知示例如下:

安卓推送通知剖析

为什么要使用推送通知?

推送通知是一种多用途工具。它们可用于营销、时效性信息、安全警报、更新等。让我们来看看一些最常见的使用案例。

促销和优惠

企业可以利用推送通知向用户发送促销优惠和折扣信息,鼓励他们进行购买。此外,他们还可以对推送通知进行个性化处理,使其更加相关和有效。

减少废弃购物车

如果您拥有一家电子商务商店,推送通知可以帮助您减少放弃购物车的数量。在购物车被放弃几天后,您可以向用户发送推送通知,为他们提供额外折扣。

社会互动

推送通知是留住用户的好帮手。大多数社交应用程序,如 Facebook、Instagram 和 Twitter,都会在其他用户与你互动时向你发送通知。例如:喜欢你的帖子、评论你的帖子、给你发信息等等。

更新与提醒

推送通知是一种有用的工具,可用于接收事件、约会和截止日期等方面的更新和提醒。

安全

推送通知还可用于安全目的。有些公司会在每次有人登录其账户时向客户发送推送通知。此外,您还可以使用推送通知启动 2FA 确认。

使用推送通知有什么好处?

我们在上一节中提到了推送通知的许多优点。总结起来,推送通知的优点包括

  • 提高用户参与度
  • 更高的用户留存率
  • 更高的转换率
  • 加强客户服务
  • 增加销售和收入
  • 改善用户体验

推送通知有哪些类型?

推送通知有三种类型:移动通知、网页通知和桌面通知。

通知设备

移动推送通知

移动推送通知是最常用、最著名的推送通知类型。它们可以以各种形式出现,包括状态栏、通知抽屉、抬头通知和锁屏。

它们可以包含小图标、应用名称、时间戳、大图标、标题、文本和按钮。移动通知可根据其内容和重要性分为不同的渠道。

移动推送通知通常使用推送通知服务发送,如 iOS 设备的 Apple Push Notification Service (APNS) 和 Android 设备的 Firebase Cloud Messaging (FCM)。本教程稍后将详细介绍推送通知服务。

网络推送通知

基于网络的推送通知是指即使浏览器没有打开,网站也能向用户的浏览器发送的通知。它们会出现在桌面通知抽屉和浏览器的主屏幕上。

网络推送通知的第一个版本是由Google在 2014 年发布的。现在,包括Google Chrome、Firefox and Microsoft Edge浏览器在内的大多数现代网络浏览器支持网络推送通知。

与移动通知不同,这些通知是通过浏览器的推送 API 发送的。

桌面推送通知

桌面推送通知与网络推送通知类似。它们之间的主要区别在于发送方式不同。网络通知由网站或网络应用程序发送,而桌面通知则由安装在电脑上的应用程序发送。

它们出现在通知抽屉中,大多数现代操作系统都支持。

怎样才能做好推送通知?

2023 年,一名普通智能手机用户每天会收到约 50 条通知。大多数通知都是未读或被刷掉的。如果您希望您的推送通知活动更加成功,请考虑以下提示。

个性化

根据用户的兴趣和偏好定制通知,可以使通知更相关、更吸引眼球。这可以提高用户留存率、参与度和忠诚度。此外,通过 CTA 鼓励用户采取所需的行动,还能增加您的业务收入。

使用富媒体和表情符号

为了让您的通知更吸引人、更有趣,请确保包含相关图片和表情符号。研究表明,图片和表情符号可以大大提高点击率。

如果您选择使用表情符号,请确保不要过度使用。在通知的开头或结尾最多使用一到两个表情符号。

把握时机

正确把握推送通知的时间非常重要。在发送通知之前,请确保您了解您的客户群。如果您的客户生活在不同的时区,您可以根据他们的时区将他们分成多个组,然后按组发送通知。

Notix 的研究发现,在..:

  1. 上午 8:00 和 11:00 的点击率为 5.55
  2. 上午 11:00 和晚上 8:00 的点击率为 7
  3. 晚上 8:00 和 11:00 的点击率为 10.4

包含 CTA

推送通知应明确传达其意图以及用户下一步应该做什么。例如:如果您刚刚发布了一篇新文章,请确保包含文章链接;如果您的商店有新产品上市,请添加 “立即购买 “按钮。

请记住一个好的推送通知应与用户相关、吸引用户并为他们提供价值。

发送推送通知时应避免什么?

尽管推送通知是吸引用户和促进转化的有力工具,但在某些情况下还是应该避免使用。确保不

  1. 宣传另一种产品
  2. 发送过多通知
  3. 发送不相关或无意义的通知
  4. 尝试通过通知获取用户
  5. 让用户不知所措

什么是推送通知服务?

推送通知服务是一种允许第三方开发人员通过应用程序接口或仪表板向客户设备发送推送通知的服务。它们的工作原理是在应用程序或网站与客户设备之间建立连接。推送通知服务使用每个设备的唯一标识符,以确保信息只发送给预定的收件人。

典型的推送通知服务功能包括管理客户和受众、管理通知(包括过去的推送)、安排通知和分析(点击率、交付等)。

推送通知服务的几个例子是

  1. Firebase Cloud Messaging (FCM)
  2. Apple Push Notification Service (APNS)
  3. Amazon Simple Notification Service (SNS)
  4. Back4app (Parse) Push Notifications
  5. OneSignal

如何发送推送通知?

本节将介绍如何使用Back4app 向 Android 设备发送推送通知。

推送通知示例

先决条件

  • 您需要安装Android Studio
  • 基本了解安卓应用程序开发
  • 基于 Gradle 的 Android Studio 项目

目标

  1. 创建 Back4app 应用程序
    • 安装并配置 Parse Android SDK
    • 使用应用程序 ID客户端密钥初始化 Parse
  2. 创建 Firebase 项目和应用程序
    • 安装 Firebase SDK
  3. 通过GCM 发件人 IDGCM 服务器密钥链接 Firebase 和 Back4app
  4. 配置 Android 权限,注册服务和通知接收器。
  5. 通过 Back4app 面板或云代码发送推送通知

什么是 Back4app?

Back4app 是一家出色的后端即服务(BaaS)提供商,可让开发人员专注于自己的应用程序,而无需担心后端或底层基础设施。它建立在 Parse、GraphQL、Node.js 和 Redis 等开源技术之上。

Back4app 易于使用,有一个流畅的仪表板和一个命令行界面(CLI),适合高级用户和任务自动化。

该平台具有多项内置功能,包括

  • 类似电子表格的数据库
  • 认证和社交认证
  • 推送和电子邮件通知
  • 云代码和工作
  • 用户管理
  • 安全功能

Back4app 的定价模式简单明了。他们还提供慷慨的免费层,可用于试用其平台,甚至托管小型应用程序。

要了解有关 Back4app 的更多信息,请查看为什么使用 Back4app?

创建 Back4app 应用程序

如果您已经创建了 Back4app 应用程序、安装了Parse SDK 并配置了 Android 项目,请跳过本节!

要使用 Back4app,我们首先需要创建一个应用程序。登录仪表板后,您将看到应用程序列表。点击 “创建新应用程序 “开始应用程序创建过程。

Back4app 创建应用程序

选择 “后台即服务”,输入应用程序名称,选择 “NoSQL 数据库 “作为数据库,最后点击 “创建”。

Back4app 会花一些时间准备应用程序所需的一切,如数据库、应用层、扩展、备份和安全。

应用程序准备就绪后,您将被重定向到应用程序的控制面板。

Back4app 应用程序控制面板

接下来,选择侧边栏中的 “应用程序设置 > 安全与密钥”,并记下您的 “应用程序 ID “和 “客户端密钥”。我们需要用它们将 Android 应用程序连接到 Back4app 服务器。

Back4app 应用程序密钥

安装 Parse SDK

为了让我们的应用程序与 Back4app 服务器通信,我们必须安装 Parse SDK。

我们要使用的程序需要 Android SDK27或更高版本。安装 Parse 之前,请导航到app/build.gradle,确保compileSdktargetSdk设置为正确的版本:

// app/build.gradle

android {
    namespace "com.back4app.push"
    compileSdk 33  // <-- check this line

    defaultConfig {
        applicationId "com.back4app.push"
        minSdk 27
        targetSdk 33   // <-- check this line
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    // ...
}

要访问最新的软件包,让我们安装JitPack软件包仓库。

导航至settings.gradle,像这样将 JitPack repo 添加到依赖关系解决管理(dependencyResolutionManagement)中:

// settings.gradle

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven { url "https://jitpack.io" }   // new
    }
}
rootProject.name = "back4app-push-notifications"
include ":app"

接下来,导航至app/build.gradle,添加以下依赖项:

// app/build.gradle

dependencies {
    implementation "com.parse.bolts:bolts-android:1.4.0"
    implementation "com.github.parse-community.Parse-SDK-Android:parse:4.2.0"
    implementation "com.github.parse-community.Parse-SDK-Android:fcm:4.2.0"
    // ...
}

检查JitPack上是否有更新的版本,如果有,请升级。

为了让 Parse 正常工作,我们需要在应用程序中启用互联网访问。此外,我们还必须提供上一节中的 “应用程序 ID “和 “客户端密钥”。导航至AndroidManifest.xml,并进行如下修改:

<!-- app/src/main/AndroidManifest.xml -->

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <!-- new -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <!-- end of new -->

    <application>
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <meta-data
                android:name="android.app.lib_name"
                android:value="" />

            <!-- new -->
            <meta-data
                android:name="com.parse.SERVER_URL"
                android:value="@string/back4app_server_url" />
            <meta-data
                android:name="com.parse.APPLICATION_ID"
                android:value="@string/back4app_app_id" />
            <meta-data
                android:name="com.parse.CLIENT_KEY"
                android:value="@string/back4app_client_key" />
            <!-- end of new -->

        </activity>
    </application>
</manifest>

最后,转到strings.xml,添加我们刚刚使用过的字符串:

<!-- app/src/main/res/values/strings.xml -->

<resources>
    <string name="app_name">back4app-push-notifications</string>
    <string name="back4app_server_url">https://parseapi.back4app.com</string>
    <string name="back4app_app_id">YOUR_PARSE_APP_ID</string>
    <string name="back4app_client_key">YOUR_PARSE_CLIENT_KEY</string>
</resources>

确保将YOUR_PARSE_APP_IDYOUR_PARSE_CLIENT_KEY替换为您的实际 ID 和密钥。

初始化 Parse

为了初始化 Parse,我们将使用 Android 的应用程序类。

应用程序类提供对应用程序范围内资源和状态的全局访问。当应用程序进程启动时,它先于其他类实例化,可用于管理应用程序生命周期事件、初始化全局变量和实现自定义行为

要了解有关应用程序类的更多信息,请参阅官方文档

导航到MainActivity.kt所在的文件夹,新建一个名为App.kt的文件,内容如下:

// app/src/main/java/.../App.kt

package com.back4app.push

import android.app.Application
import com.parse.Parse

class App : Application() {
    override fun onCreate() {
        super.onCreate()

        Parse.initialize(
            Parse.Configuration.Builder(this)
                .applicationId(getString(R.string.back4app_app_id))
                .clientKey(getString(R.string.back4app_client_key))
                .server(getString(R.string.back4app_server_url))
                .build()
        )
    }
}

接下来,通过在AndroidManifest.xml中设置应用程序android:name来告诉Android使用新创建的应用程序类:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:name=".App"
    >
        <!-- ... -->
    </application>
</manifest>

现在,您的应用程序应已连接到 Back4app。为确保一切正常,请尝试运行应用程序并检查日志是否有错误。

创建 Firebase 项目和应用程序

以下步骤需要您拥有一个Firebase 账户。如果您还没有账户,请使用 Google 账户注册。

导航到Firebase 控制台,点击 “创建项目”。

Firebase 创建项目

给它取一个自定义名称,我就取名为back4app-push-notifications

接受条款和条件,启用 Google Analytics,然后按 “创建项目”。

等待 Firebase 为你的项目做好准备,并准备好所需的一切。一旦完成,你将被重定向到你的项目仪表板。

接下来,点击 Android 图标创建一个新的应用程序。

Firebase 控制面板

输入以下详细信息:

  1. Android 软件包名称:使用您的软件包名称(例如 com.back4app.push)
  2. 应用程序昵称(可选):输入自定义昵称
  3. 调试签名密钥:留空(或根据本文获取密钥)

最后,下载google-services.json文件并将其放到应用程序文件夹中。

跳过 “添加 Firebase SDK “和 “下一步”,因为我们将在文章的下一部分进行操作。

安装 Firebase SDK

要安装 Firebase SDK,请导航到项目级build.gradle,然后像这样添加buildscript属性:

// build.gradle

buildscript {
    dependencies {
        classpath "com.google.gms:google-services:4.3.15"
    }
}

接下来,在app/build.gradle 中添加以下插件和依赖项:

// app/build.gradle

plugins {
    id "com.android.application"
    id "org.jetbrains.kotlin.android"
    id "com.google.gms.google-services"  // new
}

dependencies {
    implementation platform("com.google.firebase:firebase-bom:31.2.2")  // new
    implementation "com.google.firebase:firebase-analytics-ktx"  // new
    // ....
}

同步 Gradle 设置

将 Firebase 项目与 Back4app 应用程序连接起来

要将 Firebase 项目与 Back4app 应用程序连接起来,我们首先需要获取 GCM 发件人 ID 和 GCM 服务器密钥。为此,请打开 Firebase 控制台,点击齿轮图标,然后点击 “项目设置”。

Firebase 项目设置

在顶部导航中选择 “云信息”。

Parse推送通知需要云消息 API,该 API 默认已禁用。要启用它,请使用 “更多 “选项,然后点击 “在 Google 云控制台中管理 API”。点击 “启用 API”,等待几秒钟让 Google 启用。

Firebase 传统云消息系统

成功启用 API 后,关闭当前选项卡并返回云消息设置。记下您的 “发件人 ID “和 “服务器密钥”。

Firebase 云信息服务

接下来,进入 Back4app 应用程序控制面板,选择侧边栏中的 “应用程序设置 > 服务器设置”。向下滚动直到看到 “安卓推送通知”,然后点击 “设置”。

Back4app 服务器设置

点击 “编辑”,输入 “发件人 ID “和 “服务器密钥 “并保存。

已配置 Back4app 推送通知

您的 Firebase 项目和 Back4app 应用程序现已连接。

为推送通知配置应用程序

在发送通知之前,我们要做的最后一件事就是配置 Android 应用程序。我们必须

  1. AndroidManifest.xml中设置 GCM 发送器 ID 并添加权限
  2. AndroidManifest.xml中添加服务和接收器
  3. App.kt中创建ParseInstallation

导航至AndroidManifest.xml,然后进行如下修改:

<!-- app/src/main/AndroidManifest.xml -->

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <!-- new -->
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <!-- end of new -->

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />

    <application>
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <meta-data
                android:name="android.app.lib_name"
                android:value="" />
            <meta-data
                android:name="com.parse.SERVER_URL"
                android:value="@string/back4app_server_url" />
            <meta-data
                android:name="com.parse.APPLICATION_ID"
                android:value="@string/back4app_app_id" />
            <meta-data
                android:name="com.parse.CLIENT_KEY"
                android:value="@string/back4app_client_key" />

            <!-- new -->
            <meta-data
                android:name="com.parse.push.gcm_sender_id"
                android:value="YOUR_GCM_SENDER_ID" />
            <!-- end of new -->

        </activity>

        <!-- new -->
        <service
            android:name="com.parse.fcm.ParseFirebaseMessagingService"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>

        <receiver
            android:name="com.parse.ParsePushBroadcastReceiver"
            android:exported="false">
            <intent-filter>
                <action android:name="com.parse.push.intent.RECEIVE" />
                <action android:name="com.parse.push.intent.OPEN" />
                <action android:name="com.parse.push.intent.DELETE" />
            </intent-filter>
        </receiver>
        <!-- end of new -->
    </application>
</manifest>

确保将YOUR_GCM_SENDER_ID替换为您的实际 GCM 发件人 ID。

最终的AndroidManifest.xml如下所示。

接下来,导航到您的App.kt,在onCreate() 的底部添加以下代码:

// app/src/main/java/.../App.kt

import com.parse.ParseInstallation

class App : Application() {
    override fun onCreate() {
        // ...

        val installation = ParseInstallation.getCurrentInstallation()
        installation.put("GCMSenderId", "YOUR_GCM_SENDER_ID")
        installation.put("channels", listOf("news", "updates"))
        installation.saveInBackground()
    }
}

请务必输入您的实际 GCM 发件人 ID。您还可以修改频道名称。

这段代码将创建ParseInstallation并将其保存到数据库中。此外,它还会配置通知通道(在我们的例子中是新闻更新)。这些通道可用于通过云代码发送不同类型的通知。

很好,我们已经成功配置了 Android 应用程序的推送通知功能。

发送推送通知

Back4app 仪表板

通过 Back4app 面板发送推送通知非常简单。这种方法适合手动发送一次性推送通知。

首先,在侧边栏选择 “更多 > 推送 > 发送新推送”,然后填写表格。

Back4app 推送通知仪表板

最后,点击 “发送推送 “按钮。

Back4app 控制面板通知

我建议您使用JSON格式,因为它允许您通过标题指定通知的标题,通过警报指定正文。

云代码

云代码可用于以编程方式发送推送通知。此外,您还可以用它来安排推送通知或在特定事件发生时发送推送通知。

要通过云代码发送推送通知,请在侧边栏中选择 “云代码 > 功能与虚拟主机”,然后在main.js 中添加以下代码:

// cloud/main.js

Parse.Cloud.define("pushTest", (request) => {
    return Parse.Push.send({
        channels: ["news"],
        data: {
            title: "Cloud Code",
            alert: "This push notification was sent via Cloud Code.",
        }
    }, { useMasterKey: true });
});

点击 “部署 “按钮,部署代码。

最后,通过 REST 调用触发云功能:

curl --location --request POST 'https://parseapi.back4app.com/functions/pushTest' \
--header 'X-Parse-Application-Id: YOUR_APPLICATION_ID' \
--header 'X-Parse-REST-API-Key: YOUR_REST_KEY' \
--header 'Content-Type: application/json'
Back4app 云代码通知

应用程序 ID 和 REST 密钥可从 “应用程序设置 > 安全与密钥 “中获取。

要安排推送通知,请查看云工作

结论

在这篇文章中,我们介绍了推送通知、推送通知的优点、通知类型以及推送通知的注意事项。此外,您还学会了如何配置您的 Android 应用程序,以便通过 Back4app 发送推送通知。

最终源代码可在GitHub 代码库中获取。

今后的步骤

  1. 如果你想安排通知时间或针对特定用户,请查看Parse 文档
  2. 要了解如何向 iOS 设备发送推送通知,请查看官方文档
  3. 要了解有关云代码的更多信息,请参阅《什么是云计算中的 FaaS?

常见问题

什么是推送通知?

推送通知是一种可以直接发送到客户的移动设备、网页浏览器、可穿戴设备或任何支持通知功能设备的简短消息或提醒。

推送通知有哪些好处?

– 更高的用户留存率
– 更高的转化率
– 提升客户服务质量
– 增加销售和收入

推送通知有哪些类型?

– 移动推送通知
– 网页推送通知
– 桌面推送通知

什么是推送通知服务?

推送通知服务是指一种允许第三方开发者通过 API 或仪表板将推送通知发送到客户设备的服务。

如何发送推送通知?

1. 创建一个 Back4app 应用程序
2. 创建一个 Firebase 项目和应用程序
3. 连接你的 Firebase 项目和 Back4app 应用
4. 配置你的 Android 应用
5. 通过 Back4app 仪表板或 Cloud Code 发送推送通知


Leave a reply

Your email address will not be published.