【Unity】ブラウザで開くiOSアプリの設定方法と値の転送

        iOSアプリは、Apple携帯電話でURL_Schemeを設定し、ブラウザーでリクエストヘッダーをURL_Scheme://に変更することで、対応するアプリケーションを直接開くことができます(対応するアプリがインストールされていない場合、無効な指示を含むポップアップボックスが表示されますただし、指定したアプリケーションにジャンプしてダウンロードできます。特定のjsロジックは、このメモを参照してくださいhttps://blog.csdn.net/ssssssilver/article/details/109730514

        図に示すように、Unityがxcodeプロジェクトをパッケージ化した後、URL_Schemeの特定の設定をxcodeプロジェクトの情報に設定する必要があります。

         URL_Typesを設定すると、プロジェクトのルートディレクトリのinfo.plistで対応するノード構成を確認できます。

 

        URL_Identifierは、アプリケーションの一意の識別子を参照する必要があります。URL_Schemesは、アプリケーションが複数のURL_Shemeを設定できることを意味する必要があります。ここでは、test_schemeに設定し、ブラウザでtest_scheme://と入力したら、[OK]を押して対応するパッケージを開きます。でる。

        アプリケーションを開くメソッドが実装されており、値を渡す必要があります。目標は、情報の文字列test_scheme:// param1 = 1&param2 = 2を入力することであり、param1 = 1&param2 = 2の文字列はで検出できます。 Unityのアプリケーション。次に、ロジックに基づいてページジャンプなどのカスタム操作を実行します。

       最初に、メソッド参照を1で定義する必要があります。このメソッドは、呼び出すxcodeに提供されます。

        public void IosCallFunction(string parmaters)
        {
            Debug.Log("url_scheme传过来的字符串为: " + parmaters);
        }

       同時に、このメソッドのクラスをMainCameraにマウントして、指定されたオブジェクトに1つにマウントされたクラスのメソッドをSendMessageを介してxcodeで呼び出すことができるようにする必要があります。

       前の手順を完了したら、Unityプロジェクトをxcodeプロジェクトにパッケージ化し、UnityAppController.mmクラスを見つけます。具体的な場所は以下の通りです

このクラスで対応するopenURLクラスを見つけます。Xcodeは、このクラスを介して開くurl_schemeのロジックを処理します。リターンが戻る前に、UnitySendmessageメソッドを介してURLの値をUnityに戻します。これにより、上記のUnityで作成されたクラスをトリガーできます。コードは以下のように表示されます

// UIApplicationOpenURLOptionsKey was added only in ios10 sdk, while we still support ios9 sdk
- (BOOL)application:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary<NSString*, id>*)options
{
    id sourceApplication = options[UIApplicationOpenURLOptionsSourceApplicationKey], annotation = options[UIApplicationOpenURLOptionsAnnotationKey];

    NSMutableDictionary<NSString*, id>* notifData = [NSMutableDictionary dictionaryWithCapacity: 3];
    if (url)
    {
        notifData[@"url"] = url;
        UnitySetAbsoluteURL(url.absoluteString.UTF8String);
    }
    if (sourceApplication) notifData[@"sourceApplication"] = sourceApplication;
    if (annotation) notifData[@"annotation"] = annotation;

    AppController_SendNotificationWithArg(kUnityOnOpenURL, notifData);
    

    URLString = [url absoluteString];
        // 传值给unity
        //Main Camera指unity场景中的Main Camera物体
        //IosCallFunction指在Main Camera中挂载的类里面的IosCallFunction方法
        //URLString指上面这方法需要传的值
    UnitySendMessage( "Main Camera", [@"IosCallFunction" UTF8String], [URLString UTF8String]);
    return YES;
}

        この場合、URLを介してiOSアプリケーションを開くと、url_schemeのパラメーターをunityメソッドに戻して、同時に処理することができます。

おすすめ

転載: blog.csdn.net/ssssssilver/article/details/110205969