|
在游戏开发中我们肯定会遇到和H5界面交互的情况,那这种情况是怎么实现的呢?
答案就是通过URL scheme技术。
一、什么是Scheme?
scheme是一种页面内跳转协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便跳转app中的各个页面;通过scheme协议,服务器可以定制化告诉App跳转那个页面,可以通过通知栏消息定制化跳转页面,可以通过H5页面跳转页面等。
二、怎么实现?
让我们看看在安卓和IOS系统中的实现方式
1、安卓系统
(1)、在Mainefest配置文件中配置需要用scheme协议跳转的Activity
<!-- scheme协议 -->
<activity
android:name=&#34;.SchemeActivity&#34;
android:label=&#34;@string/app_name&#34;>
<!-- 要想在别的App上能成功调起App,必须添加intent过滤器 -->
<!-- 协议部分,随便设置 -->
<intent-filter>
<!--协议部分,随便设置-->
<data android:scheme=&#34;scheme&#34; android:host=&#34;mtime&#34; android:path=&#34;/goodsDetail&#34; />
<!--下面这几行也必须得设置-->
<category android:name=&#34;android.intent.category.DEFAULT&#34;/>
<action android:name=&#34;android.intent.action.VIEW&#34;/>
<category android:name=&#34;android.intent.category.BROWSABLE&#34;/>
</intent-filter>
</activity>
(2)、模拟从网络中获取scheme协议的url
public class MainActivity extends AppCompatActivity {
private TextView btnSchemeTv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnSchemeTv = (TextView) findViewById(R.id.btn_scheme_tv);
btnSchemeTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String url = &#34;scheme://mtime/goodsDetail?goodsId=10011002&#34;;
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse(url));
startActivity(intent);
}
});
}
}
(3)、获取scheme协议参数
public class SchemeActivity extends Activity {
private static final String TAG = &#34;SchemeActivity&#34;;
private TextView schemeTv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scheme);
schemeTv = (TextView) findViewById(R.id.scheme_tv);
Uri data = getIntent().getData();
Log.i(TAG, &#34;host = &#34; + data.getHost() + &#34; path = &#34; + data.getPath() + &#34; query = &#34; + data.getQuery());
String param = data.getQueryParameter(&#34;goodsId&#34;);
schemeTv.setText(&#34;获取的参数为:&#34; + param);
}
}
在这里 Android也提供了另外一个类 WebViewClient 来帮助我们处理回调的接口,这样就不用在onCreate 中 处理了。大家可以了解下。
2、IOS系统
(1)配置URL Scheme
打开工程,点击项目名称,找到info条目,在info条目下,找到URL Types
(2)验证App的调起
使用上述所说的schemeUseApp://在浏览器中进行测试。在浏览器中输入schemeUseApp://,点击搜索。
(3)不同应用之间,带参数的跳转。
在跳转的 URL scheme中可以添加参数,比如:shemeUseApp://ipOrYuming:8080/path?param1=xxx&param2=yyy。
在工程的AppDelegate.m文件中,重写方法- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options,并在方法中进行URL的分析拆解,就可以得到相关的参数。
参考链接:
iOS中使用Scheme实现不同App之间的跳转
Android scheme解析
iOS实现在webview页面内点击链接,跳转指定App - 那一抹风情 - 博客园
WebView-WebViewClient详解_牛八少爷的博客-CSDN博客_webviewclient |
|