小编Tij*_*jme的帖子

Apple 推送通知到达 MacOS,但不在应用程序本身中

我正在运行一个 iOS 一次性密码 (OTP) 应用程序和一个相应的 MacOS 配套应用程序。在 iOS 应用程序中,用户可以点击一次性密码,从而导致 iOS 应用程序向我的服务器发送 HTTP 请求。我的服务器反过来会向 MacOS 应用程序发送一条推送通知,其中包含所点击的一次性密码。当然全部都是加密的,但这与问题无关。

iOS application -> HTTP request -> My server -> APS -> MacOS application
Run Code Online (Sandbox Code Playgroud)

最近,在用户开始升级到 MacOS Ventura 后,MacOS 应用程序停止接收通知。我可以看到(并且我已经验证)从 iOS 应用程序到服务器、再到 APS 的过程是有效的。APS 返回200 OK成功状态,表明推送通知已发送到 MacOS 设备。

但是,在我的 MacOS 应用程序中,函数中未收到通知didReceiveRemoteNotification(我将其包含在下面)。

/// Sent to the delegate when a running application receives a remote notification.
///
/// - Parameter application: The application that received the remote notification.
/// - Parameter userInfo: A dictionary that …
Run Code Online (Sandbox Code Playgroud)

macos apple-push-notifications swift

16
推荐指数
0
解决办法
1477
查看次数

CSS属性名称中的'font-'vs'text-'

CSS属性名称中使用的术语'text'和'font'有什么区别?它们是相同的意思,还是以CSS开头的一个属性名称font-和一个以text-?开头的语言之间存在语义差异?

例如,为什么我们有这些CSS属性:

font-size: 34px;
text-decoration: underline;
Run Code Online (Sandbox Code Playgroud)

而不是像这样命名?

font-size: 34px;
font-decoration: underline;
Run Code Online (Sandbox Code Playgroud)

或者像这样?

text-size: 34px;
text-decoration: underline;
Run Code Online (Sandbox Code Playgroud)

是否有方式的语义差别font-text-正在这里使用的,或者是前缀的选择完全是任意的?

css terminology

15
推荐指数
1
解决办法
6299
查看次数

从Gmail API获取电子邮件的直接URL(列表消息)

我正在从Node.JS中的Google Gmail API中检索邮件,但我无法生成或检索到电子邮件的直接链接.

目前,我使用以下代码:

var link = 'https://mail.google.com/mail/u/0/#inbox/' + messageContent.threadId;

但正如你所看到的,它总是导航到用户的主要收件箱(/u/0/).我尝试链接的电子邮件位于我的第二个和第三个收件箱中.

我尝试使用get message调用获取电子邮件的收件箱号码,但不幸的是它没有返回该数据.

我也尝试了下面这段代码,但它也没有用.它只是加载我的主要收件箱.

var link = 'https://mail.google.com/mail/#inbox/' + messageContent.threadId;

有人知道如何生成电子邮件的正确和直接链接吗?

提前致谢.


测试用例

首先,登录Google中的两个或多个帐户.如下图所示,我登录了3个帐户.第一个(在顶部)是我的主要帐户.其他的是二级账户.

Google帐户

与我的主Gmail的直接链接是:https://mail.google.com/mail / u/0 / #inmpbox /

与我的第二个帐户的直接链接是:https: //mail.google.com/mail / u/1 / #inmpbox /

我的第三个帐户和最后一个帐户的链接是:https: //mail.google.com/mail / u/2 / #inmpbox/

这些数字取决于您登录帐户的顺序.您登录的第一个帐户将始终是您的主帐户.

所以我们以2527bfcqed7d54c1消息ID为例.唯一剩下的就是生成与消息的直接链接,但问题是,我们只知道它链接到的电子邮件,而不是收件箱的数量(例如/u/2).

因此,如果邮件存在于收件箱中,/u/2我们无法获得直接链接.由于API未返回收件箱编号,https://mail.google.com/mail/#inbox/2527bfcqed7d54c1因此始终会重定向到主收件箱/u/0.

gmail google-api node.js gmail-api

12
推荐指数
1
解决办法
2343
查看次数

PhantomJS/WebKit中奇怪的JavaScript行为

我正在使用Python构建一个应用程序,用于检查某个Web应用程序是否容易受到AngularJS Sandbox Escape/Bypass的影响.

下面是它的工作原理.

我的应用程序http://localhost使用以下内容启动本地Web服务器().

<!DOCTYPE html>
<html>
    <head>
        <script src="https://code.angularjs.org/1.2.19/angular.min.js"></script>
    </head>
    <body ng-app="">
        {{c=toString.constructor;p=c.prototype;p.toString=p.call;["a","open(1)"].sort(c)}}
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我正在使用的Sandbox Escape有效负载{{c=toString.constructor;p=c.prototype;p.toString=p.call;["a","open(1)"].sort(c)}},应该打开一个新窗口open(1).

启动Web服务器后,它使用Selenium(使用PhantomJS作为驱动程序)来检查是否由于AngularJS Sandbox Escape而打开了一个新窗口.

capabilities = dict(DesiredCapabilities.PHANTOMJS)
capabilities["phantomjs.page.settings.XSSAuditingEnabled"] = False

browser = webdriver.PhantomJS(
    executable_path="../phantomjs/win-2.1.1",
    desired_capabilities=capabilities,
)

browser.get("http://localhost/")

return len(browser.window_handles) >= 2
Run Code Online (Sandbox Code Playgroud)

我面临的问题

PhantomJS无法打开新窗口.当我导航到http://localhost使用谷歌浏览器时,它打开一个新窗口.

这是PhantomJS控制台日志(包含两个错误):

[
    {
        "level":"WARNING",
        "message":"Error: [$interpolate:interr] http://errors.angularjs.org/1.2.19/$interpolate/interr?p0=%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%7Bc%3DtoString.constructor%3Bp%3Dc.prototype%3Bp.toString%3Dp.call%3B%5B'a'%2C'open(1)'%5D.sort(c)%7D%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20&p1=SyntaxError%3A%20Expected%20token%20')'\n (anonymous function) (https://code.angularjs.org/1.2.19/angular.min.js:92)",
        "timestamp":1501431637142
    },
    {
        "level":"WARNING",
        "message":"Error: [$interpolate:interr] http://errors.angularjs.org/1.2.19/$interpolate/interr?p0=%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%7Bc%3DtoString.constructor%3Bp%3Dc.prototype%3Bp.toString%3Dp.call%3B%5B'a'%2C'open(1)'%5D.sort(c)%7D%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20&p1=Error%3A%20%5B%24parse%3Aisecfn%5D%20http%3A%2F%2Ferrors.angularjs.org%2F1.2.19%2F%24parse%2Fisecfn%3Fp0%3Dc%253DtoString.constructor%253Bp%253Dc.prototype%253Bp.toString%253Dp.call%253B%255B'a'%252C'open(1)'%255D.sort(c)\n (anonymous function) (https://code.angularjs.org/1.2.19/angular.min.js:92)",
        "timestamp":1501431637142
    }
]
Run Code Online (Sandbox Code Playgroud)

这是Google Chrome控制台日志(抛出错误但会打开一个新窗口):

Error: [$interpolate:interr] http://errors.angularjs.org/1.2.19/$interpolate/interr?p0=%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%7Bc%3DtoString.constructor%3Bp%3Dc.prototype%3Bp.toString%3Dp.call%3B%5B'a'%2C'open(1)'%5D.sort(c)%7D%7D%20%20%20%20%20%20%20%20%20%20%20%20%0A%0A&p1=Error%3A%20%5B%24parse%3Aisecfn%5D%20http%3A%2F%2Ferrors.angularjs.org%2F1.2.19%2F%24parse%2Fisecfn%3Fp0%3Dc%253DtoString.constructor%253Bp%253Dc.prototype%253Bp.toString%253Dp.call%253B%255B'a'%252C'open(1)'%255D.sort(c)
    at …
Run Code Online (Sandbox Code Playgroud)

javascript webkit google-chrome blink phantomjs

10
推荐指数
1
解决办法
543
查看次数

Phalcon PHP发布链接与JavaScript确认对话框

我正在开发Phalcon PHP(版本1.3.4)的CRUD系统.

我的目标是创建一个链接(删除行),要求确认点击(JavaScript确认框),然后进入(请求类型POST)链接.

因此,假设用户点击"删除行"按钮.

  1. JavaScript确认"您确定要删除此行吗?"
  2. 用户点击"是"
  3. 网页对"/ users/delete/1"进行POST

我知道CakePHP有一个函数(FormHelper :: postLink())就是这样做的.

我想知道Phalcon PHP是否也有这样的功能.

confirm post phalcon

8
推荐指数
1
解决办法
1072
查看次数

CakePHP 3.0中虚拟字段/实体属性上的分页排序链接

我想在CakePHP 3.0中的虚拟字段/实体属性上创建分页排序链接.

在CakePHP 2.x中,我曾经创建一个虚拟字段,然后在该字段上创建一个分页排序链接.但是,在CakePHP 3.0中,虚拟字段已被虚拟实体属性替换.

我有什么方法可以在CakePHP 3.0中使用它吗?

在我的情况下,我有一个first_name和last_name列,它们在虚拟实体属性中组合为full_name .我想对full_name进行排序.

virtual pagination cakephp paginator jquery-ui-sortable

8
推荐指数
1
解决办法
3482
查看次数

CakePHP 3上没有找到"Locale"类问题

我刚从这个链接下载文件,解压缩并尝试执行但是我遇到了这个错误:

Fatal error: Class 'Locale' not found in D:\xampp\htdocs\cake-3-beta-2\vendor\cakephp\cakephp\src\I18n\I18n.php on line 229
Run Code Online (Sandbox Code Playgroud)

我正在运行带有xampp的localhost ...我对beta 1和2有同样的问题.

cakephp cakephp-3.0

6
推荐指数
1
解决办法
1万
查看次数

打开通知后,片段不会更新

我正在构建一个聊天应用程序,我有一个关于我的片段的问题,其中包含所有聊天的列表视图.

当用户收到消息时,聊天列表会更新(显示每个聊天的最后一条消息)(图像1).

当聊天不可见并且在该聊天中收到消息时,用户将收到通知(图2)

此时问题就出现了.当用户点击通知时,聊天列表视图似乎已被破坏.当用户在点击通知后收到另一条消息时,他/她的手机将振动,但聊天列表视图不会更改/更新.

单击通知后,其他视图可以正常工作.

下面是一段处理listview更新的代码.

    protected PacketListener packetListener = new PacketListener() {

    @Override
    public void processPacket(Packet packet) {
        final Message message = (Message) packet;

        if (message.getBody() != null) {
            final String fromName = StringUtils.parseName(message.getFrom());

            runOnUiThread(new Runnable(){

                @Override
                public void run() {

                    Boolean seen = false;
                    if(ChatFragment.currentChat != null && ChatFragment.currentChat.getContact().getUsername().equals(fromName) && VisibilityHelper.appIsVisible() && VisibilityHelper.fragmentIsVisible(ChatFragment.fragmentClassName)) {
                        seen = true;
                    }

                    Long chat_id = chatsDataSource.getChatByContactId(contactsDataSource.getContactByUsername(fromName).getId()).getId();
                    ChatMessage newChatMessage = chatMessagesDataSource.insertChatMessage(chat_id, ConstantHelper.CHAT_MESSAGES_TYPE_RECEIVED, seen, DateHelper.getDatetime(), message.getBody());

                    Log.d("DEBUG", VisibilityHelper.sCurrentFragmentClassName);
                    if(VisibilityHelper.appIsVisible() && …
Run Code Online (Sandbox Code Playgroud)

java android android-notifications android-fragments

5
推荐指数
1
解决办法
904
查看次数