由同一开发人员管理来自设备中许多应用程序的通知[关闭]
Posted
技术标签:
【中文标题】由同一开发人员管理来自设备中许多应用程序的通知[关闭]【英文标题】:Manage notifications from many apps in a device by the same developer [closed] 【发布时间】:2014-10-21 14:59:27 【问题描述】:我正在使用 GCM(谷歌云消息传递)开发一些应用程序,我想向所有当前应用程序的用户发送有关我公司的一些信息(新应用程序、促销活动等)的通知。如果设备安装了很多应用程序,它会多次收到并通知相同的通知,因此用户可能会感到不舒服。我希望每个通知只在设备中通知一次,有没有解决这个问题的方法?
我看到有人误解了我的问题。我的问题是:一台设备安装了我公司的许多应用程序,所以如果我向每个单独的应用程序发送相同的通知(例如:通知我的公司发布了一个新应用程序),此设备将多次通知相同的内容.
我的解决方案:为所有应用程序使用共享内存(文件),每个通知都有一个唯一的 id,当通知到来时,每个应用程序都会检查这个文件(如果不存在,则创建一个新文件),如果这个文件内容不' t 包含此通知的唯一 ID,并且设备允许此应用显示通知,它将写入此 ID 并显示此通知的文件,否则(此 ID 存在或设备不允许此应用显示通知)此应用将忽略此通知。通过这个解决方案,我需要检查用户是否允许应用程序显示通知,我可以检查吗?
还有其他解决方案或建议可以改进我的解决方案吗?
【问题讨论】:
【参考方案1】:(检查此答案的历史以查看以前的编辑)
服务器端,您现在必须知道您的用户安装了哪些应用程序。
-
You need a serial number 或其他唯一标识您的用户的方式
You can inspect installed packages
You can listen for install/uninstall events 或定期更新您的信息
然后,您选择哪个应用程序将触发通知(使用 @mina fawzy 建议的 SENDER_ID)。
编辑
总而言之,您的方法是客户端:
应用程序使用NOTIF_ID
触发通知。 NOTIF_ID
在 SHARED_FILE
中吗?
Y
: 通知已显示
N
: 允许通知吗?
Y
:将NOTIF_ID
写入SHARED_FILE
并显示通知
N
:忽略此通知
您现在需要检查您的应用是否禁用了通知:
How to check notifications are disabled for the application? Check for access to notifications using NotificationListenerService【讨论】:
谢谢,但我想你误解了我的问题,不是“一个用户使用很多设备”,而是“一个设备安装了同一个开发者的多个应用程序”,请看我编辑的问题 好的@Ikarus,我编辑了! 我想到了这些功能,挺复杂的,问题是当用户关闭选择显示通知的应用程序的通知时,我可以监听打开/关闭通知事件吗(像安装/卸载事件)将显示通知任务切换到另一个启用显示通知的应用程序?我还更新了上面的另一个解决方案,我认为这是一个更好的方法 澄清一下:is this the feature you are afraid of that enables users to disable notifications? 我从很久以前就在使用 cyanogenmod,并认为这是它的功能之一:P 很好,有了 android.service.notification 包,即使我可能不需要使用共享文件,因为它可以帮助我检查通知栏中的通知 ID(需要考虑竞争条件),不幸的是 android.service.notification仅适用于 Android 版本 >= 4.3。因为这不是一个重要的功能,所以我会推迟它【参考方案2】:在 GCM 服务器中注册的每个应用程序都有唯一的 SENDER ID,这个号码放在手机和您将发送通知的服务器中,所以当您发送通知时,您发送到特定的移动应用程序而不是所有应用程序,所以它的服务器端问题不是安卓一
更新答案
您需要每个手机的唯一标识符,例如 Settings.Secure 中的 ANDROID_ID
private String android_id = Secure.getString(getContext().getContentResolver(),
Secure.ANDROID_ID);
别忘了导入
import android.provider.Settings.Secure;
【讨论】:
【参考方案3】:在客户端,您可以导出您的 GCM 接收器,让您公司的所有应用程序都可以使用。 所有应用程序使用相同的 GCM 接收器,然后他们可以判断 是否需要提示通知。
然后在服务器端, 您应该通过用户 id 收集用户手机中安装的应用程序(因为 GCM 注册 id 可能不一样); 当您想向用户发送通知时, 您应该检查每个用户 ID,而不是检查注册 ID。
那么你可以解决这个问题。
【讨论】:
以上是关于由同一开发人员管理来自设备中许多应用程序的通知[关闭]的主要内容,如果未能解决你的问题,请参考以下文章