iT邦幫忙

0

開發Android apps, 前端用vue(uniapp), 想取使用者ip地址

是這樣的。
我是使用uniapp打包成apk。
要求app自行找到自己ip,及展示開來讓內網的另一台伺服器配對,(伺服器ip也有可能未知的但會固定)。
React native 有一個第三方可以很容易達到效果。但是用慣了uniapp為了一個第三方軟件跑去學react native 有點兒花時間。
所以想問一下有沒有大神知道我可否使用Js 讓Java問自己ip,然後告知回js?
如果可以,我要搜尋的關鍵字眼是什麼?
今天搜了一整天都找不到答案。。。

兩個思路,第一個是寫原生的 Java Class 讓 JS 去呼叫

另外一個思路是用 JS 利用 AJAX 去訪問一些 IP 查詢網站(也可以自己搭建),如果對方 CORS 有開放的話應該很容易
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
koro_michael
iT邦新手 2 級 ‧ 2021-03-06 10:15:11
最佳解答

我幫你做了一個 AAR 的 Plugins

有需要的話說一聲,我再傳給你

用起來大概是這樣

const getIP = uni.requireNativePlugin('Mike-GetIP');
this.ip = getIP.getIPv4();

使用 WIFI
https://ithelp.ithome.com.tw/upload/images/20210306/20135412L4itY8g9dM.jpg

使用 4G
https://ithelp.ithome.com.tw/upload/images/20210306/20135412QR27MGsLXF.jpg

看更多先前的回應...收起先前的回應...
samshum iT邦新手 5 級 ‧ 2021-03-07 00:25:10 檢舉

回應第一個方法: 寫原生的 Java Class 讓 JS 去呼叫
原理方面,說是懂,但細節方面太多東西不懂(第一次寫APP)
上網看過 原理是先用JAVA開放一個端口, js觸發訪問當端口時,java 回應他的IP.
回應第二個方法:
用 JS 利用 AJAX 去訪問一些 IP 查詢網站<<<
這個方法我也想過,但想到最極端例子可能出現客戶無上網功能,只有內網,而且不知道路由器IP及IP網段時,就實現不了.

不明白的點有:
1.java文件,不知道放哪?
2.如何打開app後,觸發運行此java服務?
3.另外非常感謝你的幫忙,十分需要這個AAR.但我也不知道應該放項目的哪里...(等級太低),我先上網搜一搜先.
https://samshum.xyz/owncloud/index.php/s/vBh6HZC2qNGcQ63
你可以在這個位置上載給你的Plugins給我.萬分感謝

丟上去了 "Mike-GetIP.zip"

在專案根目錄創一個資料夾叫 nativeplugins

將壓縮檔的內容解壓縮進去,目錄結構會是這樣子

https://ithelp.ithome.com.tw/upload/images/20210307/20135412XEO9GR29pI.png

之後點開 manifest.json > App原生插件配置 > 選擇本地插件

https://ithelp.ithome.com.tw/upload/images/20210307/20135412SUhg0DSHL6.png

應該可以看到這樣的畫面

PS: 選擇插件要登入官方帳號,我也不知道為什麼

https://ithelp.ithome.com.tw/upload/images/20210307/20135412Hbm5QdQ2eI.png

這樣就可以使用了,使用方法就跟回答中的一樣

const getIP = uni.requireNativePlugin('Mike-GetIP');
this.ip = getIP.getIPv4();

另外依照官方的總總限制,要使用本地插件需要自定義基座才行

然後自定義基座還需要做手機認證

PS: 這個 AAR 只能回傳 IPv4,如果設備是使用 IPv6,會回傳空值

總之如果你想要學怎麼開發 AAR 來使用在 uniapp 上的話,官方有文件教你怎麼做

https://nativesupport.dcloud.net.cn/NativePlugin/course/android

PS: 以下是抱怨

實作上是不難,但最雷的就是他們的開發 SDK 是丟在百度網盤上...

為了下載這個 SDK 我花了幾個小時...

第一眼看到你的提問,查了下 uniapp 是啥東西,了解是基於 Vue 開發出來的框架,想說應該不至於有坑

結果坑最大的是下載他們的 SDK,第二個坑是要手機認證...

總之人如果不在中國,還是盡量少用中國的東西

手機驗證不打緊,網路上很多可以接收簡訊的手機號

實名認證就直接炸掉

samshum iT邦新手 5 級 ‧ 2021-03-08 10:54:07 檢舉

....是呀,百度網盤真的很讓人蛋痛...
但開發起來很爽,跟vue網頁版開發的差不多
一開始以為你都是uniapp的用戶,
真感謝你的熱心幫忙

samshum iT邦新手 5 級 ‧ 2021-03-08 11:22:02 檢舉

開頭我就一直以為只用hbuilder IDE就可以寫出app了...
現在已經中伏,太好用,不能自拔..
缺點是,原生的有點難搞,要用百度網盤等等..
就好像這個get ip

samshum沒事,確認可以用的話給個最佳解答就好

我要發表回答

立即登入回答