私は自分のアプリでURLスキームをいじっています。info.plistに必要なアイテムを追加するだけで、簡単にアプリを開くことができます。この現在のURL「myappname://」はユーザーを最初のビューコントローラーFirstTableViewControllerに移動しますが、ユーザーを特定のビューコントローラーに移動できるようにそのURLスキームを変更できるかどうか疑問に思いました。 ThirdTableViewControllerなど。これをLaunchCenterのような便利な機能として使用します。
5 に答える
これを見てみてください:カスタム URL スキーム
これが役に立つことを願っています
この投稿は少し古いですが、チェックされた回答が正しくないため、iOS 5 + に役立つかもしれません。
AppDelegate には、navigationController プロパティがありません。
代わりに AppDelegate.m で行うことができます:
enter code here
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]];
UINavigationController *navController = (UINavigationController *)self.window.rootViewController;
[navController presentModalViewController:controller animated:YES];
return YES;
}
...AppDelegate.m 内
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]];
[self.viewController presentModalViewController:controller animated:YES];
[controller release];
return YES;
}
こんにちは、私の解決策です。
「application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool」イベントで呼び出されたナビゲーション関数を呼び出すことができる場合 (遅れて)、特定のアプリ内のページは、呼び出される前に実行されていません。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Actived keyboard avoider
changeAppereance()
delay(1) {
deeplink = Deeplink()
self.manageNavigation(launchOptions: launchOptions)
self.navigate()
}
return true
}
private func manageNavigation(launchOptions: [UIApplicationLaunchOptionsKey: Any]?) {
if let url = launchOptions?[UIApplicationLaunchOptionsKey.url] as? URL { //Deeplink
print(url.absoluteString)
deeplink = Deeplink()
deeplink?.url = url
}
else if let activityDictionary = launchOptions?[UIApplicationLaunchOptionsKey.userActivityDictionary] as? [AnyHashable: Any] { //Universal link
for key in activityDictionary.keys {
if let userActivity = activityDictionary[key] as? NSUserActivity {
if let url = userActivity.webpageURL {
deeplink = Deeplink()
deeplink?.url = url
}
}
}
}
}
open func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
print(url.absoluteString)
deeplink = Deeplink()
deeplink?.url = url
navigate()
return true
}
はい、URL スキームを変更して、ユーザーを任意のビューコントローラーにジャンプできるようにすることができます。私は通常のリンクとディープ リンクを使用して実装しました https://hokolinks.com/
。hoko リンクのディープ リンクにより、URL スキームを変更でき、その URL でデータを送信することもできます。
Hoko Link を使用して iOS SDK を統合する - アプリに URL スキームを追加する - SDK のセットアップ HOKO オープン ソース SDK をアプリ (iOS 5 以降のみ) に統合するには、3 つの簡単な手順に従う必要があります (cocoapods を使用するか、手動で実行します)。 .
CocoaPods の使用
1- システムに CocoaPods をインストールする
2- Xcode プロジェクト フォルダーを開き、次の内容で Podfile という名前のファイルを作成します。
pod 'Hoko', '~> 2.3.0' 3- pod install を実行し、CocoaPods が HOKO SDK をインストールするのを待ちます。この時点から、.xcodeproj ファイルを使用する代わりに、.xcworkspace の使用を開始する必要があります。
手動統合
1- Hoko SDK をダウンロードします。
2- Hoko フォルダーをプロジェクトにドラッグします。
3- プロジェクトに SystemConfiguration.framework と zlib.dylib がまだ含まれていない場合は、それらも必ず追加してください。
SDK を Swift プロジェクトに統合する
HOKO SDK は Objective-C で書かれているため、Swift コードで使用するには、手動でブリッジング ヘッダー ファイルをプロジェクトに追加する必要があります。
1- ファイル > 新規 > ファイル... > iOS > ソース > ヘッダー ファイル
2- そのヘッダー ファイルに YourAppName-Bridging-Header.h という名前を付けます
3- そのヘッダー ファイル内で #import をインポートします
4- プロジェクトに移動 > ビルド設定 > Objective-C ブリッジ ヘッダーを検索 > ルート フォルダーからブリッジ ヘッダー ファイルへのパスを追加 (例: MyApp/MyApp-Bridging-Header.h)
アプリに URL スキームを追加する
次に、アプリのカスタム URL タイプを定義する必要があります (まだ持っていない場合)。Xcode プロジェクト設定を開き、[情報] タブで [URL タイプ] セクションを展開します。URL タイプをすでに構成している場合は、この手順を省略できます。
このセクションが空の場合は、「+」アイコンをクリックして新しい URL タイプを追加します。「hoko://」経由でアプリを開きたいとしましょう。したがって、URL スキームに「hoko」と入力する必要があります。
また、この URL タイプに一意の識別子を割り当てる必要があります。Apple では、逆引き DNS 表記を使用して、タイプ間で名前の競合が発生しないようにすることをお勧めします。この例では、「com.hoko.app」を使用します。
「hoko」などのダッシュボードからアプリを作成する際に、URL スキームの入力を求められるため、URL スキームを書き留めておいてください。
URL スキーム
関連付けられたドメイン (ユニバーサル リンク) のセットアップ - iOS 9.0+
アプリが Apple によって新しく導入された Universal Links を完全にサポートするには、アプリケーション ターゲットの [機能] タブ内の [関連付けられたドメイン] セクションで新しいエントリを有効にして追加する必要があります。「+」ボタンをクリックし、次の値で新しいエントリを追加します: applinks:myapp.hoko.link。myapp は、アプリの Hoko リンク用に選択した Hoko サブドメインです。独自のリンク ドメインを持つこともできます (詳細については、サブドメイン セクションをご覧ください)。
URL スキーム
SDK のセットアップ
次の行を AppDelegate クラスの applicationDidFinishLaunching メソッドに追加します (Objective-C を使用している場合は、#import を使用して HOKO クラスをインポートすることを忘れないでください)。
Objective-C Swift #import
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[Hoko setupWithToken:@"YOUR-APP-TOKEN"];
// The rest of your code goes here...
return YES;
}
スマート リンクでカスタム ドメインを使用している場合は、次のように setupWithToken:customDomain: を使用して iOS SDK をセットアップする必要があります。
Objective-C Swift #import
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[Hoko setupWithToken:@"YOUR-APP-TOKEN"
customDomain:@"your.custom.domain.com"];
// The rest of your code goes here...
return YES;
注: application:didFinishLaunchingWithOptions: delegate メソッドで必ず YES を返して、アプリを開く着信ディープ リンクを処理できるようにしてください。NO を返すと、リクエストがブロックされます。
Hoko Link SDK を使用してモバイル ディープ リンクを設定する