Author Archives: makotton

リジェクトでお悩みのお客様へ、日々厳しくなる類似アプリ、テンプレートアプリ、簡易アプリでお困りではないでしょうか。


2017年6月と9月のApp Store審査ガイドライン改定によって、類似アプリ、テンプレートアプリ、簡易アプリに対する審査が一段と厳しくなりました。

目立つのは、4.2 Minimum Functionality 特に、4.2.2 Other than catalogs, apps shouldn’t primarily be marketing materials, advertisements, web clippings, content aggregators, or a collection of links. や 4.2.6 Apps created from a commercialized template or app generation service will be rejected. でのリジェクトが増えております。また、関連して、PLA 1.2 (section 1.2 of the Apple Developer Program License Agreement) でのリジェクトも増えているように感じます。

もちろん、これらの条項(改定毎に条名や枝番号が変わったりしておりますが)で引っかかるケースは以前からありましたが、増え続けるアプリに対する棚卸しやストア自体のクオリティを上げるため、以前より増してApple基準での「つまらないアプリ」や「似たようなアプリ」の排除に力を入れてきているようです。

今現在、通常であれば2日程度の審査待ちと1-2日程度の審査期間で結果が出ますが、上述の条項でリジェクトになった場合はかなり時間を要するようになってきました。端的にお伝えしますと、審査通過難易度が上がっている、ということになりますが、弊社では上述の条項における直近のリジェクト対応での審査通過実績もございます(対応中のものもございますが、いまのところすべて改定後の審査に通過しております)。

「何度も何度もテンプレート的な同じ理由で落とされる」、「こちらの意図が伝わっていないようだ」、「きちんと審査してもらっていない気がする」、「いままでは問題なかったが、アプデ申請でいきなりダメ出しされた」など、もどかしい状況で時間を要しているようでしたら、ぜひ一度、プライムセオリーにお話をお聞かせください。

iOSアプリ申請代行 & iOSアプリ開発コンサルティング
https://submitapp.info/

プライムセオリーは机上の理論で助言する会社とは一線を画するアプリ開発会社です。プライムセオリーが保有する豊富なリジェクト対策/対応ノウハウと高い審査通過率 95.83% (2017/10/24現在))が、お客様の不安とリジェクト問題の解決に導きます。

株式会社プライムセオリー
https://www.primetheory.jp/

どんな小さなことでも、お気軽にお問合わせください。


リジェクト対応、リジェクト対策ならプライムセオリーにお任せください


リジェクト対応やリジェクト対策、アプリ申請代行など、株式会社プライムセオリーではアプリ開発だけでなくアプリ開発まわりの問題解決サービスを独立させたメニューとして提供しております。

iOSアプリ申請代行&申請サポート
https://submitapp.info/

リジェクト対応やリジェクト対策、アプリ申請代行など、これらのサービスをローンチしてから3年以上経過し、これまで多くのお問合せをいただき問題解決のお手伝いをさせていただきました。特にリジェクト対応に関しましてはかなりニッチなサービスということもあり、大変好評いただいております。

リジェクトの様々なケースを目の当りにすることにより、対策手段が豊富に揃いつつあります。その結果、弊社のリジェクト対応における審査通過率がここ一年90%を割ることなく推移しております。机上の理論や行き当たりばったりの対応ではなく、審査を通しやすいノウハウを保有し、自らアプリ開発を行う弊社だからこそ可能なリジェクト対応だと自負しております。

リジェクトでお困りのお客様、株式会社プライムセオリーまで一度御相談いただけると幸いです。

iOSアプリ申請代行&申請サポート
https://submitapp.info/
株式会社プライムセオリー
https://www.primetheory.jp/


Xcode9でワイヤレスデバッグを行う方法


■前提条件

Xcode9とiOS11を載せた端末がワイヤレスデバッグの対象となります。このエントリーでは下記の環境で確認しております。

macOS Sierra (ver 10.12.6)
Xcode 9.0 (9A235)
iOS11.0 (15A372)

■手順

(1) XcodeのメニューからWindows->Devices and Simulatorsを選択

(2) ワイヤレスデバッグ対象のiOS端末をUSBケーブルで接続

(3) 表示された画面のDevicesタブを選択

(4) 左ペインのConnectedに表示されているワイヤレスデバッグ対象のiOS端末を選択

(5) Connect via networkにチェックを入れる

(6) USBケーブルからワイヤレスデバッグ対象のiOS端末を外す


左ペインのワイヤレスデバッグ対象のiOS端末を右側にネットワークアイコンが表示されたのを確認したら端末を外します。これでワイヤレスによる実機でバッグが可能になります。


アプリ開発コンサルティングとして「Google Play 異議申し立て」サポートほかの提供を開始いたしました


株式会社プライムセオリーでは、2017年8月17日より「Google Play 異議申し立て」をはじめとするAndroidアプリまわりのサポートを正式に開始いたしました。

これまで自社他社問わず数多くのアプリ開発に関わり、リジェクトやアプリがBANされるなど様々なケースを目の当たりにしてきました。特にiOSアプリに関しましては「リジェクト対応」および「App Review Board申立て」サービスを提供することで、今日までたくさんの問題解決のお手伝いをさせていただきました。

Androidの場合はiOSと比較してそれほど複雑な手続きではないため需要が少ないと判断し、Androidに関しましては専用プランは設けておりませんでした。

実際にはポリシー違反によってアプリが削除されるケースが比較的多く発生しており、iOSアプリと一緒にAndroidアプリを開発するお客様も多いことから、Google Play Developer登録代行やAndroidアプリ登録代行をはじめとして、Androidアプリの削除、公開停止といった内容でお困りのお客様からの御相談を度々いただき、今日まで対応を重ねておりました。

Androidでもお困りのお客様は一定数存在することをあらためて感じ、このような高まる需要にお応えするべく、この度iOS同様正式かつ明示的にサービスの提供を開始することになりました。

まだ一部のみとなりますが、弊社が代行した異議申し立てによるアプリ復活率100%という高い実績(iOSのリジェクト対応の場合は審査通過率94.44%)、iOS対応とAndroid対応の双璧で、悩めるお客様に対して更なるベネフィットを提供できるものと考えております。

iOSアプリ申請代行 & iOSアプリ開発コンサルティング
https://submitapp.info/

これからも株式会社プライムセオリーをどうぞ宜しくお願いいたします。
https://www.primetheory.jp/


リジェクト対策サービスの提供を開始しました


株式会社プライムセオリーではiOSアプリ開発コンサルティングを展開しています。

iOSアプリ申請代行 & iOSアプリ開発コンサルティング
https://submitapp.info/

その中のメニューの一つ、従来からご好評いただいている「リジェクト対応」に加え、新たに「リジェクト対策」のプランを開始いたしました。前者がリジェクトされた後の対策をサポートする内容に対し、後者は企画/仕様策定中や開発中、審査提出直前にリジェクトの可能性が浮上した場合にリジェクトを回避するための対策を行う内容になります。

ガイドライン抵触の懸念がある、開発中にリジェクトの可能性が浮上してきた、リジェクト回避のためにソースコードに手をいれるべきなのかそのままでも問題ないのかなど、審査提出前にリジェクトの可能性を排除するための対策を行います。App Store Review Guidelinesとアプリの仕様/使用技術などを突き合わせ、審査員にアピールするための文章や補足資料の作成、動画の準備、必要に応じてソースコードの変更などの対策案を提示いたします。

なお、このプランは審査提出までの対応となりますが、万が一リジェクトされた場合の「リジェクト対応」をセットで承ることも可能です(セットの場合は後日リジェクト対応をご用命いただくよりお安くなります)。

株式会社プライムセオリーが保有する豊富なリジェクト対策ノウハウと高い実績(弊社リジェクト対応による審査通過率 92.8% (2017/03/15現在))が問題解決に導きます。

ぜひ、ご相談、ご用命ください。

株式会社プライムセオリー
https://www.primetheory.jp/


iOSアプリ申請代行とApple Developer Program登録代行の対応範囲を拡大しました


株式会社プライムセオリーではiOSアプリ申請代行やApple Developer Program登録代行、商談同行サービスや技術顧問サービスなどの「iOSアプリ開発コンサルティング」サービスを展開しております。

iOSアプリ開発コンサルティング
https://submitapp.info/

従来のiOS申請代行やApple Developer Program登録代行に加え、ご要望の多かったVolume Purchase ProgramによるCustomB2Bアプリの申請代行とApple Developer Enterprise ProgramおよびiOS Developer University Programの登録代行も開始しております。この二つは情報が少なく、苦労する方も多いと思われ、弊社への相談件数も以前から多くありました。

アカウント登録や申請に関しての情報はネットからも収集できますが、信憑性に欠けるものや正しくても情報が古かったり様々なケースがあります。開発と異なり通常は何度も経験することではありませんし、場合によっては最初で最後かもしれないような専門的な作業になります。そこに時間も労力もつぎ込むのは得策ではありません。開発会社であってもアプリ専業でなければ路頭に迷うこともあるでしょう。

専業兼業含めアプリを受託開発している会社はたくさんありますが、この規模でここまで対応できる開発会社はそう多くないと思います。アプリ申請代行やアプリ開発コンサルティングなどアプリ開発の周辺サポートに関してはアプリ開発会社の中でも抜きん出ていると自負しております。

イレギュラーなことが多く発生するのがアプリ申請やデベロッパー登録です。このブログにもヒントはたくさんありますが、そこに書かれていないケースもたくさんありますので、路頭に迷う前にぜひ一度ご相談いただけると幸いです。

株式会社プライムセオリー
https://www.primetheory.jp/


UITextFieldのinputViewにUIPickerViewを設定し、ピッカー以外からの入力を受け付けないようにする方法

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

UITextFieldのinputViewにUIPickerViewを設定した状態でUITextFieldをリードオンリーにするとイベントを受け付けなくなってしまいピッカーが表示されません。テキストフィールドに対してピッカー以外からの入力を受け付けないようしたい場合はUITextFieldDelegateの

optional public func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool

を利用します。

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    return false
}

これで、UITextFieldをリードオンリーにしなくてもタップイベントを認識し、ピッカー以外からの入力を受け付けないようになりました。

キーボードあるいはピッカーからの入力を受け付けるテキストフィールドがある場合は、テキストフィールドにtagを設定し、パラメータのtextFieldのtagを調べて除外しましょう。


[access] This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

[access] This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.

iOS9.xで開発したプロジェクトをiOS10対応にする際、上記のエラーが出ました。フォトライブラリにアクセスしたタイミングでコケました。デバイスやセンシティブな情報にアクセスする際にユーザに確認を求めなければならないという決まりがありましたが、iOS10ではこれらのアクセス方法が変更になっています。

詳しくは、Information Property List Key Reference

今回の場合はフォトライブラリですので、エラーメッセージの指示通り、

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	・・・
	<key>NSPhotoLibraryUsageDescription</key>
	<string>ここで選択した画像をアバターとして使用します</string>
	・・・
</dict>
</plist>

このように、Info.plistにキーと目的を設定すればOKです。ソースコード側の変更は不要です。


Nil is not compatible with expected argument type ‘UnsafePointer

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

Nil is not compatible with expected argument type ‘UnsafePointer

iOS9.x対応プロジェクトファイルをiOS10SDKでビルドした際にエラーになりました。

let path: CGMutablePath = CGMutablePath()
CGPathMoveToPoint(path, nil, 0, self.frame.size.height)
CGPathAddLineToPoint(path, nil, self.frame.size.width, self.frame.size.height)

CGMutablePath API リファレンス
CGMutablePath.xxxxxxxxメソッドを使え、とのことです。上記の例だと、

let path: CGMutablePath = CGMutablePath()
path.move(to: CGPoint(x: 0, y: self.frame.size.height))
path.addLine(to: CGPoint(x: self.frame.size.width, y: self.frame.size.height))

このように書き換えることで対応できました。


CakePHPで通常のPHPを動作させたい場合の設定

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

あたりまえですが、通常に配置したPHPファイルはCakePHPのルーティングに引っかかって意図した動作をしません。いつも忘れるので備忘録。

# vi app/.htaccess

appディレクトリ直下の.htaccessを開き、

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/targetfile
RewriteRule ^.*$ – [L]

上記の内容を、

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase    /
    RewriteCond    %{REQUEST_URI} ^/targetfile
    RewriteRule    ^.*$ - [L]

    RewriteEngine On
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>

このように、もとのRewriteRuleの前に挿入します。これで問題なくアクセス可能になります。なお、targetfileが対象のPHPファイル名ですので、ご自分の環境置き換えてください。