رفتن به مطلب
  • 0

باز شدن برنامه با لینک


DexterFstone

سوال

سلام

چطوری میشه کاری کرد ک با یک لینک برنامه ما باز بشه و اینکه چجوری میشه رویداد براش درنظر گرفت

ک با کلیک روی فلان لینک وارد برنامه بشه و مثلاً یک قابلیتی فعال بشه یا یک جایزه ای بده

لینک ارسال
به اشتراک گذاری در سایت های دیگر

10 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

سالام ودرود

این کار رو از طریق منیفست باید انجام بدین. یه اکتیویتی مخصوص این کار باید بسازید.

 <activity
            android:name=".ui.activity.MainActivity"
            android:configChanges="orientation|screenSize|keyboardHidden"
            android:exported="true"
            android:alwaysRetainTaskState="true"
            android:finishOnTaskLaunch="false"
            android:clearTaskOnLaunch="false"
            android:launchMode="singleTask"
            android:theme="@style/MaterialTheme"
            android:windowSoftInputMode="adjustResize|stateAlwaysHidden">
            <intent-filter
                android:label="@string/open_intent_filter">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data
                    android:host="mydomain.com"
                    android:pathPrefix="/mypath"
                    android:scheme="https" />
            </intent-filter>
        </activity>

مقادیر ارسالی هم توی متد زیر میتونید بگیرید

override fun onNewIntent(intent: Intent?){
        super.onNewIntent(intent)
       val action = intent?.action
        val data = intent?.data?.toString()
   }

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۲/۹/۱۳ در ۰۸:۰۵، DexterFstone گفته است:

ممنون استاد

در تگ دیتا باید لینک داده بشه؟

استاد اگه میشه با این مثال من یک راهنمایی کنید

مقداری رشته ای داریم تحت testsub اینا میخواید داخل لینک باشه وقتی روی لینک کلیک شد وارد اپلیکیشن بشه و رویدادی اتفاق بیوفته

این رشته مدنظر چجوری باید در لینک قرار بگیره

اگر امکانش هست با ی لینک فرضی مثال برام بزنین

زبان جاوا استفاده میکنم

فرض کنیم دامنه تون answercenter.ir هست اول که باید تو منیفست intentfilter زیر رو اضافه کنید.

 <intent-filter
                android:label="@string/open_intent_filter">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data
                    android:host="answercenter.ir"
                    android:pathPrefix="/"
                    android:scheme="https" />
            </intent-filter>
        

 

 بعد هم به شکل زیر دیتا رو بگیرید وقتی اپ باز شد

@Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        String action=intent.getAction();
        String[] data=intent.getDataString().split("/");
        String testSub=data[3];
        Log.e("tag","testsub="+testSub);
    }

 لینک هم باید به این شکل باشه  https://answercenter.com/testsub

لینک ارسال
به اشتراک گذاری در سایت های دیگر

۱ ساعت قبل، محمدرضا شاهپیری گفته است:
 <intent-filter
                android:label="@string/open_intent_filter">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data
                    android:host="answercenter.ir"
                    android:pathPrefix="/"
                    android:scheme="https" />
            </intent-filter>

الان استاد فقط اینا را به اکتیویتی جاری اضافه کنم کافیه و یا حتما باید اکتیویتیه جدا براش در نظر بگیرم طبق چیزی بالاتر گفتید

یعنی اگر به اکتیویتی جاری اضافه کنم دچار مشکل میشم؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

۶ دقیقه قبل، DexterFstone گفته است:

الان استاد فقط اینا را به اکتیویتی جاری اضافه کنم کافیه و یا حتما باید اکتیویتیه جدا براش در نظر بگیرم طبق چیزی بالاتر گفتید

یعنی اگر به اکتیویتی جاری اضافه کنم دچار 

مشکل خاصی که پیش نمیاد فقط باید حواستون باشه که مثلا اگه احراز هویت دارید نباید تو صفحه اصلی بزارید که کاربر بتونه لاگین رو دور بزنه.

به نظرم یه اکتیویتی جدا درنظر بگیرید و اونجا کارتونو با لینک انجام بدین و اکتیویتی رو ببندید و به صفحات دیگه برید. در کل بستگی به منطق برنامتون داره

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۲/۹/۱۲ در ۱۹:۴۵، محمدرضا شاهپیری گفته است:

سالام ودرود

این کار رو از طریق منیفست باید انجام بدین. یه اکتیویتی مخصوص این کار باید بسازید.

 <activity
            android:name=".ui.activity.MainActivity"
            android:configChanges="orientation|screenSize|keyboardHidden"
            android:exported="true"
            android:alwaysRetainTaskState="true"
            android:finishOnTaskLaunch="false"
            android:clearTaskOnLaunch="false"
            android:launchMode="singleTask"
            android:theme="@style/MaterialTheme"
            android:windowSoftInputMode="adjustResize|stateAlwaysHidden">
            <intent-filter
                android:label="@string/open_intent_filter">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data
                    android:host="mydomain.com"
                    android:pathPrefix="/mypath"
                    android:scheme="https" />
            </intent-filter>
        </activity>

مقادیر ارسالی هم توی متد زیر میتونید بگیرید

override fun onNewIntent(intent: Intent?){
        super.onNewIntent(intent)
       val action = intent?.action
        val data = intent?.data?.toString()
   }

 

استاد وقتی از روش بالا استفاده میکنم و یک اکتیویتی میسازم جواب میده ولی وقتی از اکتیویتی جاری خودم استفاده میکنم جواب نمیده

میخواستم بدونم صفت خاصی باید در اکتیویتی باشه یا اینکه صفتی هست که مانعش بشه؟

منیفست من:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.godot.game"
    android:versionCode="1"
    android:versionName="1.0"
    android:installLocation="auto" >

    <supports-screens
        android:smallScreens="true"
        android:normalScreens="true"
        android:largeScreens="true"
        android:xlargeScreens="true" />

    <uses-feature
        android:glEsVersion="0x00030000"
        android:required="true" />

    <application
        android:label="@string/godot_project_name_string"
        android:allowBackup="false"
        android:icon="@mipmap/icon"
        android:appCategory="game"
        android:isGame="true"
        android:hasFragileUserData="false"
        android:requestLegacyExternalStorage="false"
        tools:ignore="GoogleAppIndexingWarning" >

        <!-- Records the version of the Godot editor used for building -->
        <meta-data
            android:name="org.godotengine.editor.version"
            android:value="${godotEditorVersion}" />

        <activity
            android:name=".GodotApp"
            android:label="@string/godot_project_name_string"
            android:theme="@style/GodotAppSplashTheme"
            android:launchMode="singleInstancePerTask"
            android:excludeFromRecents="false"
            android:exported="true"
            android:screenOrientation="landscape"
            android:configChanges="orientation|keyboardHidden|screenSize|smallestScreenSize|density|keyboard|navigation|screenLayout|uiMode"
            android:resizeableActivity="false"
            tools:ignore="UnusedAttribute" >

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
 <intent-filter
                android:label="@string/open_intent_filter">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data
                    android:host="answercenter.ir"
                    android:pathPrefix="/"
                    android:scheme="https" />
            </intent-filter>
        </activity>

    </application>

</manifest>

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

۶ ساعت قبل، DexterFstone گفته است:

استاد وقتی از روش بالا استفاده میکنم و یک اکتیویتی میسازم جواب میده ولی وقتی از اکتیویتی جاری خودم استفاده میکنم جواب نمیده

میخواستم بدونم صفت خاصی باید در اکتیویتی باشه یا اینکه صفتی هست که مانعش بشه؟

منیفست من:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.godot.game"
    android:versionCode="1"
    android:versionName="1.0"
    android:installLocation="auto" >

    <supports-screens
        android:smallScreens="true"
        android:normalScreens="true"
        android:largeScreens="true"
        android:xlargeScreens="true" />

    <uses-feature
        android:glEsVersion="0x00030000"
        android:required="true" />

    <application
        android:label="@string/godot_project_name_string"
        android:allowBackup="false"
        android:icon="@mipmap/icon"
        android:appCategory="game"
        android:isGame="true"
        android:hasFragileUserData="false"
        android:requestLegacyExternalStorage="false"
        tools:ignore="GoogleAppIndexingWarning" >

        <!-- Records the version of the Godot editor used for building -->
        <meta-data
            android:name="org.godotengine.editor.version"
            android:value="${godotEditorVersion}" />

        <activity
            android:name=".GodotApp"
            android:label="@string/godot_project_name_string"
            android:theme="@style/GodotAppSplashTheme"
            android:launchMode="singleInstancePerTask"
            android:excludeFromRecents="false"
            android:exported="true"
            android:screenOrientation="landscape"
            android:configChanges="orientation|keyboardHidden|screenSize|smallestScreenSize|density|keyboard|navigation|screenLayout|uiMode"
            android:resizeableActivity="false"
            tools:ignore="UnusedAttribute" >

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
 <intent-filter
                android:label="@string/open_intent_filter">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data
                    android:host="answercenter.ir"
                    android:pathPrefix="/"
                    android:scheme="https" />
            </intent-filter>
        </activity>

    </application>

</manifest>

 

دوتا <action تعریف کردین. یه دونه باید بزارین. بهتره اکتویتی اصلیتون مثلا اسپلش باشه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۲/۹/۱۴ در ۰۹:۵۱، محمدرضا شاهپیری گفته است:

دوتا <action تعریف کردین. یه دونه باید بزارین. بهتره اکتویتی اصلیتون مثلا اسپلش باشه

استاد شرمنده بازم نشد و مجبور شدم از اکتیویتی جدید استفاده کنم

ی سوال دیگه چجوری میشه دکمه سوییچشا پنهان کرد

Screenshot___Settings.jpg.bf3088c0ad23e3966889bc5a4736ab3b.jpgScreenshot___Settings.jpg.05aed6211c33d5cc075b67e0f484d972.jpg

لینک ارسال
به اشتراک گذاری در سایت های دیگر

استاد مشکل لینک ها حل شد ظاهرا اکتیویتی بازنویسی میشده هنگام کامپایل ی activity-alias ساختم و اینتنت را داخل اون قرار دادم

حالا سوالی که دارم درباره Digital Asset Links هست Digital Asset Links چیه و چجوری پیکربندی و کانفیگش کنم؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

من مراحل گوگل رفتم ولی بازم نشد

اول ک اطلاعات توی منیفست دادم

فایل جیسون هم توی هاست به همن آدرسی که گوگل گفته بود انجام دادم

بازم نشد ممنون میشم راهنمایی کنید

آدرس فایل جیسون

http://digitalstone.freehost.io/.well-known/assetlinks.json

محتوای فایل

[
    {
        "relation": [
            "delegate_permission/common.handle_all_urls"
        ],
        "target": {
            "namespace": "test",
            "package_name": "com.example.test",
            "sha256_cert_fingerprints": [
                "DC:81:68:54:69:66:22:69:3D:81:7C:17:B0:E8:6C:DD:9C:AE:B7:1A:64:BD:1A:E1:1A:1B:57:8D:1B:94:30:2A"
            ]
        }
    }
]

اینتنت در منیفست

<intent-filter android:autoVerify="true">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="http" />
    <data android:host="digitalstone.freehost.io" />
</intent-filter>

چجوری میشه فهمید مشکل از کدوم بخشه؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ممنون استاد

در تگ دیتا باید لینک داده بشه؟

استاد اگه میشه با این مثال من یک راهنمایی کنید

مقداری رشته ای داریم تحت testsub اینا میخواید داخل لینک باشه وقتی روی لینک کلیک شد وارد اپلیکیشن بشه و رویدادی اتفاق بیوفته

این رشته مدنظر چجوری باید در لینک قرار بگیره

اگر امکانش هست با ی لینک فرضی مثال برام بزنین

زبان جاوا استفاده میکنم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...