我正在使用Phonegap 4.2(基于Cordova 5.0)来创建跨平台应用程序.
该应用程序适用于Android和iOS.
当用户加载应用程序时,他位于index.html
.从那里我可以访问各种JavaScript方法,raw-,基于Cordova-我碰巧使用jQuery v1.11.1.
当应用程序收到推送通知时,应用程序必须能够访问location
有效负载中的属性,并从那里访问特定提及的目标(例如," /sf/ ").我这样做.然后,用户要么被重定向到该特定位置,这是一个网站(不打开浏览器,即离开应用程序),要么将该网站包含在索引文件中并替换它的内容.
使用iFrames
似乎不是一个选项,只是简单地将网站包含在索引文件中,因为网站只是显示为空白或其他一些问题 - 虽然我可能错了,但这有点偏离主题(可能会修复整个问题,我即将出席).
在阅读了一些文章(antonylees,Stackoverflow等)之后,我找到了简单地使用window.location.replace(externalUrl);
访问该网站的解决方案.它工作得很好.(请注意,构建网站并将其包装到我的应用程序中不是一个选项,因为它太重了).
到现在为止还挺好
我正在使用PushPlugin Cordova插件来处理推送通知.一切都建立起来并且有效; 我收到推送通知.
为了能够处理(即处理)推送通知,我已经onNotification
为Android和iOS 注册了事件监听器.
在处理到达的推送通知时,我必须考虑三种情况:
我的问题
场景1.和2.工作正常,因为我可以访问附加的通知侦听器,并且它们可以处理有效负载并实现我随负载一起发送的位置属性,以确定用户被重定向到的位置.
但是,在场景3中,用户已被重定向到索引文件(以及外部网站),从技术上讲是重定向到索引的范围,因此从现在开始,我不再能够访问索引文件中可用的方法,包括onNotification
方法.
因此,当他收到推送通知时,我无法将用户重定向到新位置.
所以我的问题是:
离开索引文件后,如何处理新到的推送通知有效负载?是否有更好的替代方案可以简单地将网站包含在索引中,从而使我们在需要时可以使用以前定义的方法?
谢谢.
编辑
我已经向我指出,InAppBrowser插件可能通过向浏览器提供回调函数或代码注入来提供我正在寻找的东西.今晚我会尝试并带回报告,与此同时,如果你碰巧对这种情况有更好的线索,我会很感激你的答案:)
我在Laravel文档中看到了这个例子:
Blade::extend(function($view, $compiler)
{
$pattern = $compiler->createMatcher('datetime');
return preg_replace($pattern, '$1<?php echo $2->format(\'m/d/Y H:i\'); ?>', $view);
});
Run Code Online (Sandbox Code Playgroud)
但我似乎并不理解它,有时候网上的例子包括3美元.
我没有通过谷歌搜索找到合适的答案,我感谢任何帮助.
我正在使用 NuGet 包AsyncPoco v1.2,官方PetaPoco的异步分支——“适合你的 POCO 的一个小 ORM东西”。选择的 DBRM 是 Oracle,但这无关紧要。
到目前为止,经典的 PetaPoco 包一直在工作,但我的问题是 AsyncPoco 包没有使用Column属性的值,而是完全忽略它并简单地使用属性名称作为直接列标识符。
例子:
我创建了 Poco
[PrimaryKey("ID_COL", SequenceName = "SCHEMA.SCHEMA_TABLE_SEQ")]
[TableName("SCHEMA.SCHEMA_TABLE")]
public class PocoModel
{
[Column("ID_COL")]
public long Id { get; set; }
[Column("NAME_COL")]
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我为所需的属性赋值,然后尝试执行 InsertAsync
public async Task InsertPoco(PocoModel model, DbConnection conn)
{
var taskCompletionSource = new TaskCompletionSource<bool>();
using (var database = new AsyncPoco.Database(conn))
{
await database.InsertAsync(model);
taskCompletionSource.TrySetResult(true);
}
await taskCompletionSource.Task;
}
Run Code Online (Sandbox Code Playgroud)
但是,我在尝试 …