CocoaPods をアップデートした件

cocoapods

先日 CocoaPods で pod install したらエラーが出ていたので調べたところ,CocoaPods 0.39 以下を使用しているとエラーになるとのこと

CocoaPods Specs Repo Sharding (公式)
http://blog.cocoapods.org/Sharding/

しょうがないので,CocoaPods をアップデートしました.

CocoaPodsのバージョンアップの方法
http://qiita.com/Yuta/items/a20f4ea3207635b4ef9e

MacOSX El Capitanでcocoapodsインストールが出来ない時の対処法
http://qiita.com/AcaiBowl/items/4bb4708de03e6ee14a4a

UIActivityViewController の使用方法について

先日,LINEで送る機能を実装したのが,UIActivityViewController を使用する際に iOS仕様で悩んだ点があったので,メモしておく.

従来よりアプリに「LINEで送る」機能を実装する場合,line://msg/ といった URLをオープンすることで LINE アプリを起動してメッセージを送信する手法を利用していたのだが,今回は UIActivityViewController を使用してみた.

まず,UIActivityViewController についてよく分からなかったのが,上段/下段がどのようなルールで分けられているのか?という点.

調べてみると iOS としては,Share (Share Extension) / Action (Activity) で分けたいようだ.
(サンプルとしてみた資料に上段,下段ともに Evernote の色つきアイコンと白黒アイコンが並んでいる様子をみて,最初意味が分からなかった.それぞれのアイコンでどこが違うの?)

これは,少し分かりづらい仕様だと思います.
(実際には,下段に表示される Activity でもプロパティー設定により,上段で表示することが可能.)

UIActivityViewController
これらを把握しておけば,簡単に実装できます.

Acitivity を理解したければ,以下のライブラリのコードをざっとみれば確認できます.

以下,調べた事柄をメモしておきます.

▼ iOS アプリから「LINEで送る」には?

LINE 公式
https://media.line.me/ja/

▼ iOS「LINE で送信」を行えるライブラリ

LineActivity
https://github.com/OopsMouse/LINEActivity

LineKit
https://github.com/dlackty/LineKit

▼ UIActivityViewController を使用する方法

上記のライブラリを使用して,UIActivityViewController に LINE のアクティビティを表示するには,以下のようにする.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
NSArray *activities = @[[[LINEActivity alloc] init]];
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:@[shareText]
                                                                         	applicationActivities:activities];
// 使用しないアクティビティタイプ
NSArray *excludedActivityTypes = @[ UIActivityTypePostToWeibo,
                                    UIActivityTypeSaveToCameraRoll,
                                    UIActivityTypePrint,
                                    UIActivityTypeCopyToPasteboard,
                                    UIActivityTypeAirDrop,
                                    UIActivityTypeAssignToContact,
                                    UIActivityTypeAddToReadingList,
				    UIActivityTypeMail,
                                    UIActivityTypeMessage ];
activityVC.excludedActivityTypes = excludedActivityTypes;
[self presentViewController:activityVC animated:YES completion:NULL];

– iOS 7からUIAcitivityが上段と下段に分かれたデザインが採用されている.
+ (UIActivityCategory)activityCategory に以下の値を指定することで表示位置が指定できる.
上段: UIActivityCategoryShare
下段: UIActivityCategoryAction

▼ 注意点

– URLスキームがiOS9から使用方法が変更されている点
・iOS9から従来のopenURLメソッドを実行するだけでは,カスタムURLスキームが使用できなくなっている.

・カスタムURLスキームを使用するには,Info.plist に以下の設定を追加する.
custom_url_scheme は,「://」が必要ないことに注意.

1
2
3
4
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>custom_url_scheme</string>
</array>