簡體   English   中英

如何從Watchkit傳遞NSURL-> Native Cordova應用程序和使用Java打開瀏覽器

[英]How to Pass an NSURL from Watchkit - > Native Cordova app & open browser with Javascript

我有一個可工作的cordova應用程序,並已構建了Watchkit應用程序。 意識到我無法稱呼本機應用程序為前台或無法完成其內部工作時,我認為使用Handoff可以簡單地通過Safari將用戶發送到網頁,該網頁實際上可以使應用程序中的代碼無效並處理URL查詢字符串參數。 所以我寫了一個例程,基本上可以做到這一點:

   var URLwithQuery = "http://www.example.com?query="+QueryVar

   var urlPath: String = URLwithQuery
   var url: NSURL = NSURL(string: urlPath)!

   updateUserActivity("com.example.www.hellobrowser", 
           userInfo: ["name":"WhereAmI"], webpageURL: url)

現在,我沒有手表,並且模擬器不支持交接,因此無法測試。 但是我懷疑這是否行得通:我已經在本機應用程序的根info.plist中手動插入了NSUserActivityTypes數組和“ hellobrowser”活動,但這是未公開的領域,盡管所有內容都能編譯和運行,但我不知道如果它實際上觸發了切換,直到我可以在實際手表上運行它。 墨菲定律說它將失敗。

一種替代方法是將NSURL以某種方式傳遞回Cordova並使用

window.open('http://www.example.com?Query='+QueryVar, '_system');

為此,我使用了Cordova -Watchkit插件該插件允許在Watchkit擴展和cordova應用程序中的javascript之間傳遞JSON對象。 因此,在本機應用程序方面,我將實現此消息傳遞示例的版本以傳遞字符串化的NSURL(除了該示例是iPhone-> iPhone而不是Watchkit-> iPhone):

applewatch.init(function (appGroupId) {
    alert(appGroupId);

    applewatch.addListener("myqueue", function(message) {
        alert("Message received: " + message);
    });

    applewatch.sendMessage("test", "myqueue");
});

但是,我對傳遞JSON對象不了解,並且沒有關於Watchkit應用或擴展中的Swift代碼看起來像將NSURL傳遞回該偵聽器的示例。

我懷疑有更簡單的方法可以做到這一點! 如果我可以從Watchkit應用程序中以字符串形式獲取該NSURL,然后將其輸入到本機應用程序的javascript中,那我就很高興了。

在您的WatchKit擴展WKInterfaceController ,您將要引用MMWormhole庫(已編譯並包含在插件中),並執行以下操作:

var wormhole: MMWormhole!

wormhole = MMWormhole(applicationGroupIdentifier: "group.com.hellobrowser",
    optionalDirectory: nil)

wormhole.listenForMessageWithIdentifier("myqueue", listener: yourHandler)

然后通過Apple Watch插件從Cordova應用發送消息,以便WatchKit Extension偵聽器將其提取:

applewatch.init(function () {
    applewatch.sendMessage("test", "myqueue");
}, null, "group.com.hellobrowser");

另外,如果您想要設置可從Cordova應用程序和WatchKit Extension讀取/寫入的值,則可能要使用NSUserDefaults ,因為自發布此問題以來,該方法僅在插件中實現。

我希望這對您有所幫助,當我熟悉並通過Apple認可這些方法時,將提供完整的示例應用程序或詳細的博客文章。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM