@norcy/react-native-toolkit 0.1.70 → 0.1.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -39,6 +39,7 @@ const getAppInsideQueryParams = url => {
|
|
|
39
39
|
}
|
|
40
40
|
return ret;
|
|
41
41
|
};
|
|
42
|
+
let GlobalNavigation = null;
|
|
42
43
|
const LinkingManager = exports.LinkingManager = {
|
|
43
44
|
/* 测试用例:
|
|
44
45
|
1. https://norcy.xyz/iread 安卓打开浏览器官网
|
|
@@ -50,7 +51,7 @@ const LinkingManager = exports.LinkingManager = {
|
|
|
50
51
|
7. WebPage?url=https%3A%2F%2Fqq.com App 内跳转
|
|
51
52
|
9. https://qq.com 跳转浏览器
|
|
52
53
|
*/
|
|
53
|
-
openPage:
|
|
54
|
+
openPage: url => {
|
|
54
55
|
if (!url) {
|
|
55
56
|
return;
|
|
56
57
|
}
|
|
@@ -65,8 +66,9 @@ const LinkingManager = exports.LinkingManager = {
|
|
|
65
66
|
// 第二优先级:App 内跳转
|
|
66
67
|
const ret = getAppInsideQueryParams(url);
|
|
67
68
|
if (ret.page) {
|
|
69
|
+
var _GlobalNavigation;
|
|
68
70
|
console.log('App 内跳转', ret);
|
|
69
|
-
|
|
71
|
+
(_GlobalNavigation = GlobalNavigation) === null || _GlobalNavigation === void 0 || _GlobalNavigation.navigate(ret.page, ret.params);
|
|
70
72
|
return;
|
|
71
73
|
}
|
|
72
74
|
|
|
@@ -83,13 +85,14 @@ const LinkingManager = exports.LinkingManager = {
|
|
|
83
85
|
});
|
|
84
86
|
},
|
|
85
87
|
init: navigation => {
|
|
88
|
+
GlobalNavigation = navigation;
|
|
86
89
|
_reactNative.Linking.getInitialURL().then(url => {
|
|
87
90
|
// 此处 url 都是官网开头
|
|
88
|
-
LinkingManager.openPage(
|
|
91
|
+
LinkingManager.openPage(url !== null && url !== void 0 ? url : undefined);
|
|
89
92
|
}).catch(err => console.error('获取初始URL时出错:', err));
|
|
90
93
|
_reactNative.Linking.addEventListener('url', event => {
|
|
91
94
|
// 此处 url 都是官网开头
|
|
92
|
-
LinkingManager.openPage(
|
|
95
|
+
LinkingManager.openPage(event.url);
|
|
93
96
|
});
|
|
94
97
|
}
|
|
95
98
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_queryString","_interopRequireDefault","require","_reactNative","_Tool","obj","__esModule","default","getAppInsideQueryParams","url","ret","page","params","scheme","query","split","queryString","parse","startsWith","ToolkitConfig","AppWebsite","AppScheme","pageName","substring","length","LinkingManager","exports","openPage","
|
|
1
|
+
{"version":3,"names":["_queryString","_interopRequireDefault","require","_reactNative","_Tool","obj","__esModule","default","getAppInsideQueryParams","url","ret","page","params","scheme","query","split","queryString","parse","startsWith","ToolkitConfig","AppWebsite","AppScheme","pageName","substring","length","GlobalNavigation","LinkingManager","exports","openPage","console","log","AndroidStoreUrl","Tool","goAppStoreReview","_GlobalNavigation","navigate","Linking","canOpenURL","then","supported","openURL","error","catch","init","navigation","getInitialURL","undefined","err","addEventListener","event"],"sources":["LinkingManager.ts"],"sourcesContent":["import { NavigationProp, ParamListBase } from '@react-navigation/native';\nimport queryString from 'query-string';\nimport { Linking } from 'react-native';\nimport { Tool, ToolkitConfig } from './Tool';\n\nconst getAppInsideQueryParams = (\n url: string\n): { page: string; params?: object } => {\n // 专门处理 App 内跳转\n // 情况 1:https://norcy.xyz/iread?page=WebPage&url=https%3A%2F%2Fqq.com\n // 情况 2:yiyue://WebPage?url=https%3A%2F%2Fqq.com\n // 情况 3:WebPage?url=https%3A%2F%2Fqq.com\n // 全部都转为 {page:Add, params:{value:'你好', mode:0}}\n const ret = { page: '', params: {} };\n\n const [scheme, query] = url.split('?');\n const params = queryString.parse(query) as { [key: string]: string };\n\n if (scheme.startsWith(ToolkitConfig.AppWebsite) && params.page) {\n // https://norcy.xyz/iread?page=WebPage&url=https%3A%2F%2Fqq.com\n ret.page = params.page;\n delete params.page;\n ret.params = params;\n } else if (scheme.startsWith(ToolkitConfig.AppScheme)) {\n // yiyue://WebPage?url=https%3A%2F%2Fqq.com\n const pageName = scheme.substring(ToolkitConfig.AppScheme.length);\n ret.page = pageName;\n ret.params = params;\n } else if (scheme.startsWith('http')) {\n // 除了第一个 if,http 开头的不处理\n } else {\n // WebPage?url=https%3A%2F%2Fqq.com\n ret.page = scheme;\n ret.params = params;\n }\n return ret;\n};\n\nlet GlobalNavigation: NavigationProp<ParamListBase> | null = null;\n\nexport const LinkingManager = {\n /* 测试用例:\n 1. https://norcy.xyz/iread 安卓打开浏览器官网\n 2. https://www.coolapk.com/apk/com.norcy.iread 安卓跳酷安\n 3. https://apps.apple.com/app/id1589203887 iOS 跳 AppStore\n 4. https://apps.apple.com/app/id1589203887?action=write-review iOS 跳评价\n 5. https://norcy.xyz/iread?page=WebPage&url=https%3A%2F%2Fqq.com App 内跳转\n 6. yiyue://WebPage?url=https%3A%2F%2Fqq.com App 内跳转\n 7. WebPage?url=https%3A%2F%2Fqq.com App 内跳转\n 9. https://qq.com 跳转浏览器\n */\n openPage: (url?: string) => {\n if (!url) {\n return;\n }\n\n console.log('Open URL', url);\n\n // 第一优先级:Android 市场\n if (url.startsWith(ToolkitConfig.AndroidStoreUrl)) {\n Tool.goAppStoreReview();\n return;\n }\n\n // 第二优先级:App 内跳转\n const ret = getAppInsideQueryParams(url);\n if (ret.page) {\n console.log('App 内跳转', ret);\n GlobalNavigation?.navigate(ret.page, ret.params);\n return;\n }\n\n // 第三优先级:外部跳转 AppStore、H5 等\n Linking.canOpenURL(url)\n .then((supported) => {\n if (supported) {\n console.log('外部跳转', url);\n Linking.openURL(url);\n } else {\n console.error('无法跳转', url);\n }\n })\n .catch(() => {\n console.error('无法跳转', url);\n });\n },\n\n init: (navigation: NavigationProp<ParamListBase>) => {\n GlobalNavigation = navigation;\n Linking.getInitialURL()\n .then((url) => {\n // 此处 url 都是官网开头\n LinkingManager.openPage(url ?? undefined);\n })\n .catch((err) => console.error('获取初始URL时出错:', err));\n\n Linking.addEventListener('url', (event) => {\n // 此处 url 都是官网开头\n LinkingManager.openPage(event.url);\n });\n },\n};\n"],"mappings":"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"}
|
|
@@ -32,6 +32,7 @@ const getAppInsideQueryParams = url => {
|
|
|
32
32
|
}
|
|
33
33
|
return ret;
|
|
34
34
|
};
|
|
35
|
+
let GlobalNavigation = null;
|
|
35
36
|
export const LinkingManager = {
|
|
36
37
|
/* 测试用例:
|
|
37
38
|
1. https://norcy.xyz/iread 安卓打开浏览器官网
|
|
@@ -43,7 +44,7 @@ export const LinkingManager = {
|
|
|
43
44
|
7. WebPage?url=https%3A%2F%2Fqq.com App 内跳转
|
|
44
45
|
9. https://qq.com 跳转浏览器
|
|
45
46
|
*/
|
|
46
|
-
openPage:
|
|
47
|
+
openPage: url => {
|
|
47
48
|
if (!url) {
|
|
48
49
|
return;
|
|
49
50
|
}
|
|
@@ -58,8 +59,9 @@ export const LinkingManager = {
|
|
|
58
59
|
// 第二优先级:App 内跳转
|
|
59
60
|
const ret = getAppInsideQueryParams(url);
|
|
60
61
|
if (ret.page) {
|
|
62
|
+
var _GlobalNavigation;
|
|
61
63
|
console.log('App 内跳转', ret);
|
|
62
|
-
|
|
64
|
+
(_GlobalNavigation = GlobalNavigation) === null || _GlobalNavigation === void 0 || _GlobalNavigation.navigate(ret.page, ret.params);
|
|
63
65
|
return;
|
|
64
66
|
}
|
|
65
67
|
|
|
@@ -76,13 +78,14 @@ export const LinkingManager = {
|
|
|
76
78
|
});
|
|
77
79
|
},
|
|
78
80
|
init: navigation => {
|
|
81
|
+
GlobalNavigation = navigation;
|
|
79
82
|
Linking.getInitialURL().then(url => {
|
|
80
83
|
// 此处 url 都是官网开头
|
|
81
|
-
LinkingManager.openPage(
|
|
84
|
+
LinkingManager.openPage(url !== null && url !== void 0 ? url : undefined);
|
|
82
85
|
}).catch(err => console.error('获取初始URL时出错:', err));
|
|
83
86
|
Linking.addEventListener('url', event => {
|
|
84
87
|
// 此处 url 都是官网开头
|
|
85
|
-
LinkingManager.openPage(
|
|
88
|
+
LinkingManager.openPage(event.url);
|
|
86
89
|
});
|
|
87
90
|
}
|
|
88
91
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["queryString","Linking","Tool","ToolkitConfig","getAppInsideQueryParams","url","ret","page","params","scheme","query","split","parse","startsWith","AppWebsite","AppScheme","pageName","substring","length","
|
|
1
|
+
{"version":3,"names":["queryString","Linking","Tool","ToolkitConfig","getAppInsideQueryParams","url","ret","page","params","scheme","query","split","parse","startsWith","AppWebsite","AppScheme","pageName","substring","length","GlobalNavigation","LinkingManager","openPage","console","log","AndroidStoreUrl","goAppStoreReview","_GlobalNavigation","navigate","canOpenURL","then","supported","openURL","error","catch","init","navigation","getInitialURL","undefined","err","addEventListener","event"],"sources":["LinkingManager.ts"],"sourcesContent":["import { NavigationProp, ParamListBase } from '@react-navigation/native';\nimport queryString from 'query-string';\nimport { Linking } from 'react-native';\nimport { Tool, ToolkitConfig } from './Tool';\n\nconst getAppInsideQueryParams = (\n url: string\n): { page: string; params?: object } => {\n // 专门处理 App 内跳转\n // 情况 1:https://norcy.xyz/iread?page=WebPage&url=https%3A%2F%2Fqq.com\n // 情况 2:yiyue://WebPage?url=https%3A%2F%2Fqq.com\n // 情况 3:WebPage?url=https%3A%2F%2Fqq.com\n // 全部都转为 {page:Add, params:{value:'你好', mode:0}}\n const ret = { page: '', params: {} };\n\n const [scheme, query] = url.split('?');\n const params = queryString.parse(query) as { [key: string]: string };\n\n if (scheme.startsWith(ToolkitConfig.AppWebsite) && params.page) {\n // https://norcy.xyz/iread?page=WebPage&url=https%3A%2F%2Fqq.com\n ret.page = params.page;\n delete params.page;\n ret.params = params;\n } else if (scheme.startsWith(ToolkitConfig.AppScheme)) {\n // yiyue://WebPage?url=https%3A%2F%2Fqq.com\n const pageName = scheme.substring(ToolkitConfig.AppScheme.length);\n ret.page = pageName;\n ret.params = params;\n } else if (scheme.startsWith('http')) {\n // 除了第一个 if,http 开头的不处理\n } else {\n // WebPage?url=https%3A%2F%2Fqq.com\n ret.page = scheme;\n ret.params = params;\n }\n return ret;\n};\n\nlet GlobalNavigation: NavigationProp<ParamListBase> | null = null;\n\nexport const LinkingManager = {\n /* 测试用例:\n 1. https://norcy.xyz/iread 安卓打开浏览器官网\n 2. https://www.coolapk.com/apk/com.norcy.iread 安卓跳酷安\n 3. https://apps.apple.com/app/id1589203887 iOS 跳 AppStore\n 4. https://apps.apple.com/app/id1589203887?action=write-review iOS 跳评价\n 5. https://norcy.xyz/iread?page=WebPage&url=https%3A%2F%2Fqq.com App 内跳转\n 6. yiyue://WebPage?url=https%3A%2F%2Fqq.com App 内跳转\n 7. WebPage?url=https%3A%2F%2Fqq.com App 内跳转\n 9. https://qq.com 跳转浏览器\n */\n openPage: (url?: string) => {\n if (!url) {\n return;\n }\n\n console.log('Open URL', url);\n\n // 第一优先级:Android 市场\n if (url.startsWith(ToolkitConfig.AndroidStoreUrl)) {\n Tool.goAppStoreReview();\n return;\n }\n\n // 第二优先级:App 内跳转\n const ret = getAppInsideQueryParams(url);\n if (ret.page) {\n console.log('App 内跳转', ret);\n GlobalNavigation?.navigate(ret.page, ret.params);\n return;\n }\n\n // 第三优先级:外部跳转 AppStore、H5 等\n Linking.canOpenURL(url)\n .then((supported) => {\n if (supported) {\n console.log('外部跳转', url);\n Linking.openURL(url);\n } else {\n console.error('无法跳转', url);\n }\n })\n .catch(() => {\n console.error('无法跳转', url);\n });\n },\n\n init: (navigation: NavigationProp<ParamListBase>) => {\n GlobalNavigation = navigation;\n Linking.getInitialURL()\n .then((url) => {\n // 此处 url 都是官网开头\n LinkingManager.openPage(url ?? undefined);\n })\n .catch((err) => console.error('获取初始URL时出错:', err));\n\n Linking.addEventListener('url', (event) => {\n // 此处 url 都是官网开头\n LinkingManager.openPage(event.url);\n });\n },\n};\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NavigationProp, ParamListBase } from '@react-navigation/native';
|
|
2
2
|
export declare const LinkingManager: {
|
|
3
|
-
openPage: (
|
|
3
|
+
openPage: (url?: string) => void;
|
|
4
4
|
init: (navigation: NavigationProp<ParamListBase>) => void;
|
|
5
5
|
};
|
package/package.json
CHANGED
package/src/LinkingManager.ts
CHANGED
|
@@ -36,6 +36,8 @@ const getAppInsideQueryParams = (
|
|
|
36
36
|
return ret;
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
+
let GlobalNavigation: NavigationProp<ParamListBase> | null = null;
|
|
40
|
+
|
|
39
41
|
export const LinkingManager = {
|
|
40
42
|
/* 测试用例:
|
|
41
43
|
1. https://norcy.xyz/iread 安卓打开浏览器官网
|
|
@@ -47,7 +49,7 @@ export const LinkingManager = {
|
|
|
47
49
|
7. WebPage?url=https%3A%2F%2Fqq.com App 内跳转
|
|
48
50
|
9. https://qq.com 跳转浏览器
|
|
49
51
|
*/
|
|
50
|
-
openPage: (
|
|
52
|
+
openPage: (url?: string) => {
|
|
51
53
|
if (!url) {
|
|
52
54
|
return;
|
|
53
55
|
}
|
|
@@ -64,7 +66,7 @@ export const LinkingManager = {
|
|
|
64
66
|
const ret = getAppInsideQueryParams(url);
|
|
65
67
|
if (ret.page) {
|
|
66
68
|
console.log('App 内跳转', ret);
|
|
67
|
-
|
|
69
|
+
GlobalNavigation?.navigate(ret.page, ret.params);
|
|
68
70
|
return;
|
|
69
71
|
}
|
|
70
72
|
|
|
@@ -84,16 +86,17 @@ export const LinkingManager = {
|
|
|
84
86
|
},
|
|
85
87
|
|
|
86
88
|
init: (navigation: NavigationProp<ParamListBase>) => {
|
|
89
|
+
GlobalNavigation = navigation;
|
|
87
90
|
Linking.getInitialURL()
|
|
88
91
|
.then((url) => {
|
|
89
92
|
// 此处 url 都是官网开头
|
|
90
|
-
LinkingManager.openPage(
|
|
93
|
+
LinkingManager.openPage(url ?? undefined);
|
|
91
94
|
})
|
|
92
95
|
.catch((err) => console.error('获取初始URL时出错:', err));
|
|
93
96
|
|
|
94
97
|
Linking.addEventListener('url', (event) => {
|
|
95
98
|
// 此处 url 都是官网开头
|
|
96
|
-
LinkingManager.openPage(
|
|
99
|
+
LinkingManager.openPage(event.url);
|
|
97
100
|
});
|
|
98
101
|
},
|
|
99
102
|
};
|