[SDK]iPhoneアプリ開発初心者質問箱49[touch][iPad]

1 :名称未設定:2018/10/06(土) 07:35:15.55 ID:lkwqTsEU0.net
iPhone, iPod touch用アプリケーションの開発を始めたばかりの初心者向け質問スレ。

■質問する前に■
1. 質問は日本語もしくはObjective-C/Swiftで
 質問に質問で返されても逆切れしない。それは質問の仕方が悪いってことだってばよ。
2. どういう内容であれレスをもらったら報告とお礼の言葉を忘れずに。
 回答者は自分の時間を使って親切で回答してくれています。
3. 回答者は自分も初心者であった事を忘れずに。
4. マルチポスト(複数のスレに同じ質問を書込むこと)は厳禁!
5. 質問は可能な限り具体的に。
 ただ「エラーが出ます」ではエスパーかスタンド使いでなければ答えられません。
 エラー内容をちゃんと書きましょう。
6. わからない部分のコードをコピペすると手っ取り早いです。
7. このスレは無料プログラミング教室ではありません。
 「○○の仕方を教えてください」という質問はなるべく避けてください。
 「自分で調べたけどわからなかった事」を質問するというスタンスを忘れずに。
8. バグを安易にOSや開発環境のせいにしない。
 自分の知識の無さを棚に上げて人のせいにするなんて百年早い。
9. 質問する前にもう一度よく考えてから質問しよう。
※前スレ
[SDK]iPhoneアプリ開発初心者質問箱48[touch][iPad]
https://egg.5ch.net/test/read.cgi/mac/1484217623/

2 :名称未設定:2018/10/06(土) 09:55:12.63 ID:jjAiQ7XR0

>>1
いちょつ

3 :名称未設定:2018/10/16(火) 23:33:25.84 ID:46ZuYIdd0

最近swiftを勉強し始めた初心者ですが質問です。

func enumerateLines(invoking body: @escaping (String, inout Bool) -> ())

の「invoking body:」にはどんな意味があるんでしょうか?
クロージャについて色々勉強してきたんですが、この部分だけは調べても調べてもよく分かりませんでした。
そもそもこれがクロージャなのかすら未だ定かではないんですが、教えていただけると有り難いです。

4 :名称未設定:2018/10/17(水) 00:35:05.64 ID:z/Kny1MX0

「Swift 引数ラベル」で検索すればいいかも

5 :名称未設定:2018/10/17(水) 14:41:38.93 ID:yElbV+ob0

(String, inout Bool) -> () はこの形式のクロージャを引数とする意味

@escaping は引数のクロージャを関数内で別のクロージャ内に渡すという意味

body は関数内で使用する引数クロージャの引数名

invoking は外から関数を呼ぶ時にbodyじゃなくてinvokingをラベル名に使ってねという意味

6 :名称未設定:2018/10/17(水) 15:43:57.14 ID:kixnPBoj0

>>3
これはクロージャを引数に取るだけでクロージャではない。
@escapingは即時実行ではなく非同期実行するということ。

7 :名称未設定:2018/10/17(水) 16:01:39.05 ID:kixnPBoj0

>>3
これはクロージャを引数に取るだけでクロージャではない。
@escapingは即時実行ではなく非同期実行するということ。

8 :名称未設定:2018/10/17(水) 18:57:07.45 ID:FyFgG5Sf0

大事なところなので二度言いました

9 :名称未設定:2018/10/19(金) 20:19:55.04 ID:woXB72NR0

>>4-8
返信遅れてすみません
ありがとうございました

お陰様で上の関数?メソッド?もクロージャについても大体理解できました
最初は何が何だか分からなかったんですが
簡単なアプリ程度なら作れるようになったので
コツコツ覚えていこうと思います

10 :名称未設定:2018/10/21(日) 00:33:16.49 ID:Ilelvac50

画面をタップしたらステータスバーを消す処理。
このほんの数行の処理を書くのに3時間かかった。
prefersStatusBarHidden プロパティが Read only で困ってた。

// 画面をタップしたら、ツールバーとステータスバーの表示非表示切り替え。
@objc func toggleBar(_ sender: UITapGestureRecognizer) {
bottomBar.isHidden = ! bottomBar.isHidden
self.setNeedsStatusBarAppearanceUpdate()
}

override var prefersStatusBarHidden: Bool {
return bottomBar.isHidden == true
}

11 :名称未設定:2018/10/21(日) 11:57:17.78 ID:6AqkuPpY0

色々調べたんですが結局分からず、質問させて下さい。
tableViewでcellについて、下記のような機能がありますが、

1.左側のネジ式の削除アイコンでの右側のボタン出現
2.右の三本線アイコンでのセルの並び替え
3.右から左へのスワイプで背後に削除などのボタン表示

tableViewのメソッドのoverrideとtableView.isEditingなどで、
それぞれ機能としては実現できたんですが、
2と3の共存だけができませんでした。

2の三本線が出ているときに3の機能が使えなくなるんですが、
2が使える時に3も使えるようにしたいです。
何かやり方はありますでしょうか?

12 :名称未設定:2018/10/21(日) 11:58:28.25 ID:6AqkuPpY0

言語を書き忘れましたが、swift4で実装しています

13 :名称未設定:2018/10/21(日) 21:36:24.75 ID:TPOtjsO20

> 在日の親は、子供を朝鮮幼稚園・朝鮮学校に入れたいっていうのが多いのよ。
> 日本人からすると、なんでだろうって思うけど、日本人の学校では、民族の誇りを持った教育がしてもらえないんだそうだ。
> よく分からないけど、済州島の流刑者の白丁が大阪に密入国して住み着いたじゃ誇りが持てないけど、
> 日本人に強制連行された被害者なら誇りが持てる、とかそういう事かな??
>
> 市原市の能満は昔から市街化調整区域で、新規の建物は造れないことになっている。
> そのため土地が安く、日本の法律を無視した在日が、次々と移り住んできた。
> そこで問題になったのが、朝鮮学校だ。なかなか許可が下りず、一番近くても千葉市にしかない。
> そこで在日居住区の能満内にあった、能満幼稚園・市原小・市原中・緑高の保育士や教師を、朝鮮化する事を考えた。
> 今では在日幼稚園の保育士は全て朝鮮帰化人で、在日の父兄からの絶大な支持を受けている。
> 遠くからでも、わざわざ在日幼稚園に入園させたいという在日の親は、後を絶たない。
> この在日幼稚園卒園者はほぼ朝鮮系の帰化人と在日だ。

14 :名称未設定:2018/11/08(木) 21:03:56.69 ID:AazV21fQ0

FCMのサイレント通知って、
アプリが停止している状態のときにはどうやって通知を受け取ればいいのでしょうか?

フォアグラウンド起動中/バックグラウンド状態なら
application(:didReceiveRemoteNotification:fetchCompletionHandler)で処理できたけれど、
アプリを上スワイプで強制終了させたあとは通知が受け取れません。
それともサイレント通知はアプリが起動してないと受け取れないものなのでしょうか?

15 :名称未設定:2018/11/11(日) 07:11:09.96 ID:dE9S2MRR0

ユーザーが明示的に終了した場合は、どんな通知も受け取れなかったはず。
サスペンドから勝手にOSが終了した場合は、起こしてくれるはず

16 :名称未設定:2018/11/12(月) 21:34:59.62 ID:IKYJz4GP0

iOSのSafariでの閲覧者に「webdings」フォントを表示させる方法はありますでしょうか?
サイトのことなんですがここの方が一番詳しいのではないかと思いまして
該当スレがありましたらすみません

17 :名称未設定:2018/11/14(水) 08:27:05.18 ID:yg0+Ku600

>>16
オープンソースのNoto Sans Symbols2がUnicode7.0で標準化されたWebdingsを収録してるからウェブフォント化して使えばいいんじゃない
https://www.google.com/get/noto/#sans-sym2

Microsoft製の元祖Webdingsは一応PagesとかアプリからダウンロードできるフォントとしてiOSでもサポートされてはいるようだけれど、Safariからダウンロードさせるのは無理なのでは
元祖Webdingsを勝手にウェブフォント化するのもライセンス的にアウトでしょうし

18 :名称未設定:2018/11/14(水) 21:22:59.98 ID:oBQuY47P0

>>17
ありがとうございます!
noto sans是非使います、助かりました

むしろ元祖をウェブフォント化するしかないのか?とか思っていてライセンス的に理解していなかったので、勉強になりました
ありがとうございました!

19 :名称未設定:2018/12/03(月) 08:49:51.14 ID:53i8CjXO0

App Store Connectにアプリ内課金を登録するのって手動でかなり面倒なんだけど
fastlaneみたいにコードで登録出来る方法誰か知らない?いや教えてください

20 :名称未設定:2018/12/13(木) 23:11:40.13 ID:03sFNSlY0

objective-cでwkwebviewで表示されたテキストを変数に代入したいんですが可能でしょうか?
htmlソースではなくて、見たままのテキストのみです。

21 :0020:2018/12/16(日) 00:56:35.23 ID:8S4jf9r/0

自己解決致しました。

22 :名称未設定:2019/01/09(水) 06:33:38.45 ID:0x8/b35A0

アマゾンの公式アプリのようなこなれた本格的なアプリを個人で作るって無謀でしょうか?
1年以上かかってもいいのですが
プログラミング自体初心者です

24 :名称未設定:2019/01/09(水) 10:19:46.27 ID:w3Th3uuK0

やる前から質問するやつは無理だな
出来るやつはまず行動する

25 :名称未設定:2019/01/09(水) 12:07:30.78 ID:TQKdTBFZ0

横浜のプログラマが仮想通貨発掘プログラムをサイトに設置し、ユーザーの許可なく電力を消費させた。
これが不正指令電磁的記録取得・保管の罪にあたり罰金10万円の略式命令を受けた。

https://www.google.co.jp/amp/s/amp.bengo4.com/topics/9045/

これ iOS アプリ開発者もユーザーの許可なく電力を消費させているのだから、不正指令電磁的記録取得の罪を拡大解釈して適用すべき。
とりあえずiOSプログラマを 100人ほど刑務所にぶち込もう!

26 :名称未設定:2019/01/09(水) 13:39:35.38 ID:1QKPfvNx0

滑ってるなぁ

27 :名称未設定:2019/01/09(水) 22:30:44.75 ID:Z53gevWD0

アプリ開発に挫折した無能がなんか言ってるな

28 :名称未設定:2019/01/21(月) 22:30:46.97 ID:IiNJ1NW10

保守

30 :名称未設定:2019/01/22(火) 17:07:23.85 ID:AnUQ+B4a0

DAT落ちは防げる
まあこの板で20超えなら保守いらんけど

31 :名称未設定:2019/02/02(土) 08:34:36.62 ID:vOZBfADN0

有料版としてリリースしたの無料版を別にリリースしようとしたらリジェクトされてアプリ名や値段設定の変更なんかの解答が来ました。
同じようなソフトを二つリリースするなと言ってるのかと思って
有料版を無料版に変更するために無料版のプロジェクトの名前とバンドルIDを有料版に変えてアップしたら
リジェクトされた無料版の方のビルドリストに載って、有料版の申請の方には反映されてなかった。

別のプロジェクトは別のプロジェクトの申請用にビルドやアップロードできないんですか?
バージョンアップするときは、古いプログラムはファイルをDuplicateして保存しておくんですか?

32 :名称未設定:2019/02/02(土) 10:11:13.13 ID:iQOz/18F0

それ、バンドルIDを変えたつもりで、変わってない。よく確認してみたら?

33 :名称未設定:2019/02/03(日) 16:54:48.37 ID:pKSLEBIH0

昔作ってたアプリを思い出して作り始めたらマイクの許可を聞いてくるようになりました。
audioPlayer.prepareToPlayを実行するところで呼び出すようです。
SK audioNodeで試しても似たようなことがおきます。

マイクは使わないので、許可を取る表示を出さないで済むにはどうしたら良いですか?

SpriteKitの参考書は古いのばかりで対応してくググってもイマイチヒットしません。
お願いします。

34 :名称未設定:2019/02/03(日) 17:56:14.78 ID:UzGffY4M0

彼氏が iOSアプリ開発者でした

死にたいくらい恥ずかしくて惨めなデートでした

街を歩いていても、iPhone ばかり目で追ってるし

携帯電話を使ってお金をだまし取ってるという点ではオレオレ詐欺師と同じだと思います。

私を見て「うーん、引き出し役かな」て何だよって感じでした

あたし何かおかしいこと言ってますか?
普通の感覚ですよね?

35 :名称未設定:2019/02/03(日) 18:06:10.52 ID:pKSLEBIH0

>>33
自己レスだけど、実機で試したら何も出なかった。
シミュレータだけなのかな?

36 :名称未設定:2019/02/03(日) 18:15:21.46 ID:dlE8LhD20

それはiOSじゃなくmacOSが許可を聞いてるんじゃないの?

38 :名称未設定:2019/03/27(水) 13:27:10.27 ID:TJwi2w2e0

App内課金のプロダクト情報取得(SKProductsRequest)で、
価格が「JPY」ではなく「USD」になるのは何が原因なんでしょうか?

たとえば、App Store Connectで価格を「JPY480(価格帯4)」に
設定すると、デリゲートで取得した価格は「3.99」となります。

以下、ロケールに関する情報です。
App Store ConnectのマイAppの設定
・App情報:プライマリ言語:日本語
・App内課金の設定:ローカリゼーション:日本語のみ

開発中App(*1)のinfo.plist:
・CFBundleDevelopmentRegion:Japanese
・CFBundleLocalizations:(設定なし)

(*1) 開発中Appの販売地域は日本のストアのみです。

ちなみに価格以外の
・localizedTitle
・localizedDescription
は問題なく正常に取得できています。

40 :名称未設定:2019/04/21(日) 13:49:09.28 ID:StYg3BhH0

>>38
これでもあかんか?
extension SKProduct {
var localizedPrice: String {
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.locale = priceLocale
return formatter.string(from: price)!
}
}

41 :38:2019/04/21(日) 15:10:54.69 ID:f4Fhqtsd0

>>40

レスありがとう。
今は(とりあえず)解決しています。

ちなみに、取得した price の値が 3.99 なので、App側(のソースコード)の
問題ではないと考えています。
App Store Connectの設定なのか、App側のロケール系の設定なのかは
わかりませんが、たぶん単純に設定の問題じゃないかと。。。

で、どうやって解決したかというと、単純に購入処理を走らせると治りました。
つまり、初回は USD でエラーになるのですが、2回目以降は JPY になりました。

そのときのスクショを残していたのですが、App Store.app によって
以下のアラートが表示されました。
 |『この Apple ID は日本の App Store でのみご利
 | 用になれます。有効な Store へ移動します。』
 |                   [ OK ]

38 には書き忘れていましたが、Sandbox用のテスターアカウントも日本のStoreのみ
に設定していたため、このアラートが表示されて、2回目以降は正常になりました。

43 :名称未設定:2019/04/23(火) 03:41:20.15 ID:0rIEdLT10

始めたばかりでなんでCellBasedなの?どうだっけと確認するのもめんどうだと思うよ

44 :名称未設定:2019/04/23(火) 07:13:55.53 ID:DAe/Z+ny0

>>43

元がCellBasedなものを手直ししているからです

ぐぐってもツールチップのやり方自体が少なくて
一応ViewBasedのやつも探したけどそれもやっと
一つだけ見つかった感じでした

45 :名称未設定:2019/07/01(月) 22:03:20.61 ID:R/P9vcmj0

プログラミング初心者がSwiftでiOS用アプリを作りたいのですが、どんな環境がおすすめですか?
今はWindowsマシンしかもってません
新型のMacBook Pro買ったほうがいいですか?

47 :名称未設定:2019/07/23(火) 11:44:50.62 ID:DyCXu+PQ0

アプリ内ブラウザで表示されたサイトのurlを抜き出して、その他のブラウザで直接表示したいのですが不可能ですかね?
具体的にはdmmパチタウンっていうアプリ内ブラウザで表示されるパチンコのデータのulrを抜き出したいです

48 :名称未設定:2019/07/23(火) 14:18:29.56 ID:+Wq2ggCz0

デバイスの通信ログぶっこぬけば?

49 :名称未設定:2019/07/28(日) 23:28:00.90 ID:X5wamH1j0

>>47
質問投げっぱなしとかひでーな

51 :名称未設定:2019/07/29(月) 22:48:02.44 ID:roUW6K7t0

星に願うのです

52 :名称未設定:2019/07/29(月) 22:52:17.28 ID:C/S3FCgR0

>>50
48で回答きてるだろ。無視すんな

53 :50:2019/07/30(火) 03:29:44.82 ID:0+Nm7Bg+0

>>52

>>47
とは、別人で、別の質問です。
静的な情報の取得とクリックというイベントの検知は、
違うでしょう。

57 :55:2019/07/31(水) 20:01:36.63 ID:mZii5s/l0

>>56
レスありがとうございます。
ポーリング的というのは、
一定時間間隔でNSHostのIPアドレスを取得するってことですか?

56 :名称未設定:2019/07/31(水) 18:35:43.96 ID:MjAoFvNm0

目的による。なにしたいの?
簡単にもしくは普通それで問題ないポーリング的にでいいんじゃないの

55 :名称未設定:2019/07/31(水) 15:11:55.05 ID:mZii5s/l0

iPhoneのIPアドレスは、
接続されるネットワーク(キャリア網、各種WiFi)が変わる毎に変わりますが、
IPアドレスが変更されたタイミングで、IPアドレス変更をアプリが知るには、
どうすれば良いのでしょうか?

58 :名称未設定:2019/07/31(水) 20:10:27.94 ID:tWBqUnt20

世論調査だろJK

60 :57:2019/08/01(木) 07:44:24.23 ID:ZDDq+oGj0

>>59
ありがとうございます。

62 :名称未設定:2019/10/06(日) 02:12:28.50 ID:HpBV/0CC0

HTTPリクエストするAPIを使ってのネイティブアプリをふつうに作る
言うようなのってブラウザでアクセスするWebでできるよね?アプリっぽい側を作りたいだけという

63 :名称未設定:2019/10/06(日) 02:19:24.67 ID:HpBV/0CC0

IRKitってHTTPの部分をやってくれるネイティブフレームワークが用意されてるやん
本当にWebアプリだけど側だけアプリなのか

64 :61:2019/10/06(日) 03:26:50.23 ID:CX/ReIN40

IRKitで提供されているアプリだとボタンが少ないのと、クラウド経由なので遅延がけっこうあって、、、

ネイティブアプリは全くやったことないのでよく分かってないかもですが、、、
今はLAN内に置いてあるWebサーバーにリモコンの画像を貼り付けたHTMLページを用意して、
ブラウザでそれを開いてIRKitにHTTPリクエストを送っています
このHTML+Javascriptの部分をiPadのローカルに置いておいて、アイコンタップしたらすぐにリモコン画面を
出せるようにならないかと考えている次第です
そうするとサーバー落ちてても使えるので
ネイティブアプリをガッツリ作る自信はないのですが、HTMLとJavascriptだけなら何とかならないかなと
自宅専用のオレオレアプリになるので、かえって運用面倒になりますかね…?

65 :名称未設定:2019/10/06(日) 04:46:57.12 ID:zov9bfh/0

普通にボタン押したらhttpリクエスト投げるアプリではあかんのか?
リクエスト用意して投げるだけなら、サンプルコピペでいけるのでは

66 :名称未設定:2019/10/06(日) 06:33:54.35 ID:HpBV/0CC0

>>64
>IRKitで提供されているアプリだとボタンが少ないのと〜
既存のなんかのアプリね?クラウド経由とか作りがわからんな。IRKit SDKフレームワークを使うとそうなるわけではなさげ

自分用なのか
言うようなのは、そのハイブリッドアプリとやらでやってるWebViewでやらせるだね。単にWebView一つ置いただけで、WebViewにアプリ内部に置いたコンテツをロードさせるだけでとりあえずいいんじゃね、ネイティグ側は
自分用なんだったら、付き合ってもいいよできるまで

(しかし、ハイブリッドアプリなんて大層な名前だな、しょせん側だけアプリやん、ちょっとはOSの機能をWebアプリ側から使えるだけの。自由度とかイミフなことのたまってるし)

67 :名称未設定:2019/10/06(日) 07:04:08.27 ID:HpBV/0CC0

>クラウド経由とか作りがわからんな。IRKit SDKフレームワークを使うとそうなるわけではなさげ
ああ、
https://qiita.com/kazunori279/items/e3485f00fbe0ad85cce2#赤外線信号を読みとる
IRKitのAPIサーバー(api.getirkit.com)経由でIRKit(デバイス)の機能をいろいろ呼び出せる
のことか。これがデフォでIRKit SDKフレームワークもこれしかで、api.getirkit.comという間接でなくてもデバイスと直接HTTPでやればできるからとかか

68 :61:2019/10/06(日) 14:18:14.23 ID:CX/ReIN40

>>66
なるほど、WebViewひとつ置いてあるアプリを作る、ですね
今はXcodeの環境なんかも手元に無くて、なかなか大変そうです

>>67
その通りです
ちなみに、自分のように自分専用のアプリを作って使いたい場合も、
Developer Programのライセンス等必要になるのでしょうか?
あと、これはだいぶ以前の話ですが、野良アプリはある程度経つと期限切れになって使えなくなったりなど
いろいろ制限があったような気がしますが、今もそうなのでしょうか?

69 :名称未設定:2019/10/06(日) 16:42:06.66 ID:mbrfxKFk0

>>68
Developer Programが無くても、アプリを作って実機で動かせる
Developer Programが無いと、有効期限は1週間
App Storeに無いと、有効期限は1年
App Storeにあっても、Developer Program更新しないと起動しない
な感じだったと思う

70 :61:2019/10/06(日) 19:58:59.19 ID:5NR56ucT0

>>69
ありがとうございます!
やはりなかなか厳しいんですね

71 :名称未設定:2019/10/15(Tue) 16:38:52 ID:48wIGoVy0

すみません、まだ何も作っていない独学の超初心者ですが、
勉強していて、どうしてもひっかっかったところがあります。
教えていただけないでしょうか。
とあるswift本に
struct Greeting1 {
let to: String
var body: String {
return “Hello, ¥(to)!”
}
・・・
}
のような構文があったのですが、
var body: String部分が良く分かりません。
説明の主題になっていないですので、言及も無いです。
引数も戻り値も無いクロージャーでしょうか?
なぜ、イコールが書かれていないのでしょうか?
var body:String = {
ではないのでしょうか?

78件をまとめました。
最新情報はこちら