首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通用链接IOS9

通用链接IOS9
EN

Stack Overflow用户
提问于 2015-09-18 03:16:53
回答 2查看 598关注 0票数 0

苹果似乎正在摆脱通过链接打开应用程序的自定义机制。

使用自定义方案(如果要尝试打开应用程序注册的自定义方案),应用程序将打开,javascript函数handleOpenURL将处理调用。

worklight是否支持IOS9中新的“通用链接”方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-18 04:24:22

通用链接没有作为iOS 9支持的一部分进行测试。如果需要链接,则暂时继续使用自定义方案选项。

编辑:测试并发现正在工作。

票数 0
EN

Stack Overflow用户

发布于 2016-03-14 08:49:50

在我们的项目中,worklight不触发通用链接功能的handleOpenURL功能。

因此,我们使用了以下解决方案:

1)原生层插件

MyAppDelegate+UniversalLinksPlugin.h

代码语言:javascript
复制
#import "rr.h"


@interface MyAppDelegate (UniversalLinksPlugin)

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler;

@end

MyAppDelegate+UniversalLinksPlugin.m

代码语言:javascript
复制
#import "rr.h"
#import <objc/runtime.h>

@implementation MyAppDelegate (UniversalLinksPlugin)

- (BOOL)application:(UIApplication *)application
continueUserActivity:(NSUserActivity *)userActivity
 restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {

    NSLog(@"Universal links plugin: starting application launch handling.");
    // ignore activities that are not for Universal Links
    if (![userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb] || userActivity.webpageURL == nil) {
        return NO;
    }

    NSString* url = [userActivity.webpageURL absoluteString];
    NSLog(@"Universal links plugin: the following url is used for the application launch %@", url);

    NSMutableDictionary *data = [[NSMutableDictionary alloc] init];
    [data setValue:url forKey:@"url"];
    [[WL sharedInstance] sendActionToJS:@"handleURL" withData:data];

    return YES;
}

@end

2) config.xml更新:

代码语言:javascript
复制
<feature name="UniversalLinksPlugin">
   <param name="ios-package" value="UniversalLinksPlugin"/>
</feature>

3) iphone/js/main.js更新:

代码语言:javascript
复制
/**
 * UL links handling
 */
document.addEventListener("deviceready", function() {
    WL.App.addActionReceiver ("ULReceiver", function(received) {
        if (received.action === "handleURL") {
            WL.Logger.debug('Inside handle URL action receiver. Provided url: ' + received.data.url);
            handleOpenURL(received.data.url);
        }
    });

}, false);

就是这个。我真的希望这会对某人有所帮助)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32643257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档