应用未运行时的通用链接

时间:2016-03-29 11:49:17

标签: ios objective-c ios9 ios-universal-links

我正在我的应用中实施通用链接。每个东西都适合我,除非应用程序没有在后台运行。在这种情况下,我如何在我的应用程序中打开特定页面? iOS启动我的应用程序,但我没有得到任何回调

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler
在这个函数中,我没有得到任何这个行的网址

NSURL *launchURL = [launchOptions valueForKey:UIApplicationLaunchOptionsURLKey]; 在里面

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions此功能。

有没有人知道如何获取启动我的应用程序的网址。

由于

4 个答案:

答案 0 :(得分:2)

您可以通过这种方式访问​​您的网址...

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    bus.register(this);
}

@Override
public void onDestroy() {
    super.onDestroy();
    bus.unregister(this);
}

但为了更好地使用,您必须验证此URL并在可以管理的情况下返回YES

例如......

    NSDictionary *aux = [launchOptions objectForKey:UIApplicationLaunchOptionsUserActivityDictionaryKey];
    if (aux) {
         NSUserActivity *activity = [aux objectForKey:@"UIApplicationLaunchOptionsUserActivityKey"];
         NSString *urlString = activity.webpageURL.absoluteString;
    }

..之后的方法

if([urlString hasPrefix:@"https://myUrl.com"]) {
  return YES;
}

将被称为

答案 1 :(得分:1)

使用您的应用打开通用链接时

 - (BOOL)application:(UIApplication *)app
        openURL:(NSURL *)url
        options:(NSDictionary<NSString *,
                         id> *)options
如果是这种情况,则使用Universal Link作为参数和选项调用

。查看apple docs了解详情。

答案 2 :(得分:0)

您需要实施

- (BOOL)application:(UIApplication *)application  openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation{

   url= yourappurl://with some app link data
   sourceApplication= //who called your application

  }

例如,如果您的应用程序是从facebook messenger调用的,那么您将获得

  sourceApplication=@"com.facebook.messenger"

答案 3 :(得分:0)

在带有 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { } 文件的Swift 5中,它将调用:

Example.objects.all().update(unset__tags__words=1)

当您的应用未在后台运行且用户单击通用链接时。