Newer
Older
mobile.raikyakun.app / node / src / utils / index.ts
nutrition 14 hours ago 1 KB 利便性向上
'use client'
export const getMobileOS = () => {
	if (typeof window === "undefined") return "Other"
	const ua = window.navigator.userAgent
	if (/android/i.test(ua)) {
		return "Android"
	}
	else if (/iPad|iPhone|iPod/.test(ua)) {
	  return "iOS"
	}
  
	return "Other"
}

export const getBrowser = (): string => {
	if (typeof window === 'undefined') return 'Other'

	// 1) iOS WebView判定: window.webkit.messageHandlers.getDevicePushToken があれば true
	// 2) Android WebView判定: window.AndroidNative.getDevicePushToken があれば true
	if (
		(
			(window as any).webkit
			&& (window as any).webkit.messageHandlers
			&& (window as any).webkit.messageHandlers.getDevicePushToken
		)
		|| (
			(window as any).AndroidNative
			&& (window as any).AndroidNative.getDevicePushToken
		)
	) {
		return 'WebView'
	}

	const agent = window.navigator.userAgent.toLowerCase()

	if (agent.indexOf('msie') !== -1 || agent.indexOf('trident') !== -1) {
		return 'Internet Explorer'
	} else if (agent.indexOf('edg') !== -1 || agent.indexOf('edge') !== -1) {
		return 'Edge'
	} else if (agent.indexOf('opr') !== -1 || agent.indexOf('opera') !== -1) {
		return 'Opera'
	} else if (agent.indexOf('chrome') !== -1 || agent.indexOf('crios') !== -1) {
		// iOS版Chromeは 'crios' を含む
		return 'Chrome'
	} else if (agent.indexOf('safari') !== -1) {
		return 'Safari'
	} else if (agent.indexOf('firefox') !== -1) {
		return 'FireFox'
	} else {
		return 'Other'
	}
}