2017年8月21日 星期一

[iOS] 取得附近 Wi-Fi SSID 清單

在 stackoverflow 上大部分都是很久以前發問的,大家的回應都是
  1. 只能拿到當前連線 Wi-Fi 資訊
  2. 使用 private API

最後終於找到在 iOS 9 可以使用 NEHotspotHelper,但有一些限制:
  1. iOS 9+ 支援
  2. 需要向 Apple 申請 com.apple.developer.networking.HotspotHelper entitlement 才可使用
  3. 只能被動由系統通知 Wi-Fi 清單,無法主動取得

大概寫一下流程,希望有空的時候可以補齊
前置步驟比較瑣碎
  1. 首先到 https://developer.apple.com/contact/network-extension 填寫申請書
  2. 在開發者網頁中,將 App ID 啟用 Network Extensions
  3. 更新 Provisioning Profiles,並且選擇使用 Network Extension iOS Entilements
  4. XCode 更新 Provisioning Profiles
  5. Info.plist 檔案中在 UIBackgroundModes 加入 network-authentication
  6. entitlements 檔案中加入 com.apple.developer.networking.HotspotHelper 為 YES
程式碼:

NSMutableDictionary *options = [[NSMutableDictionary alloc] init];
[options setObject:@"xxx" forKey:kNEHotspotHelperOptionDisplayName];
dispatch_queue_t queue = dispatch_queue_create("xxx", 0);

BOOL ret = [NEHotspotHelper registerWithOptions:options queue:queue handler:^(NEHotspotHelperCommand *cmd) {
    NEHotspotNetwork *network;
    if (cmd.commandType == kNEHotspotHelperCommandTypeFilterScanList) {
        for (network in cmd.networkList) {
            NSString *wifiInfo = [[NSString alloc] initWithFormat:@"SSID: [%@] MAC: [%@] strength: [%f]", network.SSID, network.BSSID, network.signalStrength];
            NSLog(@"%@", wifiInfo);
        }
    }
}];
NSLog(@"return value %d", ret);

確認 ret 為 True 表示有註冊成功,可到設定 -> Wi-Fi,觸發 Wi-Fi 清單更新後就會印 Log 到 console 上了。

參考資料


2017年3月25日 星期六

2017 信用卡整理

整理一下平常有在使用的信用卡以及相關優惠

元大鑽金一卡通聯名卡 JCB precious 晶緻卡
用途
每日搭台北捷運通勤
日本旅遊使用,JCB 優惠
全聯採購
年費
電子帳單申請期間免年費
優惠
1.2%現金回饋 (活動至 2017/06/30,回饋紅利有效期限 6 個月)
捷運 5% 現金回饋

台新@GoGo icash聯名卡 VISA signature 御璽卡
用途
網路購物
手機 app 購買高鐵票
繳水、電、瓦斯費(* 支付平台繳費回饋 https://www.ptt.cc/bbs/creditcard/M.1461169732.A.D8A.html)
年費
申辦電子帳單免年費
優惠
一般消費 1.5% 現金回饋,數位通路消費 3.5% 現金回饋
(* 綁定 Richart  數位活儲帳戶扣款)

國泰世華 COSTCO 聯名卡 VISA signature 御璽卡
用途
COSTCO 購物
年費
具 COSTCO 會員資格免年費
優惠
台灣 COSTCO 賣場內刷卡消費滿 NT$100 累積 1 元 COSTCO 多利金
(* 每年 8/1~9/30 至全台 COSTCO 實體賣場直接折抵刷卡金)

富邦數位生活卡
用途
自動扣繳中華電信帳單
年費
申請電子帳單免年費
優惠
2% 現金回饋