2016-04-22 10 views
6

私はアプリケーションでHandoffを実装しました。アプリがフォアグラウンドまたはバックグラウンドで実行されているときは、Webからアプリへのハンドオフ、またはその逆の場合にうまくいきます。iOS HandoffにlaunchOptionsのNSUserActivityがありませんか?

ただし、アプリが実行されていない場合、ユーザーがアプリをウェブからアプリのハンドオフに起動すると、launchOptions辞書にはUIApplicationLaunchOptionsUserActivityDictionaryKeyが表示されますが、アクティビティへの参照がありません。

参照のスクリーンショット:

enter image description here

あなたは私がNSUserActivityのためだけIDを取得しています見ることができるように。 これはiOS 9のバグですか?

IDを使用してアクティビティへの参照を取得する方法はありますか?

編集、私はこれがOK

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    if (launchOptions && [[launchOptions allKeys] containsObject:UIApplicationLaunchOptionsUserActivityDictionaryKey]) { 
     __block NSUserActivity *activity; 

     NSDictionary *userActivityDictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsUserActivityDictionaryKey]; 
     if (userActivityDictionary) { 
      [userActivityDictionary enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) { 
       if ([obj isKindOfClass:[NSUserActivity class]]) { 
        activity = obj; 
       } 
      }]; 
     } 

     //app was started by URL (deep linking), check parameters 
     if (activity) { 
      NSURL *url = activity.webpageURL; 
      //resume from URL 
     } 
    } 

    return YES; 
} 
+0

hey lefteris;あなたが試したコードを共有してください! –

+0

@SuhasPatilコードが追加されましたが、これは関係がないと思われますが、 – Lefteris

+0

コードが正常に表示されます。別のメソッド(BOOL)アプリケーションを試してみましたか:continueUserActivity:restorationHandlerおよびアクティビティタイプを指定したplistを確認してください。 –

答えて

5

関連しているとは思いませんが、ここでコードが

が、私はアップルにこれについてTSIを提出してきた、そしてこれがあると思われ、ありますバグではなく、設計によるものです。

私の場合は呼び出されていないapplication:continueUserActivity:restorationHandlerデリゲートでアクティビティを再開できます。

私が間違っていたのは、application:didFinishLaunchingWithOptions:メソッドでYESを返す必要があり、NOを返した場合はapplication:continueUserActivity:restorationHandlerが呼び出されないということでした。

私たちはアプリでFBを実装していたので、NOを返す[[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions]を返します。

私はこの

if (launchOptions && [[launchOptions allKeys] containsObject:UIApplicationLaunchOptionsUserActivityDictionaryKey]) { 
     return YES; 
    } 
else { 
     return [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions]; 
} 

application:didFinishLaunchingWithOptions:機能にapplication:continueUserActivity:restorationHandlerデリゲートが正常に呼び出されているとの活動を正常に再開することができる。この方法は、私たちのコードを変更しました。

関連する問題