äŒæ¥ã¢ããªã±ãŒã·ã§ã³ã®ãããã¯ã¯ãæ°å¹Žã«ããã£ãŠäŒè°ãèšäºã§æŽ»çºã«è°è«ãããŠããŸããã 誰ãããèèã®æšœããæããŸãã家ããªãã£ã¹ããããã«ããã€ã§ãæå ã«...äžè¬çã«ãããžãã¹äžã®åé¡ãè¿ éã«è§£æ±ºããããã®ææã§äŸ¿å©ãªããŒã«ã§ãã
ãããããè»èã§é£ã¶ããšããããšã§æ¢ããŸãããã ç§æçãªåçã¯ãåŸæ¥å¡éã§ã¢ããªã±ãŒã·ã§ã³ãé åžããã³æŽæ°ããåé¡ã«ãã£ãŠæãªãããå¯èœæ§ããããŸãã çµéšã«ããã°ããšã³ã¿ãŒãã©ã€ãºã¢ããªã±ãŒã·ã§ã³ã®äœæã ãã§ã¯äžååã§ãã ãŸããã¿ãŒã²ãããªãŒãã£ãšã³ã¹ã«é ä¿¡ãã䟿å©ãªæ¹æ³ãèŠã€ããŠãæŽæ°ããå¿ èŠããããŸãã
EastancTechnologiesã§ã¯ãå€æ°ã®äŒæ¥ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãäœæããŠããŸããããã€ã³ã¹ããŒã«ãšæŽæ°ã®åé¡ã¯åžžã«ããããªãããã¯ã§ããã ãã¹ãŠã®ãªãã·ã§ã³ã®äžã§ã1ã€ã¯ãããæè¡çã§èå³æ·±ãããã§ã-ç¬èªã®ã¢ããªã¹ãã¢ã æçš¿ã§ã¯ããšã³ã¿ãŒãã©ã€ãºã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒåãã«Androidçšã¹ãã¢ãå®è£ ããæ¹æ³ã®è©³çŽ°ãå ±æããŸãã
å®éãåé¡ã¯äœã§ããïŒ
åé¡ããããã©ããèããŠã¿ãŸãããã çµå±ã®ãšãããAndroidã«äŒæ¥ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããæ¹æ³ã¯ããã€ããããŸãã
- Google Play
ãããAndroidã¢ããªã±ãŒã·ã§ã³ã®å Žåã¯ãã²ãŒãã«æŸã蟌ãã§ãããã§çµããã§ãã åé¡ãããŸããïŒ ã ãããããã§ã¯ãªãã 第äžã«ããã¹ãŠã®é¡§å®¢ãå ¬å¶åºèã§ã®å éšäœ¿çšã®ããã«ã¢ããªã±ãŒã·ã§ã³ãèŠãããšã¯éããŸããã
第äºã«ãåžžèã§ã¯ãäŒç€Ÿã®åŸæ¥å¡ã§ã¯ãªããŠãŒã¶ãŒã«ãšã£ãŠã¯ãå ¬éã¢ããªã±ãŒã·ã§ã³ããŠãŒã¶ãŒã®éããã°ã«ãŒãã®ã¿ã«çŠç¹ãåãããŠããããšã¯åé¡ã«æãããããããŸããã
Appleã¯ééããªãæ¡æãããŠããã Googleã®ç©äºã¯ããã·ã³ãã«ã§ãå³å¯ãªå¶åŸ¡ã¯ãããŸããã ããããåºæ¬çãªå«çããããŸãã ãã®ãããªã¢ããªã±ãŒã·ã§ã³ã䜿çšããŠã¹ãã¢ãã¹ããŒããããšã¯ãéçºè ã«ãšã£ãŠé©åãªåäœã§ã¯ãããŸããã
3çªç®ã®çç±ããããŸãã äŒæ¥ã«ã¯è€æ°ã®äŒæ¥ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãããå ŽåããããŸãã ãŸããå ¬åŒã¢ããªã±ãŒã·ã§ã³ã¹ãã¢ã§ããããæ¢ãå¿ èŠããªãããã¹ãŠã1ãæã«ããå Žåã«äŸ¿å©ã§ãã
- äŒç€Ÿã®ãŠã§ããµã€ã
OKããµã€ãäžã®ãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ããããããããªã³ã¯ãé 眮ããŸãããã ãããã®ãªã³ã¯ã䜿çšããŠããŠãŒã¶ãŒã¯ãµã€ãããã¢ããªã±ãŒã·ã§ã³ãããŠã³ããŒãã§ããŸãã ã¡ã«ããºã ã¯æ©èœããŠããããã§ãããŒãžã¯çŸããã§ãã ããããã¢ããªã±ãŒã·ã§ã³ãæŽæ°ããå¿ èŠãããããšããŠãŒã¶ãŒã«éç¥ããæ¹æ³ã¯ãããŸããïŒ
ã¯ããã¢ããªã±ãŒã·ã§ã³ã«èªå·±æŽæ°ã¡ã«ããºã ãçµã¿èŸŒãããšãã§ããŸãã èµ·åæã«ãã¢ããªã±ãŒã·ã§ã³ã¯ãµãŒããŒã«ç§»åããæ°ããã¢ã»ã³ããªãã€ã³ã¹ããŒã«ãããŠãããã©ããã確èªããŸãã ãããããªããããã¯èªå·±äº€æã®ããã»ã¹ãéå§ããŸãã ãã®ãããªã¹ããŒã ã¯æ©èœããŸãããããã©ãŒãã³ã¹ãç¶æããã«ã¯å€å€§ãªåŽåãå¿ èŠã§ãã
- MDMãããã€ããŒ
MDMãœãªã¥ãŒã·ã§ã³ã¯ãçŸåšå€ãã®è£œåãåžå Žã«åºåã£ãŠããäŒæ¥ã§ã®ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã®é åžã«æé©ã§ãã ãã¹ãŠãéåžžã«äŸ¿å©ã§ãã ã¹ãã¢ããMDMãšãŒãžã§ã³ããããŠã³ããŒãããã¢ããªã±ãŒã·ã§ã³ã«ãã°ã€ã³ãããšãåŸæ¥å¡ã®ã¹ããŒããã©ã³ãå®è¡ãããŸãã ãµãŒããŒããåŸæ¥å¡ã®é»è©±ãŸã§ãã»ãã¥ãªãã£ããªã·ãŒãèšå®ããããå ¬åŒã¹ãã¢ã®ã¢ããªã±ãŒã·ã§ã³ãæå¹ãŸãã¯ç¡å¹ã«ããããäŒæ¥ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ãããã§ããŸãã ããã¯å€¢ã®ããã«èãããŸã...ãããã倢ã¯é«äŸ¡ã§ãã
ããç¥ãããŠããMDM AirWatchãœãªã¥ãŒã·ã§ã³ã®äŸã§ã¯ãããã€ã¹1å°ãããæé¡4ã6ãã«ã§äŒç€Ÿã泚ãã§ããããšãããããŸãã
åŸæ¥å¡ããšã«æ¯å¹Žå€é¡ãæ¯æãå¿ èŠãããã®ã¯æ¥ããããããšã§ãã ãŸããåŸæ¥å¡ãå€ãå Žåã¯ã©ããªããŸããïŒ ççŽã«èšã£ãŠãããã¯é«äŸ¡ãªåã³ã§ãã
F-ããã€ã
ãœãŒã¹ïŒ https://gitlab.com/fdroid ïŒã§å©çšå¯èœãªF-DroidãããŒãºã«åãããŠèª¿æŽãããªãã·ã§ã³ããããŸãã ãããããã®ãœãªã¥ãŒã·ã§ã³ã¯éãã2ã3瀟ã®ã¢ããªã±ãŒã·ã§ã³ã«äœ¿çšããããšã¯åé·ã®ããã§ãã
- Android for Work
Googleã®ãœãªã¥ãŒã·ã§ã³ã®æ©èœã䜿çšããããšã¯çŽ æŽãããããšã§ãã ãããçŸæç¹ã§ã¯ãããã¯é¡§å®¢äŒæ¥ããçµç¹ã«Android for WorkãµãŒãã¹ãå«ããäŒæ¥ã®ã¢ãã€ã«ã€ã³ãã©ã¹ãã©ã¯ãã£ã管çãããµãŒãã¹ã®ãããã€ããŒãéžæãããããšãèŠæ±ããŠããããšãæå³ããŸãïŒ ãªã³ã¯ ïŒã ã€ãŸããæ¬è³ªçã«ãEMMãœãªã¥ãŒã·ã§ã³ã®ãããã€ããŒã«ãéãæããªããã°ãªããªãããšãåã³ç解ããŸãã
ã芧ã®ãšãããããããã®ã¢ãããŒãã¯ååã§ã¯ãããŸããã§ããã ããã«ãããèããéããã¢ããªã±ãŒã·ã§ã³ã¹ãã¢ãèšèšããã³å®è£
ããŸããã
å®è£
ã®è©³çŽ°ã«ã€ããŠããã«èª¬æããŸãã
ãŸãæåã«
ã¹ãã¢ã䟿å©ã«ããã«ã¯ãå©çšå¯èœãªã¢ããªã±ãŒã·ã§ã³ã®ãªã¹ãã衚瀺ããã ãã§ã¯äžååã§ãã æ°ããããŒãžã§ã³ã®ç¢ºèªãã¢ããªã±ãŒã·ã§ã³ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®ããŠã³ããŒããšã€ã³ã¹ããŒã«ãªã©ãå€ãã®äœ¿ãæ £ãããŠãŒã¶ãŒã¢ã¯ã·ã§ã³ãããã°ã©ã ã«æããå¿ èŠããããŸãã 幞ããªããšã«ãAndroid APIã¯ãã®ãããªæ©èœãå®è£ ããããã®å€ãã®äŸ¿å©ãªããŒã«ãæäŸããŸãã
䜿çšå¯èœãªã¢ããªã±ãŒã·ã§ã³ã®ãªã¹ããååŸãã
ããããæãç°¡åãªéšå:)ããŒã¿ã®åœ¢åŒãšå 容ã«ã€ããŠãµãŒããŒãšäº€æžããå©çšå¯èœãªã¢ããªã±ãŒã·ã§ã³ã«é¢ããæ å ±ã®ãªã¹ããæäŸããããã«åœŒã«æããå¿ èŠããããŸãã 誰ããHTTPS / REST / JSONã倧奜ãã§ãã
ã³ã³ãã³ãã«é¢ããŠã¯ãã¢ããªã±ãŒã·ã§ã³ããšã«ä»¥äžãå ±åããŸãã
- ID AppIdãéãã¡ã€ã³è¡šèšã
- ã¢ããªã±ãŒã·ã§ã³ã®ååã
- versionCodeã ã¢ããªã±ãŒã·ã§ã³ã®ããŒãžã§ã³ãè¡šãæŽæ°ã ãŠãŒã¶ãŒã«ã¯ãã®çªå·ã¯è¡šç€ºãããŸããããã¢ããªã±ãŒã·ã§ã³ã®çŸåšã®ããŒãžã§ã³ãææ°ãã©ããã¯æ確ã«ç€ºãããŸãã
- versionNameã ãŠãŒã¶ãŒã«è¡šç€ºãããã¢ããªã±ãŒã·ã§ã³ã®ããŒãžã§ã³ã ä»»æã®æååã䜿çšã§ããŸãããéåžžã¯ã1.19.144ãã®ããã«ãªããŸã
- ã¢ããªã±ãŒã·ã§ã³ã«é¢ããç°¡åãªæ å ±ã
- ã¢ããªã±ãŒã·ã§ã³ã¢ã€ã³ã³ãžã®ãªã³ã¯ã ã©ãã«ãã¢ã€ã³ã³ã¯ãããŸããã
- ã¢ããªã±ãŒã·ã§ã³é åžããã±ãŒãžãžã®ãªã³ã¯ã ãŠãŒã¶ãŒããã®ã¢ããªã±ãŒã·ã§ã³ã®ã€ã³ã¹ããŒã«/æŽæ°ã決å®ããå ŽåãåŸã§åœ¹ç«ã¡ãŸãã
ãµãŒããŒããã®å¿çäŸïŒ
[ { "id": "etr.appstore", "name": "App Store", "info": " ", "versionName": "1.3", "versionCode": 6, "url": "https://myappstore.ru/appstore/etr.appstore.apk", "icon": "https://myappstore.ru/appstore/appstore/etr.appstore.android.png" }, { "id": "ru.eastbanctech.mobileregistrator", "name": " ", "info": " , ", "versionName": "v1.1.5", "versionCode": 115, "url": "https://myappstore.ru/appstore/appstore/ru.eastbanctech.mobileregistrator.release.apk", "icon": "https://myappstore.ru/appstore/appstore/ru.eastbanctech.mobileregistrator.release.android.png" } ]
ã¹ãã¢èªäœã®ã¢ãã€ã«ã¯ã©ã€ã¢ã³ããã¢ããªã±ãŒã·ã§ã³ã¹ãã¢ã«ãããããèªèº«ãæŽæ°ã§ããããšã«æ³šæããŠãã ãã:)
ãã®åé¡ã解決ããããã«ãRetrofit2 / OkHttpã®äœ¿çšãå®è³ªçã«æšæºã«ãªããŸããã RxJava-ãªãã·ã§ã³ã ã€ã³ã¿ãŒãããããã¢ã€ã³ã³ã衚瀺ããã«ã¯ãFacebookã®Frescoã䜿çšããŸããããã¯ãä»ã®ãããžã§ã¯ãã§æ¢ã«æ£åžžã«äœ¿çšãããŠããããã§ãã ãã«ãœã¯æ©èœæ§ãšäœ¿ããããã®äž¡æ¹ã§ãã¬ã¹ã³ãšç«¶åã§ããŸããã ãšããã§ãç§ãã¡ã¯ãã§ã«Kotlinã䜿çšããŠããã®ã§ãèšäºã®ãã¹ãŠã®äŸããã®äžã«ãããŸãã
ã€ã³ã¹ããŒã«ãããã¢ããªã±ãŒã·ã§ã³ã«é¢ããæ å ±
ã¹ãã¢ã®åã¢ããªã±ãŒã·ã§ã³ã¯ããŠãŒã¶ãŒã«ãã£ãŠæ¢ã«ã€ã³ã¹ããŒã«ãããŠããå ŽåãšãŸã ã€ã³ã¹ããŒã«ãããŠããªãå ŽåããããŸãã ããã«ãã€ã³ã¹ããŒã«ãããåã¢ããªã±ãŒã·ã§ã³ã¯ãçŸåšã®ããŒãžã§ã³ã§ãããããã§ã«å€ããªã£ãŠããå¯èœæ§ããããŸãã ãã¡ãããããã¯ãã¹ãŠãã¹ãã¢ã®ãšã³ããŠãŒã¶ãŒãç¥ãã®ã«åœ¹ç«ã¡ãŸãã 幞ããªããšã«ãAndroid APIã䜿çšãããšãã€ã³ã¹ããŒã«ãããŠãããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã«é¢ããæ å ±ãååŸã§ããŸãããã®ãããç¹å¥ãªæš©éãå¿ èŠãããŸããã
val installedApps = context.packageManager.getInstalledPackages(PackageManager.GET_META_DATA)
ãã®ã³ãã³ãã¯ãã€ã³ã¹ããŒã«ãããã¢ããªã±ãŒã·ã§ã³ã«é¢ããæ
å ±ãPackageInfo圢åŒã§è¿ããŸã ã ããã§ã¯å€ãã®æçšãªããŒã¿ãèŠã€ããããšãã§ããŸããã packageName
ãšversionCode
ã®ã¿ãæçšã§ãã
ã€ã³ã¹ããŒã«æžã¿ã®ãªã¹ããšå©çšå¯èœãªã¢ããªã±ãŒã·ã§ã³ã®ãªã¹ããåãåã£ãããçµæã®ã¢ããªã±ãŒã·ã§ã³ã®ãªã¹ããšãã¹ãŠã®çµåæ å ±ã衚瀺ããå¿ èŠããããŸãã RxJavaã«é¢ããããã€ãã®èšäºã®ãã¥ãŒããªã¢ã«ã®ããã§ããã ;ïŒäœ¿çšããRxJavaïŒ
class RemoteAppModel // class DeviceAppModel // val storeAppsObs: Observable<List<RemoteAppModel>> = appsService.getApps() val localAppsObs: Observable<List<DeviceAppModel>> = deviceService.installedApps() Observable.combineLatest(storeAppsObs, localAppsObs) { onlineAppList, localAppList -> // // onlineAppList.map { onlineApp -> // , val localApp = localAppList.find { it.id == onlineApp.id } AppInfo(onlineApp, localApp) } }
çµæã®ãªã¹ãã¯ãRecyclerViewãªã©ã䜿çšããŠãŠãŒã¶ãŒã«æ¢ã«è¡šç€ºãããŠããŸãã ãŠãŒã¶ãŒã䜿çšã§ããã¢ã¯ã·ã§ã³ã®ãªã¹ãã¯éåžžã«æçœã§ãã
- AppInfoã¢ãã«ã«localAppãå«ãŸããŠããªãå Žåãã¢ããªã±ãŒã·ã§ã³ã¯ãŸã ã€ã³ã¹ããŒã«ãããŠããããããŠã³ããŒã/ã€ã³ã¹ããŒã«ã§ããŸãã
- ã¢ãã«ã«localAppãããå ŽåãããŒã«ã«ã³ããŒã®ããŒãžã§ã³ã³ãŒããšãµãŒããŒäžã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ãæ¯èŒããå¿ èŠããããŸãã æ°ããããŒãžã§ã³ãããå Žåã¯ãå床ããŠã³ããŒã/ã€ã³ã¹ããŒã«ïŒæŽæ°ïŒããŸãã
ã¢ããªã±ãŒã·ã§ã³ã®ã€ã³ã¹ããŒã«
ã¢ããªã±ãŒã·ã§ã³ã®ã€ã³ã¹ããŒã«ã§ã¯ããã¹ãŠãããã»ã©åçŽã§ã¯ãããŸããã ãã®åé¡ã¯ã次ã®2ã€ã®æ¹æ³ã§è§£æ±ºã§ããŸããé åžããããã€ã³ã¹ããŒã«ããããããã°ã©ã ã§èªåã§å®è¡ããããã«ãŠãŒã¶ãŒã«äŸé ŒããŸãã
æåã®ã¢ãããŒãã¯éåžžã«ç°¡åã«å®è£ ãããŸãã
//uri - apk- override fun install(uri: Uri) { val intent = makeInstallerIntent(uri) context.startActivity(intent) } private fun makeInstallerIntent(uri: Uri): Intent { val intent = Intent(Intent.ACTION_VIEW) intent.setDataAndType(uri, "application/vnd.android.package-archive") intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { // Android N Uri, // , val targets = context.packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY) targets.forEach { info -> context.grantUriPermission(info.activityInfo.packageName, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION) } } return intent }
æå³ãéå§ããå¶åŸ¡ãé åžã·ã¹ãã ã®ã€ã³ã¹ããŒã©ãŒã®æã«æž¡ããŸãã
2çªç®ã®ã€ã³ã¹ããŒã«æ¹æ³ã§ã¯ããã«å€ãã®ã³ãŒããå¿
èŠã«ãªããŸãããäž»ãªåé¡ã¯ã³ãŒãã®éã§ã¯ãªããapkãã¡ã€ã«ã®ããã°ã©ã ã€ã³ã¹ããŒã«ã«ã¯ããã°ã©ã ãandroid.permission.INSTALL_PACKAGES
ç¹æš©ãå¿
èŠãšãããšããäºå®ã§ãã
次ã®2ã€ã®å Žåãã¢ããªã±ãŒã·ã§ã³ãã·ã¹ãã ãšèŠãªãããšãã§ããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã¯ããã¡ãŒã ãŠã§ã¢ãšåãããŒã§çœ²åãããŠããŸã
- ã¢ããªã±ãŒã·ã§ã³ã¯ãAndroidã®ããŒãžã§ã³ã«å¿ããŠã/ system / priv-appãŸãã¯/ system / appãã£ã¬ã¯ããªã«ã€ã³ã¹ããŒã«ãããŸãã ã«ãŒãã¢ã¯ã»ã¹ã䜿çšããŠã·ã¹ãã ããŒãã£ã·ã§ã³ã«ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ãããããã¡ãŒã ãŠã§ã¢ãšMODãã€ã³ã¹ããŒã«ããã®ãšåãæ¹æ³ã§ããŒãããŒããŒãšå埩ã¢ãŒãã§ã€ã³ã¹ããŒã«ã§ããŸãã
ãåãã®ãšããããã¹ãŠã®ãŠãŒã¶ãŒã2çªç®ã®æ¹æ³ã§ã¹ãã¢ã®ã€ã³ã¹ããŒã«ã«å¯ŸåŠã§ããããã§ã¯ãããŸããã ãã ããäž¡æ¹ã®ãªãã·ã§ã³ãçµã¿åãããããšã«ç ©ããããããšã¯ãããŸãããå¥ã®ãã©ã°ã€ã³ã¢ããªã±ãŒã·ã§ã³ã§ãœãããŠã§ã¢ã€ã³ã¹ããŒã«ãå®è£ ããŸãã ã¯ã©ã€ã¢ã³ãã¯ãã€ã³ã¹ããŒã«ããããã©ã°ã€ã³ã®å¯çšæ§ã確èªããå©çšå¯èœãªå Žåã¯ã€ã³ã¹ããŒã«ãå§ä»»ã§ããŸãããã以å€ã®å Žåã¯ãéåžžã®æ¹æ³ã§ãã£ã¹ããªãã¥ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããŸãã 2çªç®ã®ãã¹ã«åŸãããšã«ããå Žåãããã€ãã®æçšãªãªãœãŒã¹ããããŸãã
- ã·ã¹ãã ã€ã³ã¹ããŒã©ãŒã®ãœãŒã¹ã³ãŒã
- F-Droidã®ã·ã¹ãã ã€ã³ã¹ããŒã©ãã©ã°ã€ã³
æŽæ°ã確èªãã
圌ãã®æ£ããå¿ã®èª°ãã1æéããšã«åºãéããŠæ°ããããŒãžã§ã³ããã§ãã¯ããããšã¯ãããŸãããé»è©±ã¯ãããç¬ç«ããŠãããŠç®ã«èŠããªãããã«ãŠãŒã¶ãŒã«è¡ãã¹ãã§ãã Androidã«ã¯ãå®æçãªããã¯ã°ã©ãŠã³ãäœæ¥ãè¡ãæ¹æ³ãããã€ãçšæãããŠããŸãã å€ãã®äžè¬çãªæ¹æ³ãåæããŸããã
ã¢ã©ãŒã ãããŒãžã£ãŒ
ããããæã人æ°ã®ããæ¹æ³ã§ãã ãããã¯ãŒã¯äžã§AlarmManagerã䜿çšããããã®ååãªæ瀺ãšã¬ã€ãããããŸãã
é·æïŒ
- ãã¹ãŠã®APIã§åäœããŸã
- ããããªãŒãæ¶èããªãããã«æ§æã§ããŸã
- æéãã€ãã³ããå®æçã«ã¿ã¹ã¯ã¹ã±ãžã¥ãŒã«ãæè»ã«æ§æã§ããŸãã
- éåžžã«äººæ°ïŒèŠã€ããããããã¥ã¡ã³ããšäœ¿çšäŸ
çæïŒ
- åèµ·ååŸã«æ©èœããªããªã
- ããã»ã¹ã亀æãããšåäœããªããªã
- ã¢ããªã±ãŒã·ã§ã³èšå®ãã匷å¶çµäºããŠãªãã«ãããšåäœããªããªã
åèµ·ååŸããããŒããã£ã¹ãBOOT_COMPLETEãèããšãå埩ãè©Šã¿ãããšãã§ããŸãã
SyncAdapterããã³SyncService
ããŒã«ã«ããŒã¿ãšãµãŒããŒäžã®ããŒã¿ãåæããããã«èšèšãããŠããŸãã ããããããšã ãã
é·æïŒ
- ãªã¹ããããçæAlarmManagerããããŸãã
- ã€ã³ã¿ãŒãããã¢ã¯ã»ã¹ãããå Žåã«ã®ã¿éå§ãããŸãïŒãããããã€ãã¹:)ïŒ
çæïŒ
- ããªãã¯ãããæ©èœãããããã«å€ãã®å®åã³ãŒããæžãå¿ èŠããããŸã
- å®æçãªããã¯ã°ã©ãŠã³ãäœæ¥å°çšã«èšèšãããŠãããããæè»ãªããã¯ã°ã©ãŠã³ãäœæ¥ã¹ã±ãžã¥ãŒã«ãèšå®ããããšã¯å°é£ã§ã
Jobcheduler
AlarmManagerãšSyncAdapterã®å©ç¹ãçµã¿åãããçŽ æŽããããã¬ãŒã ã¯ãŒã¯ã å®å®ãå¹ççãã€æè»ã«åäœããŸãã æ¬ ç¹ã1ã€ãããŸãïŒAPI 21+
Firebase JobDispatcher
ããã¯ããŒãJobSchedulerãšèŠãªãããšãã§ããŸãã
é·æïŒ
- ãã¹ãŠã®APIã§å®è¡ãããJobScheduler
çæïŒ
- ããã€ã¹ã«GooglePlayServicesãå¿ èŠã§ã
ã©ã¡ããéžæãããã¯åã ã®åé¡ã§ãã 以åã®ããªãããã®SyncAdapterãšAPI 21+ã®JobSchedulerã®ã¹ããŒã ã«ãã ãããŸãã
ãµãŒããŒ
æåã¯ãFirbase Hostingãããã¯ãšã³ããšããŠäœ¿çšããŠãç¬èªã®ãµãŒããŒãªãã§å®å šã«è¡ãããšãã§ããŸããã ãã¹ãã£ã³ã°ã«ã¯ããã¹ãŠã®ã¡ã¿æ å ±ãå«ããã¹ãŠã®apkãã¡ã€ã«ãã¢ã€ã³ã³ãjsonãã¡ã€ã«ããããŸããã ãã®ãããªã¹ããŒã ã¯ãã°ããã®éã¯æ©èœããŸããããå€ãã®æãããªæ¬ ç¹ããããŸããã誰ãjsonãã¡ã€ã«ãæåã§æžããããªããããééã£ããã®ãæžã蟌ã倧ããªãªã¹ã¯ããããŸãã
ããã§ããã®ããã»ã¹ãèªååããNodeJSã«åºã¥ããŠãµãŒããŒãäœæããããšã«ããŸããã
å€çš®å€æ§ãªnpmã©ã€ãã©ãªã®äžã§ãapkãã¡ã€ã«ããversionCode
ã versionName
ããã«ã¯ã¢ããªã±ãŒã·ã§ã³ã¢ã€ã³ã³ãååŸã§ããéåžžã«äŸ¿å©ãªapp-bundle-infoã¢ãžã¥ãŒã«ãèŠã€ããŸããã
ãã®çµæãã¢ããªã±ãŒã·ã§ã³ã®å ¬éæã®äººçèŠå ãæå°éã«æããããŸãããµãŒããŒã¯ãé åžã®æå¹æ§ãç¬ç«ããŠæ€èšŒãããã¹ãŠã®æè¡æ å ±ãç¬èªã«ååŸããŸãã
ãããã«
äŒç€Ÿã®åŸæ¥å¡ã«ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãæäŸãããšããã¢ã€ãã¢ã¯é©åã§æ£ãããã®ã§ãããåæã«ãã¢ããªã±ãŒã·ã§ã³ã®é ä¿¡ãšé¢é£æ§ã®ãµããŒãã®åé¡ã解決ããå¿ èŠããããŸãã
ãã®èšäºã§ã¯ãåŸæ¥å¡ãäŒæ¥ã¢ããªã±ãŒã·ã§ã³ã®ãªã¹ããæå ã«çœ®ããŠã€ã³ã¹ããŒã«ã§ããã ãã§ãªããããããæŽæ°ããã¡ã«ããºã ãæäŸããæ¹æ³ã«ã€ããŠèª¬æããŠããŸãã
éå§ããã«ã¯ãããã€ã¹ã®èšå®ã§äžæãªãœãŒã¹ããã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããã¹ãã¢ã¢ããªã±ãŒã·ã§ã³ãããŠã³ããŒãããæ©èœãæå¹ã«ããå¿ èŠããããŸãããã®åŸããã¹ãŠãåèªåã¢ãŒãã§å®è¡ãããŸãã ã¢ããªã¹ãã¢èªäœããæ°ããããŒãžã§ã³ãšã¢ããããŒããããŠã³ããŒãã§ããŸãã
ãã®ãœãªã¥ãŒã·ã§ã³ã¯ãCOPEã¹ããŒã ã«éåžžã«é©ããŠããŸãïŒåŸæ¥å¡ã«äŒç€Ÿã®é»è©±ãäžããããäºåã®ã»ããã¢ããæé ãæ¢ã«å®è¡ãããŠããå ŽåïŒã
ç§ãã¡ã«ãšã£ãŠããã®ã¢ãããŒãã¯ç¹å®ã®é¡§å®¢ã«çµã³ä»ããããŠããªããããè¯ããã®ã§ããããŸããã ãœãªã¥ãŒã·ã§ã³ã¯åå©çšã§ããŸãã ã¢ããªã±ãŒã·ã§ã³ãããŠã³ããŒãããããµãŒããŒã®ã¢ãã¬ã¹ããã¢ããªã±ãŒã·ã§ã³ã¹ãã¢å ã®äŒç€Ÿã®ããŽãã眮ãæããã ãã§ååã§ãã
è¯ãäžæ¥ãšäŒæ¥ã®ã¢ããªã±ãŒã·ã§ã³ãã楜ãã¿ãã ããïŒ