簡體   English   中英

當應用未在后台運行時,自定義URL方案不起作用

[英]custom URL scheme does not work when app is not running in background

我從safari調用自定義URL來啟動應用程序。 如果應用程序在后台運行,它可以正常工作。 但是,當應用程序未在后台運行但已安裝在設備上時,應用程序無法啟動。 我已經實現了以下兩種方法:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

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

但當應用程序未在后台運行時,它們都不會被調用。

此外,我用Google搜索,發現我們可以在應用未在后台運行時使用以下代碼啟動應用

if ( [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey] != nil ) {
    NSURL *url =(NSURL *)[launchOptions valueForKey:UIApplicationLaunchOptionsURLKey];
    [self application:application handleOpenURL:url];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

但不幸的是, didFinishLaunchingWithOptions也沒有被觸發。 有人有指針嗎?

PS:此問題僅在iPad中出現。它在iPhone上運行正常。

我面臨同樣的問題。

似乎我們的代碼運行得太快了。

插入延遲以運行自定義代碼將解決此問題。

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    [NSTimer scheduledTimerWithTimeInterval:0.5f target:self selector:@selector(yourCustomActions) userInfo:nil repeats:NO];

    return YES;
}

希望能幫助到你

得到你的info.plist並進行必要的更改

  1. 添加新行 - > URL類型
  2. 擴大它
  3. 在第0項中添加新行---> URL方案
  4. 擴大它
  5. 在其下的第0項中,添加您要使用的自定義網址

  6. 在urlTypes - > URL標識符的第0項下添加一行

  7. 在那里提供您的應用程序的包ID

例如:anubhab://stackoverflow.com/

對於上面的自定義URL,您可以將URL Scheme項目0設置為:anubhab

請參閱附圖中的詳細信息 在此輸入圖像描述

我已經按照這些鏈接 希望能幫助到你。 即使我從后台殺了應用程序,它對我也很好。

暫無
暫無

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

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