최근에 알았는데 tishadow의 appify build로도 iOS앱을 올려도 약관상 문제가 없네요.

최근에 알았는데 tishadow의 appify build로도 iOS앱을 올려도 약관상 문제가 없네요.

쏘카에서 제로카 앱을 React Native로 만들었다는 포스팅에서도 발견하고,
Tishadow에 @codejong 님이 올리신 PR에 달린 댓글에서도 발견하구요.

자세한 내용은 이렇습니다.
http://info.meteor.com/blog/apple-hot-code-push-mobile

저는 지금도 사실 eval()을 이용해서 버그 발생시 일부 code를 push하고 있긴 합니다.
이참에 아예 tishadow용 배포 서버를 하나 떠서 앱을 appify로 배포할 까 봐요 :wink:

하지만 이게 Apple은 공정이나 형평이란 개념이 없는 놈들이라 문제가 생길 가능성도 있습니다…

code-push에 대해서 이번에 처음 들었는데, 찾아보니 무려… Microsoft에서 만든거군요 :astonished:

마지막으로 드는 생각은 이게 Microsoft가 하는 서비스라 애플도 넘어가는건가 싶기도 하구요…
Codepush for Titanium을 만들어야 하는 고민도 생기네요…

1개의 좋아요

Tishadow 앱이 초기에 거절 당했죠. dbankier가 지금의 code push 같은 서비스도 만들고 했는데 결국엔 접었얶죠

그래서 tishadow나 code-push는 너무 풀스펙이고, 간단하게 만들어 볼까도 생각하고 있어요.
tishadow가 require를 오버라이트 해서 동작하는것처럼,
버전 컨트롤 코드와 조합해서 require 타이밍에 다운 받은 새로운 버전의 js를 읽도록 코드를 만들어 볼까요.

Alloy.createController 를 이용해서 테스트 해봤던 적은 있거든요.

	Alloy.createController = function(name, args) {
		function custom_require(file) {
			try {
				var rfile = Ti.Filesystem.getFile(file);
				var contents = rfile.read().text;

				// replace behavior

				return eval("(function(exports){var __OXP=exports;var module={'exports':exports};" + contents + ";if(module.exports !== __OXP){return module.exports;}return exports;})({})");
			} catch(e) {
				e.file=file;
			}
		}

		var _require = function(extension) {
			try {
				var path = Ti.Filesystem.resourcesDirectory + extension + ".js";
				if (!Ti.Filesystem.getFile(path).exists()) {
					return require(extension);
				}
				if (Alloy.Globals.requireCache[path]) {
					return Alloy.Globals.requireCache[path];
				} else {
					var mod = custom_require(path);
					Alloy.Globals.requireCache[path] = mod;
					return mod;
				}
			} catch(e) {
			}
		};

		return new (_require("alloy/controllers/" + name))(args);
	};
1개의 좋아요

피가되고 살이되는 경험!! 공유 감사합니다.~