在NativeScript中访问iOS通用链接中的查询参数

时间:2018-08-04 02:18:34

标签: ios url nativescript deep-linking

问题:如何使用urlhandler插件从NativeScript应用中的iOS通用链接访问查询参数(例如?id = bogus&time = now)?

我正在开发一个包含nativescript-urlhandler插件的javascript NativeScript应用程序。我需要能够通过短信接收深层链接,打开应用程序,并访问链接的完整URL。这在Android上工作正常,但在iOS上却无法正常工作。

在iOS上,深层链接会打开应用程序,但不会触发handleOpenURL函数。我已经进行了数小时的搜索,并且似乎似乎是url处理程序插件需要处理appDelegate的ContinueUserActivity。但是,我不知道如何取得进展。

相关参考文献:

https://medium.com/@abhimuralidharan/universal-links-in-ios-79c4ee038272

https://developerinsider.co/handle-query-parameters-in-universal-links/

iOS Universal Links and GET parameters

我相信就应用程序的设置和apple-app-site-association文件而言,我已经准备就绪。就像我说的那样,深层链接确实会打开iOS应用程序,我只是无法获得可以访问链接上传递的数据的方式的控制权。

我非常感谢任何见解或指点。

2 个答案:

答案 0 :(得分:1)

根据{N} doc,我最终可以通过为continueUserActivity指定自定义UIApplicationDelegate来完成此工作,而无需修改urlhandler插件。

这是app.js中有问题的代码,它可能使我省下了三天的时间来解决其他问题:

// Handle entry via universal link on iOS 
// See https://docs.nativescript.org/core-concepts/application-lifecycle#ios-uiapplicationdelegate 
// See https://medium.com/@abhimuralidharan/universal-links-in-ios-79c4ee038272
if (!global.isAndroid) {
  const MyDelegate = (function (_super) {
    __extends(MyDelegate, _super);
    function MyDelegate() {
      _super.apply(this, arguments);
    }
    MyDelegate.prototype.applicationContinueUserActivityRestorationHandler = function (application, userActivity) {
      if (userActivity.activityType === NSUserActivityTypeBrowsingWeb) {
        routeUrl(userActivity.webpageURL);
      }
      return true;
    };
    MyDelegate.ObjCProtocols = [UIApplicationDelegate];
    return MyDelegate;
  })(UIResponder);
  application.ios.delegate = MyDelegate;
} 

答案 1 :(得分:0)