万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    Xcodeのリリースでのハマるとこ

    UniversalにしてなかったのでiPadのバイナリで審査で怒られた。

    UniversalでビルドしてArchiveするとこんなエラー。

    f:id:shinriyo:20181002081730p:plain

    文字起こししたもの。

    App Store Connect Operation Error
    ERROR ITMS-90023: "Missing required icon file. The bundle does not contain an app icon for iPad of exactly '76x76' pixels, in .png format for iOS versions >= 7.0."
    App Store Connect Operation Error
    ERROR ITMS-90023: "Missing required icon file. The bundle does not contain an app icon for iPad of exactly '167x167' pixels, in .png format for iOS versions supporting iPad Pro."
    App Store Connect Operation Error
    ERROR ITMS-90023: "Missing required icon file. The bundle does not contain an app icon for iPad of exactly '152x152' pixels, in .png format for iOS versions >= 7.0."
    App Store Connect Operation Error
    ERROR ITMS-90474: "Invalid Bundle. iPad Multitasking support requires these orientations: 'UIInterfaceOrientationPortrait,UIInterfaceOrientationPortraitUpsideDown,UIInterfaceOrientationLandscapeLeft,UIInterfaceOrientationLandscapeRight'. Found 'UIInterfaceOrientationPortrait,UIInterfaceOrientationLandscapeLeft,UIInterfaceOrientationLandscapeRight' in bundle 'jp.shinriyo.kazoemonapp'."

    Qiitaの記事 qiita.com

    アイコンの生成のため

    ここで設定 f:id:shinriyo:20181002081856p:plain

    一括生成はAppIconizerが便利。でも20x20がない・・。 https://appiconizer.com

    ArchiveのUIの見方

    Option + command + Shift + O

    f:id:shinriyo:20181002082038p:plain

    現在のパスの画像の解像度をコマンドで知る

    sips -g pixelWidth -g pixelHeight *.png

    qiita.com

    Multitaskingのだるいエラー対応

    qiita.com

    SwiftのWKWebViewにてJSの利用

    WKWebViewを使う時JSを呼びたい。

    class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {

    そしてviewDidAppearに定義

    override func viewDidAppear(_ animated: Bool){
            print("viewDidAppear")
            
            let screenWidth:CGFloat = view.frame.size.width
            let screenHeight:CGFloat = view.frame.size.height
            
            // iPhone X , X以外は0となる
            if #available(iOS 11.0, *) {
                let window = UIApplication.shared.keyWindow
                topPadding = window!.safeAreaInsets.top
            }
            
            // Webページの大きさを画面に合わせる
            let rect = CGRect(x: 0,
                              y: topPadding,
                              width: screenWidth,
                              height: screenHeight - topPadding)
            
            let webConfiguration = WKWebViewConfiguration()
            webView = WKWebView(frame: rect, configuration: webConfiguration)
    
            let url = "対象のURLを書く"
            let webUrl = URL(string: url)!
            let myRequest = URLRequest(url: webUrl)
            webView.load(myRequest)

    WKNavigationDelegateインターフェイスみたいなを実装。これしないと 以下のことをしてもwebViewメソッドが呼ばれない

    webView.navigationDelegate = self

    こうすると、webViewという名前のメソッドを用意すると以下がURLをロードするたびに勝手に呼んでんでくれる。

        func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
            print("webView didload")
            
            webView.evaluateJavaScript(
                "document.body.innerHTML",
                completionHandler: { (html: Any?, error: Error?) in
                    if let html = html as? String {
                        print(html)
                    }
                }
            )
    

    引数にあるdidFinishだと成功するけど、 didCommitはWebViewで表示される前に取れるっぽくて失敗する。

    Xcode一括Alpha

    Invalid App Store Icon. The App Store Icon in the asset catalog in 'アプリ.app' can't be transparent nor contain an alpha channel."

    のエラーうざい。

    まずImageMagickインストール

    brew install imagemagick
    find ./assets/ -name "*.png" -exec convert "{}" -alpha off "{}" \;

    assetsのフォルダはpngがあるところ。自分の環境に変更