忍者ブログ
[111] [110] [109] [108] [107] [106] [105] [104] [103] [102] [101
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


久々にアプリ開発に関する記事を書こうと思う。
内容的にはいつもと同じで検索すれば出てくる内容だが、自分なりにまとめるためにも書いておく。

機能としては、先日リリースしたアプリに入れた機能で、SNSへの投稿を直接行う機能。
思ったよりも簡単だった。
ちなみに、未だにObjective-Cを使用している。

まずは、「Social.framework 」を追加する。
その後、利用するファイルのヘッダに下記のインポートを追加する。

#import <Social/Social.h>

さらに、ソース部分の実際の投稿処理を追加する。
この時に、Facebookとtwitterの両方に対応を行うようにしたため、その判断も一緒に入れた。

    NSString *serviceType;

    if (type == POSTING_FACEBOOK) {
        serviceType = SLServiceTypeFacebook;
    }else{
        serviceType = SLServiceTypeTwitter;
    }

    if ([SLComposeViewController isAvailableForServiceType:serviceType]) {
        SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:serviceType];
        
        [controller setCompletionHandler:^(SLComposeViewControllerResult result) {
            if (result == SLComposeViewControllerResultDone) {
                // 投稿画面が閉じるのを待ってから、アラート表示を行う
                [NSThread sleepForTimeInterval:0.5];
                
                dispatch_async(dispatch_get_main_queue(), ^{
                    //投稿成功時の処理
                    NSString *message;
                    if (type == POSTING_FACEBOOK) {
                        message = @"facebookに投稿しました";
                    }else{
                        message = @"twitterに投稿しました";
                    }
                    id alertView = [ScreenStatusChk uialertViewInit:@""
                                                      massageString:message
                                                       cancelString:@"OK"
                                                         controller:nil];
                    [ScreenStatusChk uialertViewOpen:alertView controller:self];
                });
            }
        }];
        
        //保存する画像を取得
        [self getImageData:&image];
        NSString *string = [NSString stringWithFormat:@"追加イメージ"];
        [controller setInitialText:string];
        [controller addImage:image];
        
        [self presentViewController:controller
                           animated:NO
                         completion:NULL];
    }

実際には、 投稿ボタンを押した時に動作するようにし、「type」に、Facebookとtwitterの種別が入力されるようにしてある。

これだけで、動作上は問題なく投稿する事ができる。

ただし、これだけだと、ネットワークに繋がっていなくても投稿できたように見える。
そのため、さらにネットワークが使えるのかの確認を行うようにする。
そのために、「Reachability」という公式のライブラリを使用した。

まずは下記のサンプルをダウンロードする。

Reachability – iOS Developer Library

この中に入っている、下記の2ファイルを利用したいプロジェクトにコピーする。
・Reachability.h
・Reachability.m
さらに、「SystemConfiguration.framework 」を追加する。

先ほどと同じように、利用するファイルのヘッダに下記のインポートを追加する。

#import "Reachability.h"
そして、先ほどのソースの前に、下記のソースを追加して、投稿処理の前に、それぞれのサーバーとの接続状態のチェックを行う。
当然、接続できない場合には、投稿処理を行わずに、エラーメッセージを表示して、終了させた。
    if (type == POSTING_FACEBOOK) {
        reachability = [Reachability reachabilityWithHostName:@"www.facebook.com"];
    }else{
        reachability = [Reachability reachabilityWithHostName:@"twitter.com"];
    }
    
    NetworkStatus status = [reachability currentReachabilityStatus];
    if (status == ReachableViaWiFi) {
        // wifi接続時
    } else if (status == ReachableViaWWAN) {
        // 3G接続時
    } else if (status == NotReachable) {
        // 接続不可
        id alertView = [ScreenStatusChk uialertViewInit:@"接続エラー"
                                          massageString:@"電波状況の良いところでやり直してください"
                                           cancelString:@"OK"
                                             controller:nil];
        [ScreenStatusChk uialertViewOpen:alertView controller:self];
        
        return;
    }

これだけの処理の追加で、投稿処理自体はどうさした。

予想以上に簡単にできたので、あると便利と思ったアプリに同じものをコピーして入れていった。

拍手[0回]

PR

この記事にコメントする
name
title
color
mail
URL
comment
pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
secret (チェックを入れると管理人だけに表示できます)
Best Apps for Android Mobile Phone
I assume this is amongst the so substantially critical data for me.And i’m satisfied researching your report. Thanks in aid of sharing these kinds of a pleasant believed, piece of writing is wonderful, thats why i have browse it completely,if you want to find more best android apps and download android apps for free ,please click on in this article.
Best Apps for Android Mobile Phone| URL| 2017/11/20(Mon)20:49:48| 編集

リリース済みアプリ

Silmuvide


PseudoRPT


うつすと!


ChronologyMaker


LASI


3行日記


単位計算機


Marking Map Plus


交通費管理


交通費計算リスト


Markin Map


SheepSleepSheep


RootCalculator


元号変換


PieChart


MeasureShooting


SimpleMapCreator



Applivのレビュー記事
http://app-liv.jp/713163900/

ゆびてんじ


PR



Copyright ©   marble seijin の開発日記   All Rights Reserved
Design by MMIT simple_plain Powered by NINJA TOOLS
忍者ブログ [PR]