对于我正在开发的一个项目(Mac OS X应用程序),我有一些架构上的疑虑。 它基本上由两个元素组成:一个在后台运行的守护进程收集一些数据和一个查看器用来表示收集到的数据。 守护进程应该在状态栏中显示(没有停靠图标),并且包括一个通过状态栏可访问的小菜单。 它将数据保存在核心数据存储中。 其中一个菜单项是打开查看器的链接 。 当这个查看器被打开时,一个正常的 GUI应用程序应该开始包括一个停靠图标和菜单栏。 打开应用程序本身时,也会打开查看器(通过双击图标)。 经过一番尝试,我发现实现这个function的最好方法是创build两个应用程序,代表查看器的主应用程序和代表守护程序的助手实用程序 。 我这样做的原因之一是,不能立即在LSUIElement值之间切换来强制守护程序/查看器状态。 现在我对这个架构有一些疑问: 守护进程和查看器应用程序都使用相同的核心数据存储来保存和检索数据。 当有一个multithreading的应用程序,我知道需要多个NSManagedObjectContext对象来正确同步数据。 如何让多个应用程序同时使用相同的核心数据存储? 这甚至可能没有冲突,锁等风险? 我如何保证一致性? 守护进程应该始终在查看器启动时启动。 我通过循环遍历所有打开的进程并检查守护进程的包标识符是否已列出来实现了这一点。 如果没有,守护进程将使用NSWorkspace的launchApplication启动。 这工作正常。 现在,当用户退出守护进程时,观察者也应该停止。 观察者被告知守护进程停止的最佳方式是什么? 如果守护进程不在,我可以定期检查活动进程并退出查看器,但这听起来有点奇怪。 我宁愿select某种在观众即将closures时发送的通知。 但是,由于这个通知应该在应用程序之间发送和捕获,我不知道哪个简单的通知服务可用。 有什么想法吗? 该应用程序是沙盒,因为它将分布在Mac App Store上。 使用NSWorkspace的launchApplication启动应用程序会导致目标应用程序在相同的沙盒环境中运行,因为在同一个沙箱中运行这两个应用程序感觉更好 ,可能也是这样。 但想象一下这种情况:守护进程在login时自动启动(使用SMLoginItemSetEnabled ),用户双击Viewer.app。 当守护进程已经运行(再次,这是通过循环活动进程检查),它不会被启动。 现在我们有守护进程和观察者在不同的沙箱中运行了吗? 这是否会导致喜好,核心数据存储等问题? 我想使用NSUserDefaults进行基本configuration,我可以以某种方式在守护进程和查看器之间交换这些数据吗? 同样,这两个应用程序将有不同的包标识符。 在此先感谢您的帮助,感激!
我知道W3C只是发布他们的Web通知草案版本来通知用户。 所以没有浏览器在当前或最新的编译浏览器中实现这个方法。 Web通知概述 在我search了很多网页,在大多数浏览器中查找所有可能的桌面通知。我发现任何2个主要的浏览器应该支持这个。 1. 谷歌浏览器和基于Webkit的浏览器 Windows的 通知http://code.google.com/chrome/extensionshttp://img.dovov.comnotification-windows.png Mac的 通知 http://code.google.com/chrome/extensionshttp://img.dovov.comnotification-mac.png 通知Linux http://code.google.com/chrome/extensionshttp://img.dovov.comnotification-linux.png 我们可以使用本地桌面通知function来显示如下图所示的消息。 更多信息: Chromium项目 – 桌面通知 2. Internet Explorer 对于IE 5.5+,我们可以使用createPopup函数来像谷歌浏览器那样通知使用,但是Google Chrome更加灵活。 更多信息: MSDN上的CreatePopup方法 而且,如果我们将网站固定到Windows 7任务栏,我们也可以使用叠加图标来通知用户。 覆盖图标http://i.msdn.microsoft.com/dynimg/IC432198.jpg 更多信息: IE9,特定于站点的浏览器,以及将您自己的跳转列表项添加到固定标签 其他浏览器 我想我们可以使用Pines Notify jQuery插件来创build浏览器内通知。 或者你有任何桌面通知库或想法提示我? 谢谢, PS。 如果没有好的图书馆,我会自己创build。 更新我 由于IE8,它不允许我们显示当前浏览器外popup。 例如,当IE最小化时,不显示所有popup窗口。 因此,Google Chrome浏览器只有一个具有完全networking通知API的浏览器(FF 4也有非logging的networking通知API,但现在不起作用)。
为什么在Object类中声明wait()和notify()方法,而不是Thread类?
我在我的Android应用程序中创build通知,并希望在我的首选项中有一个选项来设置通知使用的声音。 我知道在“设置”应用程序中,您可以从列表中select一个默认通知声音。 这份清单是从哪里来的,有没有办法让我在申请表中显示相同的清单?
我有这个代码: Notification notif; // Build notification Notification.Builder notifBuilder = new Notification.Builder(context); notifBuilder.setContentIntent(pendingIntent); notifBuilder.setContentTitle(title); notifBuilder.setSmallIcon(icon_resId); notifBuilder.setContentText(ne.getCaption()); notifBuilder.setDefaults(Notification.DEFAULT_ALL); notifBuilder.setAutoCancel(autocancel); notifBuilder.setWhen(System.currentTimeMillis()); notif = notifBuilder.build(); 并在Android 4.4中正常工作。 但是,在Android 5.0中,状态栏中显示的图标是白色方块。 设备locking时出现的新“通知主体”中显示的图标是正确的。 在http://developer.android.com/reference/android/app/Notification.Builder.html中 ,我没有看到关于API级别21中通知图标的新内容
案例研究:我需要一个将在android上添加通知的程序。 当有人点击通知时,应该引导他们进行第二个活动。 我已经build立了一个代码。 该通知应该工作,但由于某种原因,这是行不通的。 Notification没有显示。 不知道我错过了什么。 这些文件的代码: Notification n = new Notification.Builder(this) .setContentTitle("New mail from " + "test@gmail.com") .setContentText("Subject") .setContentIntent(pIntent).setAutoCancel(true) .setStyle(new Notification.BigTextStyle().bigText(longText)) .build(); NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); // Hide the notification after its selected notificationManager.notify(0, n);
我想实现与Gmail现在相同的function。 当新的电子邮件到达或新的聊天来了,通知popup窗口出现,如果你点击它,带有Gmail的选项卡变得焦点。 我有这个代码: var n = window.webkitNotifications.createNotification('ico.gif', 'Title', 'Text'); n.onclick = function(x) { this.cancel(); }; n.show(); 当我点击通知时,它就会消失。 现在我需要添加一些代码到onclick函数来调出并关注创build此通知的页面。 我知道这是可能的,因为GMail做得非常好。 但是我没有成功查看Gmail源代码(它们被简化和混淆)。 任何人都知道如何做到这一点?
我只收到一个通知,如果有另一个通知来,它将取代以前的一个,这里是我的代码 private static void generateNotification(Context context, String message, String key) { int icon = R.drawable.ic_launcher; long when = System.currentTimeMillis(); NotificationManager notificationManager = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); Notification notification = new Notification(icon, message, when); String title = context.getString(R.string.app_name); Intent notificationIntent = new Intent(context, FragmentOpenActivity.class); notificationIntent.putExtra(key, key); // set intent so it does not start a new activity […]
我写了一个简单的Android应用程序,显示一个自定义通知像这样: Context context = getApplicationContext(); NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); Notification notification = new Notification( R.drawable.icon, title, System.currentTimeMillis()); Intent notificationIntent = new Intent( context, this.getClass()); notificationIntent.putExtra("com.mysecure.lastpage", "SECURECODE"); PendingIntent pendingIntent = PendingIntent.getActivity( context , 0, notificationIntent, 0); notification.flags = notification.flags | Notification.FLAG_ONGOING_EVENT; notification.contentView = new RemoteViews(context.getPackageName(), R.layout.notifypbar); notification.contentIntent = pendingIntent; notification.contentView.setTextViewText(R.id.notifypb_status_text, text); notification.contentView.setProgressBar(R.id.notifypb_status_progress, 100, (int)(100*progress), false); manager.notify(104, […]
我的应用程序显示一些通知,并根据用户的喜好,它可能会使用通知中的自定义布局。 它运作良好,但有一个小问题 – 文字颜色 。 股票Android和几乎所有的制造商皮肤使用黑色文本对通知文本的浅色背景,但三星不:他们的通知下拉有一个黑暗的背景,默认通知布局中的文本是白色的。 所以这会导致一个问题:不使用任何花哨布局的通知显示正常,但是使用自定义布局的通知很难阅读,因为文本是黑色的,而不是默认的白色。 即使官方文档只是为TextView设置#000颜色,所以我找不到任何指针。 一个用户很友善地截取了这个问题的截图: 那么如何在我的布局中使用设备的默认通知文字颜色 ? 我宁愿不动手改变基于手机型号的文本颜色,因为这需要大量的更新,而使用自定义ROM的人可能仍然会遇到问题,这取决于他们使用的皮肤。