Android 的基于位置的推送通知

2023-11-22

有没有办法在不使用第三方推送通知服务(例如 Parse)的情况下为 Android 设备发送基于位置的推送通知?我想向我的用户发送推送通知,而不会因为收到与该特定用户无关的通知而烦恼,因为他们不在某个区域。另外,我可以根据时间间隔获取用户位置,但如果可能的话,我宁愿采用不同的方式。


是的,这是完全可能的,只要我正确解释你所问的内容。

为了实现这一点,您将向所有用户发送 GCM 推送通知(除非您有办法在服务器端过滤掉其中一些用户)。然后在您的应用程序中,您不只是创建通知并将其传递给通知管理器,而是首先使用 LocationManager(或较新的 LocationServices API)首先确定用户是否位于正确的位置,然后丢弃 GCM如果不是,请通知。

为此,您需要注意几件事:

  • 您的 AndroidManifest.xml 将需要进行多项权限更改,包括 GCM 更改和位置访问:

    <!-- Needed for processing notifications -->
    <permission android:name="com.myappname.permission.C2D_MESSAGE" android:protectionLevel="signature" />
    <uses-permission android:name="com.myappname.permission.C2D_MESSAGE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    
    <!--  Needed for Location -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    
  • 您还需要在中设置一个通知接收器<application>清单部分:

    <receiver android:name="com.myappname.NotificationReceiver" android:permission="com.google.android.c2dm.permission.SEND">
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="com.myappname" />
        </intent-filter>
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
            <category android:name="com.myappname" />
        </intent-filter>
    </receiver>
    
  • 此外,您还需要编写您的NotificationReceiver java 类,并覆盖onReceive功能:

    public class NotificationReceiver extends BroadcastReceiver {
        public void onReceive(final Context context, final Intent intent) {
    
            if ("com.google.android.c2dm.intent.REGISTRATION".equals(intent.getAction())) {
    
                handleRegistration(context, intent); // you'll have to write this function
    
            } else if ("com.google.android.c2dm.intent.RECEIVE".equals(intent.getAction())) {
    
                // the handle message function will need to check the user's current location using the location API you choose, and then create the proper Notification if necessary.
                handleMessage(context, intent);
    
            }
    }
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 的基于位置的推送通知 的相关文章

  • 如何正确显示AChartEngine条形图

    我在用图表引擎 1 0 1 最新 并想演示一个条形图 这就是我要的 我想要的图表 到目前为止我所取得的成就 1 1 view 缩小视图 问题 图表的左右部分在 1 1 视图中丢失 酒吧之间的距离是如此之远 我需要减少它 该栏未正确位于文本标
  • 在旧 Android 版本上使用 actionBarSherlock 的 searchView 的本机外观和感觉

    我注意到没有可行的解决方案显示如何使用操作栏在 listView 项目上使用过滤器 该解决方案适用于较旧的 Android 版本 如 2 3 x 我找到的唯一示例是片段示例的文件 LoaderCursorSupport java 但是 它仅
  • 从 TimerTask 的 run 方法更新 TextView 时出错

    我正在尝试测试 UI 和 Timer 类的可能性 所以我尝试了以下练习 TestTimerActivity java package com tvt TestTimer import android app Activity import
  • 进度条中形状的填充

    我正在使用 xml 文件来定义进度条 我在背景形状上定义了填充 但这个设置有时会正确显示 有时则不能 因此 如果我启动内部带有进度条的应用程序或活动 则会正确显示带有背景和 填充 进度的进度条 然后我关闭我的应用程序并再次启动它 并且 进度
  • 使用 toast 显示来自 catch 语句的错误消息

    我的 Android 应用程序中有以下 catch 语句 我想通过 toast 显示任何错误消息 我可以这样做吗 catch Exception e Helper displayExceptionMessage this e getMess
  • 在系统进程中调用方法没有合格的用户错误

    我在 android 4 4 中使用通知侦听器服务 遇到一个错误 导致我的应用程序停止获取发布的通知 这是相当随机的 但当它发生时我看到 12 31 01 40 44 080 21680 21680 W ContextImpl Callin
  • 检索特定联系人的组

    我想检索联系方式及其所属的组 我得到了列出手机中所有联系人组的代码 Cursor groupC getContentResolver query ContactsContract Groups CONTENT URI null null n
  • android 4 中的 android RadioButton 问题

    我有一个简单的应用程序 屏幕是在相对布局内构建的 我还有 LinearLayout s 其中之一显示 2 个 RadioButton s 如下所示
  • 我想了解 NfcV ISO-15639 的操作

    我是 NFC 技术新手 我很难理解如何操作块 byte cmd new byte byte 0x20 FLAG byte 0x21 WRITE SINGLE BLOCK COMMAND byte 0x00 byte 0x00 byte 0x
  • 如何监听自定义 URI

    我正在开发一个有自己的 URI 前缀的应用程序 在本例中为 dchub 到处搜索并阅读了很多 但我有点困惑 当有人点击以以下开头的链接时 是否可以启动我的应用程序dchub 在浏览器中 到目前为止 找到了很多从应用程序打开浏览器的其他示例
  • Recycler查看可见项目的数量

    我正在我的应用程序中创建一个水平 RecyclerView 它必须一次在屏幕上显示 2 个图像 因此每个图像的宽度必须为屏幕的 50 目前它工作正常 但每个项目都会占用屏幕的所有宽度 这是我的代码 mRecyclerView Recycle
  • Android.system.ErrnoException:isConnected失败:ECONNREFUSED(连接被拒绝)

    我使用Java连接MySQL和Json将数据发送到android 当我通过URL地址将数据从Java发送到json时 http 192 168 1 221 9999 rentalcar service category getAllManu
  • 获取当前 GPS 时出现 NullPointerException

    我有一个测试屏幕 其中有一个按钮 按下它会调用该服务 我正在尝试实现一种方法来获取当前用户的当前 GPS 位置 但在尝试调用时它崩溃了 谁能告诉我问题是什么吗 package com example whereyouapp import j
  • Android接收短信Intent:获取消息Id或线程Id

    我已经注册了一个广播监听器来接收android provider Telephony SMS DELIVER意向行动 我似乎能够获取这条新消息的正文和发件人电话号码 但是我无法获取此新消息的消息 ID 或线程 ID 我发现的唯一方法是搜索消
  • 在没有 SurfaceView 的 Android 上获取 GPU 信息

    在Android上 有没有一种方法可以在不创建SurfaceView的情况下获取GPU信息 我不想使用 OpenGL 绘制任何内容 但我只需要获取硬件信息 例如供应商 OpenGL ES 版本 可用扩展等 抱歉 我不知道如何在 Androi
  • 调用 MediaScannerConnection.scanFile 后,MediaStore 内的 Android 缩略图不会刷新

    我正在尝试构建一个类似画廊的应用程序 它将在外部存储上执行以下功能 列出所有包含图像的文件夹 列出所有可供公众使用的图像 不会探测里面的文件Android data 到目前为止 我可以列出所有图像以及包含图像的文件夹 然而 我后来发现这些图
  • 回购:找不到命令?

    我是 git 和 repo 的新手 我使用的是window 7 所以我使用cygwin 我已经从 cygwin 安装程序安装了 git 之后我尝试在 cygwin 中使用以下命令进行存储 repo init u git android gi
  • 使用本机短信编辑器发送短信后如何返回意图

    我正在使用下面的代码使用本机短信编辑器发送短信 Intent intent new Intent Intent ACTION VIEW intent putExtra address 1234567890 intent putExtra s
  • E/libEGL: validate_display:99 错误 3008 (EGL_BAD_DISPLAY) API 24 或更高版本

    当我使用 API 为 24 或更高版本的设备时 我收到此错误 E libEGL validate display 99 错误 3008 EGL BAD DISPLAY XML 代码 activity main xml
  • 只有创建视图层次结构的原始线程才能触摸其视图。在安卓上[重复]

    这个问题在这里已经有答案了 我只是一个初学者 所以请原谅我问一个可能愚蠢的问题 我不明白只有创建视图层次结构的原始线程才能触摸其视图的含义 请有人告诉我为什么会发生此错误以及如何解决此问题 ThankYou 这是我的班级 public cl

随机推荐

  • MySQL 创建外键的语法

    创建外键时这种语法是否正确 create table department departmentID int not null auto increment primary key name varchar 30 type InnoDB c
  • .NET 中的单元测试 System.Threading.Timer

    如何在 NET中基于System Threading Timer对计时器进行单元测试 System Threading Timer有一个回调方法 您可以通过不实际创建直接依赖项来对其进行单元测试System Threading Timer
  • 使用WebService自动捕获所有未处理的异常

    我有一个 C WebService 应用程序 我想在其中捕获应用程序抛出的所有未处理的异常 我怎样才能做到这一点 由于某种原因 Web 服务不会触发 Application Error 事件 请参阅其他问题 杰夫 阿特伍德先生本人也发表了一
  • Waitress和GUnicorn大数据输入比Flask开发服务器慢很多

    问题描述 我正在尝试创建一个 Flask 应用程序 它应该 仅在本地主机上可见 因此不会降低网络速度 获取相当多的数据 30MB 作为一个大型 numpy 数组 作为输入 并输出相对较小的数据量 大约 1MB 我做了一个快速测试并使用 Fl
  • 如何在本机活动中显示软键盘

    当我尝试使用时ANativeActivity showSoftInput 它不会调出软键盘 我尝试过使用ANativeActivity showSoftInput engine gt app gt activity ANATIVEACTIV
  • 如何保留 EditText 中的换行符?

    当我显示以下内容时忽略新行 private void post String subject String message subject etSubject getText toString message etMessage getTe
  • 如何从插件中的单独 C++ 线程调用发射器回调?

    对于上下文 我从this问题 我需要在另一个线程中调用发射器的回调 我做了一个最小的例子 但它出现了段错误emit Call cb result 我的第一直觉是我对生命周期有疑问env or the emit功能 插件 cpp includ
  • jpa使用标准api延迟获取多个级别的实体

    我使用 JPA2 及其 Criteria API 从数据库中选择我的实体 该实现是 WebSphere Application Server 上的 OpenJPA 我的所有实体都是使用 Fetchtype Lazy 建模的 我从数据库中选择
  • android中访问wifi的安全异常

    请看下面的代码 wifi WifiManager getSystemService Context WIFI SERVICE if wifi isWifiEnabled false Toast makeText getApplication
  • 即使设置了包含路径,Eclipse 也找不到头文件

    这是我们已经处理了一段时间的问题 我们正在使用 Cygwin 工具链构建 C 项目 无论我们在 C 编译器中添加项目设置下的包含路径 Eclipse 似乎都找不到必要的头文件 到目前为止 我们已经完成了 Stackoverflow 社区建议
  • 启动器和发送活动的意图过滤器

    我试图让我的主要活动成为启动器活动并接收发送事件 不知怎的 我似乎无法让两者同时工作 例如 我的应用程序托盘中有启动器图标 但不在图库中的图像共享菜单中 我怎样才能让两者同时工作 使用此意图过滤器 图标位于应用程序托盘中 但不在共享菜单中
  • SQL 数据透视日期列?

    我对 SQL 相当陌生 但相信我 在发布此内容之前我已经搜索过帮助 我有一个查询 它返回分配给工作的人员列表 这些工作的长度也不同 分配给这些工作的人员的工作长度也不同 我想做的是转换类似记录的列表 唯一改变的变量是日期 以及如何旋转此数据
  • 如何在 .net 内存转储中列出正在运行的任务

    我们有一个使用异步 等待模式的复杂 ASP Net Core 应用程序 该应用程序最近停止响应 我们为其进行了内存转储 我们怀疑有一些异步操作导致应用程序卡住 但不确定是哪一个 在对 Web 应用程序进行内存转储后 我们可以看到很少有正在运
  • 我想用 python 抓取印地语(印度语言)pdf 文件

    我已经编写了Python代码 可以从PDF文件中抓取所有数据 这里的问题是 一旦被刮掉 单词就失去了语法 如何解决这些问题 我附上代码 from pdfminer pdfinterp import PDFResourceManager PD
  • asyncio 中的合作收益

    我正在 龙卷风 网络服务器上运行一个长时间的 CPU 密集型任务 我不想将此任务卸载到线程 目前 在这个长时间运行的任务中 如何正确地 yield 控制事件循环 以便网络请求仍然得到服务 注意 我在这里以合作调度的方式使用 yield 而不
  • AWS 中的负载均衡器、侦听器目标、目标组之间有什么区别?

    您好 我是 AWS 新手 试图了解负载均衡 目标 目标组和安全组之间的区别 我有 2 个实例正在运行 现在我想平衡这些服务器的负载 是否会在新实例上创建负载平衡 什么是侦听器以及它们与负载均衡器有何不同 是的 负载均衡器是一个 EC2 实例
  • 非常量大小的数组:为什么这有效? [复制]

    这个问题在这里已经有答案了 include
  • 可调整大小的 Vue-good-table 或 Vue

    我在 Vue js 中有一个使用 Vue good table 制作的表格 我需要找到一种方法来调整大小 像这样的东西 https codepen io validide pen aOKLNo 不幸的是 据我所知 Vue good tabl
  • 为什么wcftestclient中无法调用WCF?

    我建立了一个WCF服务 它在IE addr中运行良好 但是当我将其添加到wcftestclient并调用方法时 会提示错误并显示为 调用服务失败 可能原因 服务离线或无法访问 客户端配置与代理不匹配 现有代理无效 有关更多详细信息 请参阅堆
  • Android 的基于位置的推送通知

    有没有办法在不使用第三方推送通知服务 例如 Parse 的情况下为 Android 设备发送基于位置的推送通知 我想向我的用户发送推送通知 而不会因为收到与该特定用户无关的通知而烦恼 因为他们不在某个区域 另外 我可以根据时间间隔获取用户位